2.6. Operadors
A la secció anterior hem vist com moure canals per dirigir les dades entre els processos. Per poder modificar el contingut o el comportament d’un canal, Nexflow ha creat el que es denominen operadors. En els scripts anteriors hem vist l’operador view, però podem trobar operadors de filtratge, combinació o d’operacions matemàtiques entre molts altres. En aquesta secció en veurem alguns exemples.
Els operadors es poden introduir mitjançant un pipe (|), com hem vist anteriorment, o precedits per un punt. Així:
workflow{ ordenE(pi,queue_ch) | view( ) }
és anàleg a:
workflow{ ordenE(pi,queue_ch).view( ) }
A partir de l’script anterior eliminarem el canal valor pi i ens quedarem amb un exemple més senzill amb el canal of queue_ch. Com veureu a continuació hi afegim la notació .view, i dins d’aquest operador hi introduïm un prefix, chr, i un valor, $it, entre { }. Aquests parèntesis defineixen un bloc de codi que va al costat i utilitza la nomenclatura de goovy (it, d’ítem) per definir els paràmetres.
nextflow.enable.dsl=2 queue_ch = Channel.of( 1, 3, 5, 7 ).view({"chr$it"}) process ordenE { input: val x output: stdout """ echo $x """ } workflow{ ordenE(queue_ch) }
En aquest cas l’output es visualitza a la figura 6.

Font: elaboració pròpia.
Podem introduir un filtre al canal per mostrar únicament els valors superiors a 4:
queue_ch = Channel.of( 1, 3, 5, 7 ).filter { it > 4 }.view({"chr$it"})
També podem combinar canals utilitzant l’operador mix:
ch1 = channel.of( 1..22 ) ch2 = channel.of( 'X','Y' ) ch3 = channel.of( 'MT' ) queue_ch = ch1.mix(ch2,ch3).view({"chr$it"})
i fer operacions com comptar el nombre d’elements:
queue_ch = ch1.mix(ch2,ch3).count().view()
Les possibilitats dels operadors proporcionen una versatilitat molt gran de poder manipular les dades que volem analitzar.