El flujo de trabajo Nextflow incluye dinámicas y salida.
Estoy intentando usar inclusiones dinámicas pero tengo problemas para manejar los archivos de salida:
/*
* habilita los módulos
*/
nextflow.enable.dsl = 2
<p>incluya { requestData } de './módulos/obtener<em>datosxapi</em>'
incluya { uniqueActors } de './módulos/actores<em>unicos'
incluya { compileJson } de './módulos/actores</em>unicos'
si (params.user<em>algo) {
incluya { userAlgo } de params.user</em>algo
}
flujo de trabajo {
dataChannel = Canal.desde("datos<em>xapi.json")
requestData(dataChannel)
uniqueActors(requestData.out.channel</em>data)</p>
<pre><code>si (params.user_algo) {
user_algo = userAlgo(requestData.out.channel_data)
} else {
user_algo = null
}
output_json = [user_algo, uniqueActors.out]
// Filtrar salida
Canal.desdeLista(output_json)
.filter{ it != null } <--- problema aquí
.map{ archivo(it) }
.set{jsonFiles}
compileJson(jsonFiles)
</code></pre>
<p>}
El problema es que userAlgo
puede cargarse dinámicamente. Y no sé cómo puedo ocuparme de ello. Con esta solución, obtengo un error Unknown method invocation
getFileSystemon ChannelOut type
.
davy.ai
El problema está en la línea
.filter{ it != null }
. Dado queuser_algo
es un módulo dinámico opcional, puede generar o no algún resultado, lo que significa queoutput_json
puede contener un valornull
. La función de filtro elimina cualquier valornull
de la listaoutput_json
, pero esto causa un error al crear el objeto de archivo porquefile (null)
no es una entrada válida.Para solucionar este problema, puede utilizar la función
mapNotNull
en lugar defilter
para crear una nueva lista que contenga solo valores no nulos. Aquí está el código actualizado:En el código actualizado, primero establecemos
user_algo
ennull
. Si se proporciona el parámetroparams.user_algo
, cargamos el módulo y establecemosuser_algo
en el resultado del módulo. Luego creamos una listaoutput_json
conuser_algo
yuniqueActors.out
. Finalmente, utilizamosmapNotNull
para crear una nueva lista que contenga solo valores no nulos, y luego mapeamos cada elemento a un objeto de archivo.Esto debería solucionar el problema con el error “Unknown method invocation ‘getFileSystem’ on ChannelOut type”.