計算bam文件中比對上基因組的reads以及合并多個bam文件

參考文章:
1.如何統(tǒng)計BAM文件中的reads數(shù)
2.Samtools常用命令的總結(jié)

當(dāng)你有很多個bam文件時,想知道這些bam文件里有多少個比對上的reads,并且把它們輸出的時候,應(yīng)該怎么做?當(dāng)然你可以選擇讀取bowtie2的日志文件,像這樣的:

31991083 reads; of these:
31991083 (100.00%) were unpaired; of these:
6844445 (21.39%) aligned 0 times
18391269 (57.49%) aligned exactly 1 time
6755369 (21.12%) aligned >1 times
78.61% overall alignment rate

但是有時候我們從別人那里拿到的只是個bam文件怎么辦?
samtools工具里有一個功能幫你實現(xiàn)這個要求。

(一)計算alignments數(shù)

alignment數(shù)并不是mapped read數(shù),因為一條read有可能比對到基因組多個位置。所以這種方法要比實際的reads數(shù)要多。首先如果你有很多個樣品,建議你先弄一個txt,里面是你的樣品名,像這樣,比如我有8個bam文件:

$ cat file_names.txt 
A_1
A_2
A_3
A_4
A_5
A_6
A_7
A_8

上面是我的樣品名前綴。

#寫個腳本,批量統(tǒng)計
#!/bin/bash
cat file_names.txt | while read line
do
export alignment_number=$(samtools view -c ${line}_q30_rmdup_sorted.bam)
echo ${line} alignment_number ${alignment_number}
done

輸出結(jié)果:

A_1 alignment_number 23150364
A_2 alignment_number 12724502
A_3 alignment_number 17724364
A_4 alignment_number 14102860
A_5 alignment_number 18809748
A_6 alignment_number 12566000
A_7 alignment_number 19047440
A_8 alignment_number 11808528

(二)統(tǒng)計雙端測序比對上的reads數(shù)

統(tǒng)計雙端測序bam文件里一對read都比對上的數(shù)量:

#!/bin/bash
cat file_names.txt | while read line
do
export mapped_reads=$(samtools view -c -f 1 -F 12 ${line}.bam) 
echo ${line} mapped_reads_number ${mapped_reads}
done

輸出的內(nèi)容:

A_1 mapped_reads_number 23150364
A_2 mapped_reads_number 12724502
A_3 mapped_reads_number 17724364
A_4 mapped_reads_number 14102860
A_5 mapped_reads_number 18809748
A_6 mapped_reads_number 12566000
A_7 mapped_reads_number 19047440
A_8 mapped_reads_number 11808528

這里你會發(fā)現(xiàn)我兩種比對的結(jié)果是一樣的,是因為我從老板那里拿到的bam文件是他用picard去重過濾之后的bam文件,所以兩種結(jié)果是一樣的,如果你用沒有去重過濾的bam文件進行計算,這兩個結(jié)果是不一樣的!

上面兩種都是比較簡單的統(tǒng)計數(shù)量,如果你想要具體的信息,比如比對率之類的,可以用這個代碼:

$ samtools flagstat file.bam

23150364 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
23150364 + 0 mapped (100.00% : N/A)
23150364 + 0 paired in sequencing
11575182 + 0 read1
11575182 + 0 read2
22447746 + 0 properly paired (96.96% : N/A)
23150364 + 0 with itself and mate mapped
0 + 0 singletons (0.00% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

(三)合并兩個及以上的bam文件

如果你想合并sorted的bam文件,可以這樣:

$ samtools merge finalBamFile.bam *.bam

finalBamFile指的是合并完的bam文件名;后面跟的是你想合并的bam文件,如果只有兩個,你可以依次列出;如果有多個,可以像上面一樣,用*來表示。

samtools的merge功能在合并之后,輸出的文件也是保持著原來的順序,即sort的順序,所以你不用再次sort。

在merge后,再次檢查mapped reads數(shù)(我是把8個文件兩兩合并):

merge_1.bam mapped_reads_number 41960112
merge_2.bam mapped_reads_number 25290502
merge_3.bam mapped_reads_number 36771804
merge_4.bam mapped_reads_number 25911388
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容