{"id":189,"date":"2023-10-10T12:36:22","date_gmt":"2023-10-10T10:36:22","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/?page_id=189"},"modified":"2025-02-11T14:45:38","modified_gmt":"2025-02-11T12:45:38","slug":"2-6-operadors","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/2-6-operadors\/","title":{"rendered":"2.6. Operadors"},"content":{"rendered":"<p>A la secci\u00f3 anterior hem vist com moure canals per dirigir les dades entre els processos. Per poder modificar el contingut o el comportament d\u2019un canal, Nexflow ha creat el que es denominen <em>operadors<\/em>. En els<em> scripts<\/em> anteriors hem vist l\u2019operador <em>view<\/em>, per\u00f2 podem trobar operadors de filtratge, combinaci\u00f3 o d\u2019operacions matem\u00e0tiques entre molts altres. En aquesta secci\u00f3 en veurem alguns exemples.<\/p>\n<p>Els operadors es poden introduir mitjan\u00e7ant un <em>pipe<\/em> (|), com hem vist anteriorment, o precedits per un punt. Aix\u00ed:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">workflow{\r\n\r\nordenE(pi,queue_ch) | view( )\r\n\r\n}<\/pre>\n<p>\u00e9s an\u00e0leg a:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">workflow{\r\n\r\nordenE(pi,queue_ch).view( )\r\n\r\n}<\/pre>\n<p>A partir de l\u2019<em>script<\/em> anterior eliminarem el canal <em>valor pi<\/em> i ens quedarem amb un exemple m\u00e9s senzill amb el canal <em>of queue_ch<\/em>. Com veureu a continuaci\u00f3 hi afegim la notaci\u00f3 <em>.view<\/em>, i dins d\u2019aquest operador hi introdu\u00efm un prefix, <em>chr<\/em>, i un valor, <em>$it<\/em>, entre { }. Aquests par\u00e8ntesis defineixen un bloc de codi que va al costat i utilitza la nomenclatura de <em>goovy<\/em> (<em>i<\/em>t, d\u2019<em>\u00edtem<\/em>) per definir els par\u00e0metres.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">nextflow.enable.dsl=2\r\n\r\nqueue_ch = Channel.of( 1, 3, 5, 7 ).view({\"chr$it\"})\r\n\r\n\r\nprocess ordenE {\r\n\r\n\u00a0\u00a0\u00a0 input:\r\n\r\n \u00a0\u00a0\u00a0\u00a0 val x\r\n\r\n\r\n\u00a0\u00a0\u00a0 output:\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 stdout\r\n\r\n\r\n\"\"\"\r\n\r\n\u00a0\u00a0\u00a0 echo $x\r\n\r\n\"\"\"\r\n\r\n}\r\n\r\nworkflow{\r\n\r\nordenE(queue_ch)\r\n\r\n}<\/pre>\n<p>En aquest cas l\u2019<em>output<\/em> es visualitza a la figura 6.<\/p>\n<figure id=\"attachment_88\" aria-describedby=\"caption-attachment-88\" style=\"width: 932px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-88 size-full\" src=\"\/wp-content\/uploads\/sites\/7\/2023\/09\/image011.png\" alt=\"\" width=\"932\" height=\"308\" srcset=\"\/wp-content\/uploads\/sites\/7\/2023\/09\/image011.png 932w, \/wp-content\/uploads\/sites\/7\/2023\/09\/image011-300x99.png 300w, \/wp-content\/uploads\/sites\/7\/2023\/09\/image011-768x254.png 768w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><figcaption id=\"caption-attachment-88\" class=\"wp-caption-text\">Figura 6. Resultat de l\u2019operador <em>view<\/em> amb prefix.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>Podem introduir un filtre al canal per mostrar \u00fanicament els valors superiors a 4:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">queue_ch = Channel.of( 1, 3, 5, 7 ).filter { it &gt; 4 }.view({\"chr$it\"})<\/pre>\n<p>Tamb\u00e9 podem combinar canals utilitzant l\u2019operador <em>mix<\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">ch1 = channel.of( 1..22 )\r\n\r\nch2 = channel.of( 'X','Y' )\r\n\r\nch3 = channel.of( 'MT' )\r\n\r\n\r\nqueue_ch\u00a0 = ch1.mix(ch2,ch3).view({\"chr$it\"})<\/pre>\n<p>i fer operacions com comptar el nombre d\u2019elements:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">queue_ch\u00a0 = ch1.mix(ch2,ch3).count().view()<\/pre>\n<p>Les possibilitats dels operadors proporcionen una versatilitat molt gran de poder manipular les dades que volem analitzar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A la secci\u00f3 anterior hem vist com moure canals per dirigir les dades entre els processos. Per poder modificar el contingut o el comportament d\u2019un canal, Nexflow ha creat el que es denominen operadors. En els scripts anteriors hem vist l\u2019operador view, per\u00f2 podem trobar operadors de filtratge, combinaci\u00f3 o d\u2019operacions matem\u00e0tiques entre molts altres. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/pages\/189"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/comments?post=189"}],"version-history":[{"count":5,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/pages\/189\/revisions"}],"predecessor-version":[{"id":296,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/pages\/189\/revisions\/296"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/media?parent=189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}