大家好!
我正在尝试编写一个小型 Nextflow 管道,该管道在 300 个 vcf 中运行 vcftools 命令。该管道接受四个输入:vcf、pop1、pop2 和一个 .txt 文件,并且必须生成两个输出:一个 .log.weir.fst 和一个 .log.log 文件。当我运行管道时,它只提供 .log.weir.fst 文件,而不提供 .log 文件。
这是我的流程定义:
process fst_calculation {
publishDir "${results_dir}/fst_results_pop1_pop2/", mode:"copy"
input:
file vcf
file pop_1
file pop_2
file mart
output:
path "*.log.*"
"""
while read linea
do
echo "[DEBUG] working in line: \$linea"
inicio=\$(echo "\$linea" | cut -f3)
final=\$(echo "\$linea" | cut -f4)
cromosoma=\$(echo "\$linea" | cut -f1)
segmento=\$(echo "\$linea" | cut -f5)
vcftools --vcf ${vcf} \
--weir-fst-pop ${pop_1} \
--weir-fst-pop ${pop_2} \
--out \$inicio.log --chr \$cromosoma \
--from-bp \$inicio --to-bp \$final
done < ${mart}
"""
}
这是我的工作流程
/* Load files into channel*/
pop_1 = Channel.fromPath("${params.fst_path}/pop_1")
pop_2 = Channel.fromPath("${params.fst_path}/pop_2")
vcf = Channel.fromPath("${params.fst_path}/*.vcf")
mart = Channel.fromPath("${params.fst_path}/*.txt")
/* Import modules
*/
include {
fst_calculation } from './nf_modules/modules.nf'
/*
* main pipeline logic
*/
workflow {
p1 = fst_calculation(vcf, pop_1, pop_2, mart)
p1.view()
}
当我检查管道的工作目录时,我可以看到管道只生成 .log.weir.fst。为了验证我的代码是否错误,我在工作目录中运行了“bash .command.sh”,这实际上生成了两个输出文件。那么,当我运行管道时是否有理由不获取两个输出文件?
我很感激任何帮助。