gpt4 book ai didi

python - Snakemake:如何防止不明确的规则同时被执行?

转载 作者:行者123 更新时间:2023-12-01 09:19:36 30 4
gpt4 key购买 nike

我在机器学习环境中使用snakemake。我有两个规则(process_x_onlyprocess_x_and_y),它们以 processed_x.txt 作为目标输出,因此不明确。请参阅以下代码:

rule process_x_only:
input:
'x.txt',
output:
'processed_x.txt'

rule process_x_and_y:
input:
'x.txt',
'y.txt'
output:
'processed_x.txt',
'processed_y.txt'

ruleorder: process_x_only > process_x_and_y

rule refit_model:
input:
'processed_x.txt',
'processed_y.txt'
output:
'predictions_refit.txt'

rule predict_model:
input:
'processed_x.txt'
output:
'predictions.txt'

关注snakemake的documentation ,我使用 ruleorder 语句来指定最好仅应处理 x (即仅当 y 需要 处理process_x_and_y 时才应运行,否则只处理 x 就足够了,并且可以运行 process_x_only。)。这解决了歧义问题,但引入了另一个问题。当我执行时:

snakemake predictions_refit.txt

snakemake将首先执行process_x_only,然后执行process_x_and_y,而在本例中我只想执行process_x_and_y。如何让snakemake构建一个只执行process_x_and_y的DAG?

澄清一下:这是我的实际问题的一个很大的简化。我知道更改问题陈述的限制可以解决问题,但我感兴趣的是如何解决 Snakemake 在规则顺序中执行这两个规则的问题。

添加:执行规则refit model时,显示以下警告:

Warning: the following output files of rule process_x_only were not 
present when the DAG was created:

{'processed_x.txt'}

最佳答案

这是一个有趣的问题。我不知道 Snakemake 无法自行解决这个问题。一个 hack 是告诉 Snakemake 哪个规则生成 refit_model

的文件
rule refit_model:
input:
rules.process_x_and_y.output
output:
'predictions_refit.txt'

但是,在更复杂的工作流程中,或者如果您尝试运行 snakemake refit_model Predict_model,您仍然可能会遇到麻烦。该黑客解决了您的问题吗?

对于真正的解决方案,我认为 Snakemake 必须在创建 DAG 后对其进行修剪。我建议你开一个新问题here .

关于python - Snakemake:如何防止不明确的规则同时被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50911726/

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