2. Nextflow

2.5. Canales en Nextflow

Como se ha comentado anteriormente, los canales dirigen el flujo de información a través de los distintos procesos. Para crear explícitamente un canal se debe utilizar un método de Channel Factory proporcionado por Nextflow.

En Nextflow hay dos tipos de canales:

  • Queue channels: son canales asincrónicos, unidireccionales y FIFO (first-in-first-out).
  • Value channels (singleton channel): son muy similares a los queue channels, pero solo admiten un valor.
            value:
    pi = Channel.value('3.1416')

Para entender un poco mejor el funcionamiento de los canales crearemos un script llamado orden.nf con un canal value y otro of e imprimimos su resultado.

nextflow.enable.dsl=2 
pi = Channel.value(3.1416) 
queue_ch = Channel.of( 1, 3, 5, 7 ) 

process ordenE { 
    input: 
      val x 
      val y
    output: 
      stdout 
""" 
     echo $x $y 
""" 
} 
workflow{ 
ordenE(pi,queue_ch) | view( ) 
}

Como podéis observar, en el apartado workflow estamos especificando los inputs del proceso ordenE. En el resultado de este script (figura 5), el orden de aparición de los valores del canal of no es el mismo que le hemos indicado. Si repetís la ejecución seguramente os saldrá otro resultado distinto. Se producen cuatro procesos de forma no correlativa.

Figura 5. Output del script orden.nf.
Fuente: elaboración propia.

Nextflow también es capaz de generar métricas y reportes mediante opciones introducidas vía terminal.