运行 Nextflow 时缺少输出文件导致的错误

Error caused by missing output files while running Nextflow

当我 运行 nextflow 包含以下句子时出现错误

执行过程出错 > 'BWA_INDEX (Homo_sapiens_assembly38_chr1.fasta)'

原因:

缺少输出文件 FASTA。* 进程预期 'BWA_INDEX(Homo_sapiens_assembly38_chr1.fasta)'

我使用以下脚本。

#!/usr/bin/env nextflow

params.PublishDir = "/home/nextflow_test/genesFilter"
params.pathFasta = "/home/nf-core/references/Homo_sapiens/GATK/GRCh38/Sequence/WholeGenomeFasta/Homo_sapiens_assembly38_chr1.fasta"

InputFasta = file(params.pathFasta)

process BWA_INDEX {

tag {InputFasta.name}

publishDir (
path: "${params.PublishDir}",
    mode: 'copy',
    overwrite: 'true',
    saveAs: "${params.PublishDir}/${it}"
)

input:
path InputFasta

output:
file("FASTA.*") into bwa_indexes

script:
"""
bwa-mem2 index "${InputFasta}"
"""
}

ch_bwa = bwa_indexes

尽管如此进入工作目录(在错误语句后指定),该过程确实正常运行并且生成了输出文件但不在我想要的输出目录中。我试图用脚本中的“路径”替换“文件”:

output:
file("FASTA.*")

以及将 "FASTA.* " 替换为 "${params.PublishDir}/FASTA.*" 但错误仍然出现。我不知道为什么会这样。可能是由于使用 params 来指定输入和输出?

提前致谢!

Missing output file(s) FASTA.* expected by process 'BWA_INDEX(Homo_sapiens_assembly38_chr1.fasta)'

Nextflow 需要在工作目录中匹配 glob 模式 FASTA.* 的文件,但在进程退出(成功)时找不到它们。您只需要告诉 Nextflow 在您的 output 声明中需要哪些文件。 bwa-mem2 index Homo_sapiens_assembly38_chr1.fasta 应该创建的文件可能如下所示:

Homo_sapiens_assembly38_chr1.fasta.0123
Homo_sapiens_assembly38_chr1.fasta.amb
Homo_sapiens_assembly38_chr1.fasta.ann
Homo_sapiens_assembly38_chr1.fasta.bwt.2bit.64
Homo_sapiens_assembly38_chr1.fasta.bwt.8bit.32
Homo_sapiens_assembly38_chr1.fasta.pac

以下输出声明应该足以找到这些文件:

output:
path("${InputFasta}.*") into bwa_indexes

请注意,只有在输出块中声明的文件才会发布到 publishDir。此外,'saveAs' publishDir 参数必须是闭包才能正常工作。您将需要修复此问题(或完全删除该行)以使您的示例正常工作。