什么是snakemake元数据文件?什么情况下可以删除这些文件?

9
我注意到我的备份rsync脚本花费了相当多的时间从.snakemake/metadata文件夹中复制随机命名的内容。
这些文件有什么用途?
在snakemake运行完成后,我可以安全地删除它们吗?或者它们对于snakemake正确执行下一个运行是必要的?
更普遍地说,在.snakemake文件夹中创建的文件是否有一些文档说明?
2个回答

9
从Snakemake的创始人Johannes Koster的此评论中可以看出,.snakemake/目录用于跟踪每个文件的版本关键字和规则实现。这样在使用--summary参数运行snakemake时,才能通知用户如果有任何更改。
Google Group上的相关评论可以了解到:一般情况下,如果没有正在运行的Snakemake实例,并且你确信所有现有的输出文件都是完整的,那么删除整个.snakemake/目录是安全的。它只包含数据来源信息(例如,跟踪代码输入文件或参数更改 [以确定是否应重新运行工作流程])。你可能想保留.snakemake/conda目录,因为它包含了工作流程中使用的conda环境。
编辑:为了在pipeline成功执行后自动删除.snakemake/目录,可以使用onsuccess hook。
import shutil
onsuccess:
    shutil.rmtree(".snakemake")

谢谢你的回答。在“onsuccess”中放置一些清理代码以删除“.snakemake”中的某些内容是否可行/安全? - bli
1
只要您不关心状态持久性,我相信这应该是可以的。它最终会变成类似于:import shutil; 然后 onsuccess: shutil.rmtree(".snakemake")。您还可以将其链接到您的 Snakemake 调用中:snakemake --snakefile mysnakefile && rm -r ./.snakemake/ - tomkinsc
但是在snakemake命令行文档中已经有一个标志 [--cleanup-metadata FILE [FILE ...]] [--cleanup-shadow]。请注意,这是一个专业术语,并且应该与上下文一起使用以确保准确性。 - Anu

1

这是一个旧问题,现在不再真正回答它...由于您提到了rsync,您可以使用--exclude选项跳过.snakemake目录,例如:

rsync ... --exclude='.snakemake' source/ dest/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接