Nextflow 过程仅适用于第一个元组元素

问题描述 投票:0回答:1

我目前正在开发一个小型 Nextflow (v.22.10.6.5843) 管道,用于在多个文件中运行 vcfancestralalleles.jar。为此,我决定使用元组。但是,当我运行该过程时,它仅在元组的第一个元素中执行。

这是我的频道定义:

Channel
        .fromPath(params.input_ihs)
        .splitCsv(header:true)
        .map{ row -> [ row.chromosome, file(row.path_vcf), file(row.path_genetic_map), file(row.path_ancestral), file(row.path_manifest)] }
        .set{samples_ihs}

这是我的 DSL2 流程定义:

publishDir "${results_dir}/ancestral_annotation", mode:"copy"

    input:
    tuple val(chromosome), path(path_vcf), path(path_genetic_map), path(path_ancestral), path(path_manifest)
    file java_script

    output:
    tuple val(chromosome), path("chr${chromosome}_aa.vcf")

    """
    samtools faidx ${path_ancestral}

    java -jar ${java_script} \
    -m ${path_manifest} \
    ${path_vcf} |\
    bcftools annotate -x '^INFO/AA' > chr${chromosome}_aa.vcf
    """
}

**这是我的工作流程定义:**

workflow {
    p1 = vcf_ancestral_annotation(samples_ihs, java_script)
 }

** 这是我的 input_ihs 文件:**

chromosome,path_vcf,path_genetic_map,path_ancestral,path_manifest
21,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/21.phased.with.ref.vcf,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/chr21.b38.predicted.map,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/ancestral_fasta/ANCESTOR_for_chromosome_GRCh38_21_1_46709983_1.fa,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/manifest_annotation/manifest21
22,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/22.phased.with.ref.vcf,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/chr22.b38.predicted.map,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/ancestral_fasta/ANCESTOR_for_chromosome_GRCh38_22_1_50818468_1.fa,/mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/manifest_annotation/manifest22

一开始以为是input_ihs文件的问题。但是,如果我运行:

samples_ihs.view()

我可以看到元组实际上包含input_ihs文件的两个元素:

[21, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/21.phased.with.ref.vcf, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/chr21.b38.predicted.map, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/ancestral_fasta/ANCESTOR_for_chromosome_GRCh38_21_1_46709983_1.fa, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/manifest_annotation/manifest21]
[22, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/22.phased.with.ref.vcf, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/test/data/ihs_files/chr22.b38.predicted.map, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/ancestral_fasta/ANCESTOR_for_chromosome_GRCh38_22_1_50818468_1.fa, /mnt/c/Users/fernanda_miron1/Documents/pop_north_developing/nf-selection/nf_modules/manifest_annotation/manifest22]

任何帮助将不胜感激!

tuples bioinformatics nextflow
1个回答
0
投票

像这样的问题几乎总是涉及到多个输入通道的使用

当两个或多个通道被声明为过程输入时,过程 等待直到有一个完整的输入配置,即直到它 从每个输入通道接收一个值。当这种情况是 满意,该过程从每个通道消耗一个值并启动 一项新任务,重复此逻辑直到一个或多个通道为空。

您可能使用了工厂方法来创建您的java_script通道,但我认为您只需要确保它是一个值通道。请注意,当使用简单值调用流程时,流程会隐式创建价值通道。例如,您可以尝试以下操作:

params.java_script = '/path/to/vcfancestralalleles.jar'

...

workflow {

    java_script = file( params.java_script )

    Channel
        .fromPath( params.input_ihs )
        .splitCsv( header:true )
        .map { row ->
            [ row.chromosome, file(row.path_vcf), file(row.path_genetic_map), file(row.path_ancestral), file(row.path_manifest)]
        }
        .set { samples_ihs }

    p1 = vcf_ancestral_annotation(samples_ihs, java_script)
}
© www.soinside.com 2019 - 2024. All rights reserved.