{"id":183,"date":"2023-10-10T12:18:26","date_gmt":"2023-10-10T10:18:26","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/?page_id=183"},"modified":"2025-02-11T14:44:06","modified_gmt":"2025-02-11T12:44:06","slug":"2-5-canals-a-nextflow","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/2-5-canals-a-nextflow\/","title":{"rendered":"2.5. Canals a Nextflow"},"content":{"rendered":"<p>Com s\u2019ha comentat anteriorment, els canals dirigeixen el flux d\u2019informaci\u00f3 a trav\u00e9s dels diferents processos. Per crear expl\u00edcitament un canal s\u2019ha d\u2019utilitzar un m\u00e8tode de Channel Factory proporcionat per Nextflow.<\/p>\n<p>A Nextflow hi ha dos tipus de canals:<\/p>\n<ul>\n<li><em>Queue channels<\/em>: s\u00f3n canals asincr\u00f2nics, unidireccionals i FIFO (<em>first-in-first-out<\/em>).<\/li>\n<\/ul>\n<div class=\"featured featured-grey\"><p>Alguns exemples s\u00f3n:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">- of:\r\n\r\n     ch = Channel.of(1, 3, 5, 7)\r\n\r\n\r\n- fromPath:\r\n\r\n     file_ch = Channel.fromPath('test\/*.txt')\r\n\r\n\r\n- fromFilePairs:\r\n\r\n     fastq = Channel.fromFilePairs('\/my\/data\/SRR*_{1,2}.fastq')<\/pre>\n<p>\n<\/div>\n<ul>\n<li><em>Value channels<\/em> (<em>singleton channel<\/em>): s\u00f3n molt similars als <em>queue channels<\/em>, per\u00f2 nom\u00e9s admeten un valor.\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">        value:\r\npi = Channel.value('3.1416')<\/pre>\n<\/li>\n<\/ul>\n<p>Per entendre una mica millor el funcionament dels canals crearem un <em>script<\/em> anomenat <em>orden.nf<\/em> amb un canal <code>value<\/code> i un altre <code>of<\/code> i imprimirem el resultat.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">nextflow.enable.dsl=2 \r\npi = Channel.value(3.1416) \r\nqueue_ch = Channel.of( 1, 3, 5, 7 ) \r\n\r\nprocess ordenE { \r\n    input: \r\n      val x \r\n      val y\r\n    output: \r\n      stdout \r\n\"\"\" \r\n     echo $x $y \r\n\"\"\" \r\n} \r\nworkflow{ \r\nordenE(pi,queue_ch) | view( ) \r\n}<\/pre>\n<p>Com podem observar, a l\u2019apartat <em>workflow<\/em> estem especificant els <em>inputs <\/em>del proc\u00e9s <code>ordenE<\/code>. En el resultat d\u2019aquest<em> script<\/em> (figura 5), l\u2019ordre d\u2019aparici\u00f3 dels valors del canal <code>of<\/code> no \u00e9s el mateix que li hem indicat. Si repetim l\u2019execuci\u00f3, segurament ens sortir\u00e0 un resultat diferent. Es produeixen quatre processos de forma no correlativa.<\/p>\n<figure id=\"attachment_84\" aria-describedby=\"caption-attachment-84\" style=\"width: 942px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-84 size-full\" src=\"\/wp-content\/uploads\/sites\/7\/2023\/09\/image009.png\" alt=\"\" width=\"942\" height=\"314\" srcset=\"\/wp-content\/uploads\/sites\/7\/2023\/09\/image009.png 942w, \/wp-content\/uploads\/sites\/7\/2023\/09\/image009-300x100.png 300w, \/wp-content\/uploads\/sites\/7\/2023\/09\/image009-768x256.png 768w\" sizes=\"(max-width: 942px) 100vw, 942px\" \/><figcaption id=\"caption-attachment-84\" class=\"wp-caption-text\">Figura 5.<em> Output<\/em> de l\u2019<em>script<\/em> <code>orden.nf<\/code>.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>Nextflow tamb\u00e9 \u00e9s capa\u00e7 de generar m\u00e8triques i reports mitjan\u00e7ant opcions introdu\u00efdes via terminal.<\/p>\n<p><div class=\"featured featured-grey\"><p>Uns exemples serien:<\/p>\n<ul>\n<li><em>with-report<\/em>: crea un informe d\u2019execuci\u00f3.<\/li>\n<li><em>with-trace<\/em>: generar\u00e0 un arxiu on s\u2019indiquin par\u00e0metres de l\u2019execuci\u00f3, com mem\u00f2ria i <em>cpus<\/em> utilitzades, inici d\u2019execuci\u00f3\u2026<\/li>\n<li><em>with-timeline<\/em>: permet identificar els colls d\u2019ampolla indicant el temps que consumeix cada proc\u00e9s.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ nextflow run orden.nf -with-timeline<\/p>\n<\/div><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Com s\u2019ha comentat anteriorment, els canals dirigeixen el flux d\u2019informaci\u00f3 a trav\u00e9s dels diferents processos. Per crear expl\u00edcitament un canal s\u2019ha d\u2019utilitzar un m\u00e8tode de Channel Factory proporcionat per Nextflow. A Nextflow hi ha dos tipus de canals: Queue channels: s\u00f3n canals asincr\u00f2nics, unidireccionals i FIFO (first-in-first-out). Value channels (singleton channel): s\u00f3n molt similars als [&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\/183"}],"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=183"}],"version-history":[{"count":8,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/pages\/183\/revisions"}],"predecessor-version":[{"id":295,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/pages\/183\/revisions\/295"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/wp-json\/wp\/v2\/media?parent=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}