snakemake - 通配符对某些规则的链/依赖关系
问题描述
我有一个特殊的用例,我没有在 Snakemake 文档中找到解决方案。
假设在给定的管道中,我有一个包含 3 条规则 a、b 和 c 的部分,它们将运行 N 个样本。
这些规则处理大量数据,出于本地存储限制的原因,我不希望这些规则同时执行。例如规则 a 产生大量数据,然后规则 c 压缩并导出结果。
所以我正在寻找一种将这 3 个规则链接到 1 个样本/通配符的方法,然后才为下一个样本执行这 3 个规则。所有这些都是为了确保本地空间可用。
谢谢
解决方案
我同意这是 Snakemake 仍然没有解决方案的问题。但是,您可能有一个解决方法。
rule all:
input: expand("a{sample}", sample=[1, 2, 3])
rule a:
input: "b{sample}"
output: "a{sample}"
rule b:
input: "c{sample}"
output: "b{sample}"
rule c:
input:
lambda wildcards: f"a{wildcards.sample-1}"
output: "c{sample}"
这意味着在样本1c
的规则输出准备好之前,样本2的规则不会启动 。您需要添加伪输出或使 lambda 更复杂。a
a0
推荐阅读
- sql - 如何从 PostgreSQL PL/pgSQL 中的 XML 中提取值?
- azure-cosmosdb - 我应该使用哪种 Azure Cosmos DB 类型的数据库来记录来自我的移动应用程序的简单事件?
- javascript - In 运算符返回 false
- python - Python先执行底线,然后使用while执行top
- shared-element-transition - onMapSharedElements 是如何工作的?
- if-statement - 跳过空白单元格,直到在 Google 表格中添加值
- python - 使用名称调用列表中的对象
- html - 在悬停时修改另一个列表项的 CSS
- python - 由于未选择活动仓库,对雪花数据库的查询不起作用
- html - 为什么当我使用浮动时,最后一项在下一行?