2013-02-08 60 views
2

我的生物信息工作流程使用選項'-j'並行處理數據makeMake:分割文件並行化

mutations.tsv : file1.data file2.data file3.data 
     find-mutations $^ > [email protected] 

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

mutations.tsv是一個瓶頸,但事情可能會更快,如果

1)我能找到在file1.data file2.data

2)運行不同的染色體數目「發現突變」每個染色體

3)合併在「mutations.tsv」

東西里所有的結果ke:

mutations.tsv : file1.data file2.data file3.data 
     for CHROM in `cut -d ' ' -f 1 $< | sort -u` ; do grep $${CHROM} $^| find-mutations - >> [email protected] ; done 

我該如何改變這個來創建一個並行化的工作流?

注意:這個makefile本身就是生成的。我不知道染色體數目創建Makefile文件之前,所以我不能採用如下方案:

mutations.tsv : chr1.tsv chr2.tsv chr3.tsv chr4.tsv 
      cat $^ > [email protected] 

chr1.tsv: file1.data file2.data file3.data 
     grep chr1 $^| find-mutations - > [email protected] 

chr2.tsv: .... 

回答

0

我覺得你的解決方案,你說不能做的是正確的軌道上。你可以使用wildcard來挑選可變數量的chr文件。例如:

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

mutations.tsv : $(chrs) 
      cat $^ > [email protected] 

$(chrs): $(files) 
     grep chr1 $^| find-mutations - > [email protected]