我对 nextflow 有疑问,我有一个包含 3 个元素(id、fastq_File、out_file)的元组,我需要将一个新文件加入每个元组元素(所有元组元素都使用相同的文件)。
好吧,首先我有一个fastq,我把它分成块,并在我有一个进程(示例中的简单进程)之后用它们的id映射,但是这个进程将id与其他文件一起返回。
reads = Channel.fromPath( 'data/illumina.fastq' )
.splitFastq(by: 150_000, file:true)
reads.map { it -> [it.name - ~/\.fastq/, it] }
.into{tuple_reads ; tuple_reads2}
process pr1 { /*is an example my real process is more complex*/
echo true
input:
tuple val(id), path(file) from tuple_reads
output:
tuple val(id), file("example${id}.out") into example_test
script:
"""
echo example${id} > example${id}.out
"""
}
readss = tuple_reads2.join(example_test)
我加入频道并获得如下信息:
[illumina.1, /home/qs/work/../illumina.1.fastq, /home/qs/work/../exampleillumina.1.out]
[illumina.2, /home/qs/work/../illumina.2.fastq, /home/qs/work/../exampleillumina.2.out]
[illumina.3, /home/qs/work/../illumina.3.fastq, /home/qs/work/../exampleillumina.3.out]
现在,我有一个带有我的 id 的通道、fastq 文件和进程 pr1 的输出,这对我来说非常完美,但现在这是问题所在,我需要创建其他进程以使用静态文件运行。我需要每个 id 都使用 static_file 运行,但我不知道该怎么做。我需要一个类似这样的新频道:
[illumina.1, /home/qs/work/../illumina.1.fastq, /home/qs/work/../exampleillumina.1.out,/home/qs/work/../static_file.txt]
[illumina.2, /home/qs/work/../illumina.2.fastq, /home/qs/work/../exampleillumina.2.out,/home/qs/work/../static_file.txt]
[illumina.3, /home/qs/work/../illumina.3.fastq, /home/qs/work/../exampleillumina.3.out,/home/qs/work/../static_file.txt]
或者我需要一个在每次运行时重复静态文件的进程。下面的代码仅与元组中的第一个元素一起运行:((我尝试了每个但都不起作用。
process pr2 {
echo true
input:
tuple val(id), path(fastq_file), path(out_file) from example_test
path(st_file) from static_file
script:
"""
echo ${id} ${st_file}
"""
}
谢谢!!