我正在运行snakemake (v7.6.2),我注意到,与其“原则”不同,它试图重新运行输出文件已经存在的管道的步骤。
在我的第一次运行中,我有以下DAG:

它成功地完成了,但是我现在想向它添加另一个规则(quast_first),如下面的“更新”DAG所示:

(我是通过添加quast_first的输出作为quast_second的输入来做到这一点的)
如果我调用了一个试运行,我将期望重新执行以下规则:
quast_first:输出不存在,它不是以前的workflowquast_second:的一部分--尽管输出是存在的,但是它有一个新的依赖项(quast_first),尽管在这种特殊情况下,输出应该完全相同,因为quast_first的输出只是quast_second的依赖项(所以没有输入)。
然而,我看到snakemake想要重新生成整个工作流。下面是使用--reason标志调用试运行的摘录,如this question中所解释的
rule symLinkFQ:
input: logs/BORD1725, /nexus/Gridion/20220420Microbiology_q20/no_sample/20220405_1846_X1_FAT23098_47b43b4a/High_accuracy_basecalling/pass/barcode04
output: symLinkFq/BORD1725
log: /home/ngs/tempSnakemake/20220420Microbiology_q20/logs/BORD1725
jobid: 34
reason: Updated input files: /nexus/Gridion/20220420Microbiology_q20/no_sample/20220405_1846_X1_FAT23098_47b43b4a/High_accuracy_basecalling/pass/barcode04
wildcards: barcode=BORD1725
resources: mem_mb=1000, disk_mb=1000, tmpdir=/tmp
ln -s /nexus/Gridion/20220420Microbiology_q20/no_sample/20220405_1846_X1_FAT23098_47b43b4a/High_accuracy_basecalling/pass/barcode04 symLinkFq/BORD1725但是,我可以确认规则symLinkFQ的输出确实存在(workdir是/home/ngs/tempSnakemake/20220420Microbiology_q20),
[ngs@vngs20x ~/tempSnakemake/20220420Microbiology_q20]$ ll symLinkFq/BORD1725
lrwxrwxrwx. 1 ngs ngs 125 24. Mai 14:01 symLinkFq/BORD1725 -> /nexus/Gridion/20220420Microbiology_q20/no_sample/20220405_1846_X1_FAT23098_47b43b4a/High_accuracy_basecalling/pass/barcode04所以我不太明白什么是:
reason: Updated input files: /nexus/Gridion/20220420Microbiology_q20/no_sample/20220405_1846_X1_FAT23098_47b43b4a/High_accuracy_basecalling/pass/barcode04`, as shown above:同样,在试运行结束时,它再次显示如果我调用它,整个工作流将被执行:
Job stats:
job count min threads max threads
-------------- ------- ------------- -------------
all 1 1 1
cat_fastq 4 1 1
flye 4 1 1
minimap_first 4 1 1
minimap_second 4 1 1
quast_first 4 1 1
quast_second 4 1 1
racon_first 4 1 1
racon_second 4 1 1
symLinkFQ 4 1 1
total 37 1 1我一直在使用Snakemake的早期版本(主要是V.5.*),据我所知,这是我第一次遇到这个问题(Snakemake重新运行其输出文件已经存在的规则)。例如,我现在必须传递命令行参数来获取snakemake,告诉它不要重新生成已经存在的输出文件(尽管我一直认为这是默认行为),这是否是与版本相关的呢?
发布于 2022-05-25 10:45:43
事实证明,这确实与版本有关。我删除了snakemake v7.6.2,并将其命名为v5.8.1,而snakemake不再想重复其输出文件存在的规则。同样的错误出现在v7.8.0上,这是最新的发行版。
https://stackoverflow.com/questions/72363539
复制相似问题