gpt4 book ai didi

snakemake - 如何在规则中访问 c​​luster_config 字典?

转载 作者:行者123 更新时间:2023-12-05 01:17:21 28 4
gpt4 key购买 nike

我正在编写一份基准测试报告作为工作流程的一部分,我想包括的其中一件事是关于每项工作所请求的资源量的信息。

现在,我可以手动要求将集群配置文件(“cluster.json”)作为硬编码输入。不过,理想情况下,我希望能够访问通过 --cluster-config arg 传递的每规则集群配置信息。在 init.py 中,这是作为一个名为 cluster_config 的字典访问的。

有什么方法可以将这个字典直接导入或复制到规则中吗?

最佳答案

从文档中可以看出,您现在可以在将脚本提交到集群时使用自定义包装器脚本来访问作业属性(包括集群配置数据)。这是来自 the documentation 的示例:

#!python

#!/usr/bin/env python3
import os
import sys

from snakemake.utils import read_job_properties

jobscript = sys.argv[1]
job_properties = read_job_properties(jobscript)

# do something useful with the threads
threads = job_properties[threads]

# access property defined in the cluster configuration file (Snakemake >=3.6.0)
job_properties["cluster"]["time"]

os.system("qsub -t {threads} {script}".format(threads=threads, script=jobscript))

在提交过程中(上一个示例的最后一行),您可以将所需的参数从 cluster.json 传递给脚本,或者将 dict 转储到 JSON 文件中,传递该文件的位置在提交期间将文件添加到脚本,并在脚本中解析 json 文件。这是我如何更改提交脚本以执行后者的示例(未经测试的代码):

#!python

#!/usr/bin/env python3
import os
import sys
import tempfile
import json

from snakemake.utils import read_job_properties

jobscript = sys.argv[1]
job_properties = read_job_properties(jobscript)

job_json = tempfile.mkstemp(suffix='.json')
json.dump(job_properties, job_json)

os.system("qsub -t {threads} {script} -- {job_json}".format(threads=threads, script=jobscript, job_json=job_json))

job_json 现在应该作为作业脚本的第一个参数出现。确保在作业结束时删除 job_json

从对另一个答案的评论来看,您似乎只是想将 job_json 与作业的输出一起存储在某个地方。在这种情况下,可能根本没有必要将 job_json 传递给作业脚本。只需将其存放在您选择的位置即可。

关于snakemake - 如何在规则中访问 c​​luster_config 字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44785833/

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