2. Nextflow

2.5. Canals a Nextflow

Com s’ha comentat anteriorment, els canals dirigeixen el flux d’informació a través dels diferents processos. Per crear explícitament un canal s’ha d’utilitzar un mètode de Channel Factory proporcionat per Nextflow.

A Nextflow hi ha dos tipus de canals:

  • Queue channels: són canals asincrònics, unidireccionals i FIFO (first-in-first-out).
  • Value channels (singleton channel): són molt similars als queue channels, però només admeten un valor.
            value:
    pi = Channel.value('3.1416')

Per entendre una mica millor el funcionament dels canals crearem un script anomenat orden.nf amb un canal value i un altre of i imprimirem el resultat.

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( ) 
}

Com podem observar, a l’apartat workflow estem especificant els inputs del procés ordenE. En el resultat d’aquest script (figura 5), l’ordre d’aparició dels valors del canal of no és el mateix que li hem indicat. Si repetim l’execució, segurament ens sortirà un resultat diferent. Es produeixen quatre processos de forma no correlativa.

Figura 5. Output de l’script orden.nf.
Font: elaboració pròpia.

Nextflow també és capaç de generar mètriques i reports mitjançant opcions introduïdes via terminal.