问题
有时候存在需要 process 接收可选的输入文件的场景。
解决方案
可以使用特殊的文件名来标记这类输入参数,类似于一个 placeholder。
可以在assets
中创建一个空文件:
touch assets/NO_FILE
示例代码
params.inputs = "$projectDir/data/prots/*{1,2,3}.fa"
params.filter = "$projectDir/assets/NO_FILE"process foo {debug trueinput:path seqpath optscript:def filter = opt.name != 'NO_FILE' ? "--filter $opt" : ''"""echo your_command --input $seq $filter"""
}workflow {prots_ch = Channel.fromPath(params.inputs, checkIfExists:true)opt_file = file(params.filter, checkIfExists:true)foo(prots_ch, opt_file)
}
这样就可以在运行时指定参数 filter
控制是否真正的使用输入文件。