在snakemake中,如何指示脚本是输出文件的依赖项,以便如果脚本更改,规则将重新运行?
例如,假设这是我的规则;
rule myrule:
input:
"foo.csv"
output:
"foobar.csv"
script:
"barfoo.py"
我错误地认为,如果我更改
barfoo.py
并执行 snakemake
,将会触发规则的重新运行。然而,情况似乎并非如此。更改为 barfoo.py
并运行 snakemake
后,它表示一切都是最新的。
我是snakemake的新手,所以我缺少基础知识。如果是这样,我深表歉意(我已经搜索并进行了 rtfm 编辑)。我认为有某种方法可以做到这一点,就像 GNU Make 那样。例如
foobar.csv: foo.csv foobar.py
python foobar.py foo.csv foobar.csv
目前我正在修改剧本后做一个
snakemake --foreceall
,但这似乎达不到目的。
使用版本 8.4.8,我无法重现您的场景。当我改变
barfoo.py
时,snakemake会重新运行,甚至告诉我原因:
Reasons:
(check individual jobs above for details)
code has changed since last execution:
myrule
调节该行为的命令是
--rerun-triggers
,默认情况下所有触发器都应处于活动状态,但您可以尝试使用它并查看它是否有效果。例如。 --rerun-triggers code
。
您运行的是哪个 Snakemake 版本?