{"id":97,"date":"2023-09-02T15:53:59","date_gmt":"2023-09-02T13:53:59","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/?page_id=97"},"modified":"2025-03-09T13:54:00","modified_gmt":"2025-03-09T11:54:00","slug":"2-5-canales-en-nextflow","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/2-5-canales-en-nextflow\/","title":{"rendered":"2.5. Canales en Nextflow"},"content":{"rendered":"<p>Como se ha comentado anteriormente, los canales dirigen el flujo de informaci\u00f3n a trav\u00e9s de los distintos procesos. Para crear expl\u00edcitamente un canal se debe utilizar un m\u00e9todo de Channel Factory proporcionado por Nextflow.<\/p>\n<p>En Nextflow hay dos tipos de canales:<\/p>\n<ul>\n<li><em>Queue channels<\/em>: son canales asincr\u00f3nicos, unidireccionales y FIFO (<em>first-in-first-out<\/em>).<\/li>\n<\/ul>\n<div class=\"featured featured-grey\"><p>Algunos ejemplos son:<\/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>): son muy similares a los <em>queue channels<\/em>, pero solo admiten 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>Para entender un poco mejor el funcionamiento de los canales crearemos un <em>script<\/em> llamado <em>orden.nf<\/em> con un canal <code>value<\/code> y otro <code>of<\/code> e imprimimos su resultado.<\/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>Como pod\u00e9is observar, en el apartado <em>workflow<\/em> estamos especificando los <em>inputs <\/em>del proceso ordenE. En el resultado de este <em>script<\/em> (figura 5), el orden de aparici\u00f3n de los valores del canal of no es el mismo que le hemos indicado. Si repet\u00eds la ejecuci\u00f3n seguramente os saldr\u00e1 otro resultado distinto. Se producen cuatro procesos 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. Output del <em>script<\/em> orden.nf.<br \/>Fuente: elaboraci\u00f3n propia.<\/figcaption><\/figure>\n<p>Nextflow tambi\u00e9n es capaz de generar m\u00e9tricas y reportes mediante opciones introducidas v\u00eda terminal.<\/p>\n<p><div class=\"featured featured-grey\"><p>Unos ejemplos ser\u00edan:<\/p>\n<ul>\n<li><em>with-report<\/em>: crea un informe de ejecuci\u00f3n.<\/li>\n<li><em>with-trace<\/em>: generar\u00e1 un archivo donde se indiquen par\u00e1metros de la ejecuci\u00f3n, como memoria y <em>cpus<\/em> utilizadas, inicio de ejecuci\u00f3n\u2026<\/li>\n<li><em>with-timeline<\/em>: permite identificar los cuellos de botella indicando el tiempo que consume cada proceso.<\/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>Como se ha comentado anteriormente, los canales dirigen el flujo de informaci\u00f3n a trav\u00e9s de los distintos procesos. Para crear expl\u00edcitamente un canal se debe utilizar un m\u00e9todo de Channel Factory proporcionado por Nextflow. En Nextflow hay dos tipos de canales: Queue channels: son canales asincr\u00f3nicos, unidireccionales y FIFO (first-in-first-out). Value channels (singleton channel): son [&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\/es\/wp-json\/wp\/v2\/pages\/97"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":15,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/pages\/97\/revisions"}],"predecessor-version":[{"id":301,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/pages\/97\/revisions\/301"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/workflows\/es\/wp-json\/wp\/v2\/media?parent=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}