我知道有一种方法可以使用localrules声明需要在本地计算机上执行的规则:
localrules: all, foo
是否有类似的选项来声明需要在集群上执行的规则?也许是clusterrules
选项?
我的管道中有一堆不需要在集群上执行的规则,虽然我可以用localrules
列出所有规则,但只需输入一个或两个需要在集群上执行。
另一种选择是使用rule groups,它将在单个节点上执行组中的所有规则,而不是在群集中使用多个节点。
all_rules = [rule for rule in dir(rules) if not rule.startswith("__")]
cluster_rules = ["my_cluster_rule1", "my_cluster_rule2"]
workflow._localrules = set(rule for rule in all_rules if rule not in cluster_rules)
我还没有测试过,但是我认为这应该可行。这样,我们仅覆盖Snakemake从文档中解析的内容。这样做的问题在于,在不同版本的snakemake之间可能不稳定。