我的生物信息学工作流使用 make 的选项'-j'并行处理数据。
mutations.tsv : file1.data file2.data file3.data
find-mutations $^ > $@
file1.data: raw1.txt
(....)
(...)
mutation.tsv 是一个瓶颈,但如果
,事情会更快1)我可以在file1.data file2.data
中找到不同染色体的数量2)为每条染色体运行'find-mutation'
3)将所有结果合并在'mutation.tsv'
中类似的东西:
mutations.tsv : file1.data file2.data file3.data
for CHROM in `cut -d ' ' -f 1 $< | sort -u` ; do grep $${CHROM} $^| find-mutations - >> $@ ; done
如何更改此项以创建并行化工作流程?
注意:此makefile本身就是生成的。我在创建Makefile之前不知道染色体的数量,所以我不能使用以下解决方案:
mutations.tsv : chr1.tsv chr2.tsv chr3.tsv chr4.tsv
cat $^ > $@
chr1.tsv: file1.data file2.data file3.data
grep chr1 $^| find-mutations - > $@
chr2.tsv: ....
答案 0 :(得分:0)
我认为你所说的无法解决的问题是正确的。您可以使用wildcard
来获取可变数量的chr文件。例如:
chrs = $(wildcard chr*.tsv)
files = $(wildcard file*.data)
mutations.tsv : $(chrs)
cat $^ > $@
$(chrs): $(files)
grep chr1 $^| find-mutations - > $@