2.6. Operadores
En la sección anterior hemos visto cómo crear canales para dirigir los datos entre los procesos. Para poder modificar el contenido o el comportamiento de un canal, Nexflow ha creado lo que se denominan operadores. En los scripts anteriores hemos visto el operador view, pero podemos encontrar operadores de filtrado, combinación o de operaciones matemáticas entre muchos otros. En esta sección veremos algunos ejemplos.
Los operadores pueden introducirse mediante un pipe (|), como hemos visto anteriormente, o precedidos por un punto. Así:
workflow{
ordenE(pi,queue_ch) | view( )
}
es análogo a:
workflow{
ordenE(pi,queue_ch).view( )
}
A partir del script anterior eliminaremos el canal valor pi y nos quedaremos con un ejemplo más sencillo con el canal of queue_ch. Como veréis a continuación añadimos la notación .view, y dentro de este operador introducimos un prefijo, chr, y un valor $it entre { }. Estos paréntesis definen un bloque de código que va junto y utiliza la nomenclatura de goovy (it, de ítem) para definir los parámetros.
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 este caso el output se visualiza en la figura 6.

Fuente: elaboración propia.
Podemos introducir un filtro en el canal para únicamente mostrar los valores superiores a 4:
queue_ch = Channel.of( 1, 3, 5, 7 ).filter { it > 4 }.view({"chr$it"})
También podemos combinar canales utilizando el 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"})
y hacer operaciones como contar el número de elementos:
queue_ch = ch1.mix(ch2,ch3).count().view()
Las posibilidades de los operadores proporcionan una versatilidad muy grande de poder manipular los datos a analizar.