snakemake - 处理并行化
问题描述
我对蛇形有点陌生。
想象一下,我有一条规则,如下所示(我已将线程数设置为 10)。
有没有什么办法可以snakemake
神奇地处理这条规则中循环的并行化?
rule MY_RULE:
input:
input_file=TRAIN_DATA
output:
output_file=OUTPUT_DATA
threads: 10
run:
for f,o in zip(input.input_file, output.output_file):
DO_SOMETHING_AND_SAVE(f,o)
谢谢
解决方案
我猜你的规则可以重写为(使用额外的代码来制作一个小的独立示例):
TRAIN_DATA = ['a.txt', 'b.txt', 'c.txt']
OUTPUT_DATA = ['a.out', 'b.out', 'c.out']
files= dict(zip(OUTPUT_DATA, TRAIN_DATA))
wildcard_constraints:
x= '|'.join([re.escape(x) for x in OUTPUT_DATA])
rule all:
input:
expand('{x}', x= OUTPUT_DATA),
rule MY_RULE:
input:
input_file= lambda wc: files[wc.x]
output:
output_file= '{x}'
run:
DO_SOMETHING_AND_SAVE(input.input_file, output.output_file)
这将为每个输入/输出对并行运行规则 MY_RULE。当然,细节取决于你在 MY_RULE 之前和之后到底想做什么......
推荐阅读
- r - R - 用重复的数字序列替换数据框中的数字列表
- reactjs - 运行k6时引用错误:regeneratorRuntime is not defined
- typescript - 索引可选属性的打字稿索引签名
- laravel - 网站迁移后代码不适用于旧用户
- android - Android Studio 中缺少 Gradle 图标的同步项目
- matlab - 使用matlab的fminsearch求最小值
- numpy - 2D Numpy 数组布尔切片
- c# - 无法在 Windows Server 上正确运行 .exe
- google-apps-script - Google App Script - 如果另一列中的条件匹配,则将数字条目设为 0
- sql - 在多个条件下返回左外连接中的最后一行