samtools merge命令的功能描述:
當有多個樣本的bam文件時,可以使用samtools的merge命令將這些bam文件進行合并為一個bam文件。Merge命令將多個已經排序后的bam文件合并成為一個排序的且保持所有輸入記錄并保持現有排序順序的bam文件。
若使用-h參數,則將輸入文件的@SQ文件頭合并到指定的文件頭中。否則,所有的文件頭都被合并。如果在合并以按照坐標排序的輸入文件@SQ行時,可能在順序上發生沖突。結果輸出文件將被重新按照以前的順序排列。
待合并的bam文件,必須有與其對應的index文件。
merge命令格式:
samtools merge [-nur1f] [-h inh.sam] [-R reg] [-b <list>] <out.bam> <in1.bam> [<in2.bam><in3.bam>…<inN.bam]
參數:
-l 指定壓縮等級;
-b FILE 輸入文件列表,一個文件一行;
-f 強制覆蓋同名輸出文件;
-h FILE 指定FILE內的’@’頭復制到輸出bam文件中并替換輸出文件的文件頭。否則,輸出文件的文件頭將從第一個輸入文件復制過來;
-n 設定輸入比對文件是以read名進行排序的而不是以染色體坐標排序的;
-R STRING 合并輸入文件的指定區域;
-r 使RG標簽添加到每一個比對文件上,標簽值來自文件名;
-u 輸出的bam文件不壓縮;
-c 當多個輸入文件包含相同的@RG頭ID時,只保留第一個到合并后輸出的文件。當合并多個相同樣本的不同文件時,非常有用。
-p 與-c參數類似,對于要合并的每一個文件中的@PG ID只保留第一個文件中的@PG。
#! /bin/bash
#合并test_L1.bam和test_L2.bam文件
samtools merge -h test.sam \
test_L1_L2.bam \
test_L1.sorted.bam \
test_L2.sroted.bam
#合并test_L1.bam和test_L2.bam文件中的指定區域chr7
samtools merge -h test.sam \
-R chr7
test_L1_L2.bam \
test_L1.sorted.bam \
test_L2.sroted.bam