NextFlow:如何在 DSL2 中使用 inputStream
NextFlow: how to use inputStream with DSL2
使用 NextFlow (DSL=2),我想将文件的每一行用作我工作流的流输入。
nextflow.enable.dsl=2
process bar {
input: val data
output: val result
exec:
result = data.toUpperCase()
}
workflow {
myFile = file('input_test.txt')
myReader = myFile.newReader()
myFile.withInputStream {
String line
while( line = myReader.readLine() ) {
channel.from(line) | bar | view
}
}
}
我遇到了只能使用一次“bar”进程的问题:
Process 'bar' has been already used -- If you need to reuse the same component include it with a different name or include in a different workflow context
我还尝试创建一个子工作流,从线路和呼叫栏获取通道。
有没有办法使用 Nextflow 将流式数据用作输入?
注意:我的最终目标不仅仅是应用大写函数。我想link数据流上的几个复杂过程。
谢谢!
您的示例代码看起来像一个反模式 - 它将尝试为您输入文件中的每一行创建一个新通道。相反,看看 splitting operators, especially the splitText operator:
workflow {
Channel.fromPath('input_test.txt')
| splitText { it.trim() } \
| bar \
| view()
}
如果上述方法没有帮助,请准确描述您要对输入文件中的每一行执行的操作。
使用 NextFlow (DSL=2),我想将文件的每一行用作我工作流的流输入。
nextflow.enable.dsl=2
process bar {
input: val data
output: val result
exec:
result = data.toUpperCase()
}
workflow {
myFile = file('input_test.txt')
myReader = myFile.newReader()
myFile.withInputStream {
String line
while( line = myReader.readLine() ) {
channel.from(line) | bar | view
}
}
}
我遇到了只能使用一次“bar”进程的问题:
Process 'bar' has been already used -- If you need to reuse the same component include it with a different name or include in a different workflow context
我还尝试创建一个子工作流,从线路和呼叫栏获取通道。
有没有办法使用 Nextflow 将流式数据用作输入?
注意:我的最终目标不仅仅是应用大写函数。我想link数据流上的几个复杂过程。
谢谢!
您的示例代码看起来像一个反模式 - 它将尝试为您输入文件中的每一行创建一个新通道。相反,看看 splitting operators, especially the splitText operator:
workflow {
Channel.fromPath('input_test.txt')
| splitText { it.trim() } \
| bar \
| view()
}
如果上述方法没有帮助,请准确描述您要对输入文件中的每一行执行的操作。