【发布时间】:2019-05-26 12:08:54
【问题描述】:
我正在将生物信息学管道转换为蛇形,并有一个循环遍历 M 个文件的脚本(其中每个非性染色体 M=22)。
每个文件本质上都包含我想要作为单个文件的 N 个标签列。 python脚本可靠地做到了这一点,我的问题是,如果我为输出(染色体和标签)提供带有通配符的snakefile,它将运行脚本MxN次,而我只希望它运行M次。
我可以通过只为每个染色体寻找一个标签文件来规避这个问题,但这不符合蛇形的精神,并且管道中的下一步需要来自所有标签文件的输入。
我已经尝试使用检查点功能(据我了解,在执行每个规则后重新评估 DAG)来检查输出,了解已生成 N 个文件并跳过 N 个作业。但这崩溃了,我得到了this error。但是因为我事先知道我的标签,据我所知,我不应该需要检查点/动态 - 我只是不知道我到底需要什么。
是否可以禁用通配符生成作业并仅检查输出是否返回?
LABELS = ['A', 'B', 'C', 'D']
CHROMOSOMES = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
rule all:
input:
"out/final.txt"
rule split_files:
'''
Splits the chromosome files by label.
'''
input:
"per_chromosome/myfile.{chromosome}.txt"
output:
"per_label/myfile.{label}.{chromosome}.txt"
script:
"scripts/split_files_snake.py"
rule make_out_file:
'''
Makes the final output file by checking each of label.chromosome files one-by-one
'''
input:
expand("per_label/myfile.{label}.{chromosome}",
label=LABELS,
chromosome=CHROMOSOMES)
output:
"out/final.txt"
script:
"scripts/make_out_file_snake.py"
【问题讨论】:
标签: snakemake