假设我有两个过程。
Channel
.fromFilePairs("${params.dir}/{SPB_50k_exome_seq,FE_50k_exome_seq}.{bed,bim,fam}",size:3) {
file -> file.baseName
}
.filter { key, files -> key in params.pops }
.set { plink_data }
process pling_1 {
publishDir "${params.outputDir}/filtered"
input:
set pop, file(pl_files) from plink_data
output:
file "${pop}_filtered.{bed,fam,bim}" into pling1_results
script:
output_file = "${pop}_filtered"
base = pl_files[0].baseName
"""
plink2 \
--bfile $pop \
--hwe 0.00001 \
--make-bed \
--out ${output_file} \
"""
}
process pling_2 {
publishDir "${params.outputDir}/filtered_vcf"
input:
set file(bed), file(bim), file(fam) from pling1_results.collect()
file(fam1) from fam_for_plink2
output:
file("${base}.vcf.gz") into pling2_results
script:
base = bed.baseName
output_file = "${base}"
"""
plink2 \
--bfile $base \
--keep-fam ${params.fam}/50k_exome_seq_filtered_for_VEP_ID.txt \
--recode vcf-iid bgz --out ${output_file}
"""
}
pling_1 进程的结果是两个元素列表,
[/work/SPB_50k_exome_seq.bed, /work/SPB_50k_exome_seq.bim,/work/SPB_50k_exome_seq.fam]
[/work/FE_50k_exome_seq.bed, /work/FE_50k_exome_seq.bim,/work/FE_50k_exome_seq.fam]
因此,ping_2
不是我无法一口气处理。仅从第二个列表中获取和省略。在这种情况下,我怎样才能同时传递和传递给进程?SPB_50k_exome_seq
FE_50k_exome_seq
base = bed.baseName
SPB_50k_exome_seq
FE_50k_exome_seq
SPB_50k_exome_seq
FE_50k_exome_seq
pling_2
非常感谢任何帮助或建议。
谢谢