2

我的生物信息学工作流程使用make的选项“-j”并行处理数据。

mutations.tsv : file1.data file2.data file3.data
       find-mutations $^ > $@

file1.data: raw1.txt
        (....)
(...)

mutation.tsv是一个瓶颈,但如果

1)我可以在 file1.data file2.data 中找到不同染色体的数量

2) 为每条染色体运行“查找突变”

3) 将所有结果合并到 'mutations.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: ....
4

1 回答 1

0

我认为您所说的无法完成的解决方案是正确的。您可以使用wildcardmake 获取可变数量的 chr 文件。例如:

chrs = $(wildcard chr*.tsv)
files = $(wildcard file*.data)

mutations.tsv : $(chrs)
            cat $^ > $@

$(chrs): $(files)
        grep chr1 $^| find-mutations -  > $@
于 2013-02-09T08:30:37.723 回答