gpt4 book ai didi

hpc - Snakemake:如何实现将输入/输出文件复制到/从 tmp 文件夹并在那里应用规则的机制

转载 作者:行者123 更新时间:2023-12-04 17:29:50 29 4
gpt4 key购买 nike

我们使用 Slurm 工作负载管理器将作业提交到我们的高性能集群。在作业运行期间,我们需要将输入文件从网络文件系统复制到节点的本地文件系统,在那里运行我们的分析,然后将输出文件复制回网络文件系统上的项目目录。

虽然工作流管理系统 Snakemake 与 Slurm 集成(通过定义配置文件)并允许将工作流中的每个规则/步骤作为 Slurm 作业运行,但我还没有找到一种简单的方法来指定每条规则,是否应使用 tmp 文件夹(是否具有上述所有含义。

对于如何实现这种行为的简单解决方案,我感到非常高兴。

最佳答案

我不完全确定我是否理解正确。我猜你不想将每个规则的输入复制到某个目录,执行规则,然后将输出复制回另一个文件系统,因为那样会移动很多不必要的文件。因此,对于答案的前半部分,我假设在执行之前将文件移动到 /scratch/mydir

我相信您可以使用 --directory 命令 ( https://snakemake.readthedocs.io/en/stable/executing/cli.html )。但是我发现这个效果很差,从那以后 snakemake 很难找到 config.yamlsamples.tsv

我解决这个问题的方法是在每个规则的路径前添加一个工作目录...

rule example:
input:
config["cwd"] + "{sample}.txt"
output:
config["cwd"] + "processed/{sample}.txt"
shell:
"""
touch {output}
"""

因此,您接下来要做的就是在 config.yaml 中更改 cwd。

本地:

cwd: ./

咕噜声:

cwd: /scratch/mydir

然后您必须手动将它们复制回您的长期文件系统或制定一个规则来为您执行此操作。

现在,如果您确实想从文件系统 A -> B 复制文件,执行您的规则,然后将结果从 B -> A 移动,那么我认为您需要使用 shadow rules .我认为文档正确地解释了如何使用它,所以我只提供了一个链接 :)。

关于hpc - Snakemake:如何实现将输入/输出文件复制到/从 tmp 文件夹并在那里应用规则的机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60764682/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com