【发布时间】:2015-02-18 18:39:17
【问题描述】:
我正在使用 make 编写一个生物数据分析管道。我遇到了无法合并相关文件的问题。例如,假设我有四个文件(虽然文件总数,并且相关文件可能更多):A_1.fastq A_2.fastq B_1.fastq B_2.fastq。当管道并行运行时,我希望每个文件都通过配方,除了最后一个,我希望合并相关文件,例如A.merged.bam B.merged.bam。我不确定如何在 make 中编写这样的规则?
生成文件示例
# chip-seq.mk
originalFiles = A_1.fastq A_2.fastq B_1.fastq B_2.fastq
mergedFiles = A.merged.bam B.merged.bam
all: $(mergedFiles)
%.merged.bam: %_*.sorted.bam
# merge bam files
samtools merge $@ $^
%.sorted.bam: %.bam
# sort bam
samtools sort $^ $*.sorted
%.bam: %.sam
# convert sam to bam
samtools view -bS $^ > $@
%.sam: %.fastq
# align reads
bowtie2 -x genome -U $^ -S $@
【问题讨论】: