2

私のバイオインフォマティクス ワークフローは、 makeのオプション '-j' を使用してデータを並列処理します。

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

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

Mutations.tsvはボトルネックですが、

1) file1.data file2.data で異なる染色体の数を見つけることができました

2) 各染色体に対して「find-mutations」を実行します

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

あなたができないと言ったあなたの解決策は正しい軌道に乗っていると思います。wildcard可変数の 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 に答える