改bam文件的樣本id

問題描述:有時經常遇到重測序的數據加測的問題,或者NCBI上下載的數據中一個樣本測了幾個庫,這個時候一個樣本就會有兩對或多對fastq文件。如果你把每個樣本分別比對,使用了不同的ID,那麼合併之後的ID就需要重新修改成樣本名,才能進行後續的call SNP的工作。幹這個事兒的主要有兩個工具,samtools和picard。
輸入數據:使用samtools merge合併之後的bam文件

samtools view -h Dongbu102.realn.bam | less

@HD     VN:1.5  SO:coordinate
@SQ     SN:R1   LN:32890249
@SQ     SN:R2   LN:47789304
@SQ     SN:R3   LN:39559458
@SQ     SN:R4   LN:57813992
@SQ     SN:R5   LN:46156245
@SQ     SN:R6   LN:57212458
@SQ     SN:R7   LN:33292243
@SQ     SN:R8   LN:36191323
@SQ     SN:R9   LN:45435172
@RG     ID:ERR1022716      SM:ERR1022716   PL:illumina
@RG     ID:ERR1022717      SM:ERR1022717   PL:illumina

可以看到合併之前的兩個ID爲:ERR1022716、 ERR1022717 ,我們要做的就是讓bam文件中的RG的ID變成Dongbu102。

操作
1.samtools addreplacerg

i=Dongbu102
samtools addreplacerg -r "@RG\tID:${i}\tSM:${i}\tPL:$platform" -o tmp/${i}.merge2.bam tmp/${i}.merge.bam

@HD     VN:1.5  SO:coordinate
@SQ     SN:R1   LN:32890249
@SQ     SN:R2   LN:47789304
@SQ     SN:R3   LN:39559458
@SQ     SN:R4   LN:57813992
@SQ     SN:R5   LN:46156245
@SQ     SN:R6   LN:57212458
@SQ     SN:R7   LN:33292243
@SQ     SN:R8   LN:36191323
@SQ     SN:R9   LN:45435172
@RG     ID:RRCC_ERR1022716      SM:ERR1022716   PL:illumina
@RG     ID:RRCC_ERR1022717      SM:ERR1022717   PL:illumina
...
@RG     ID:Dongbu102        SM:Dongbu102    PL:illumina

我們發現修改之後的bam文件只是增加了一個RG,原來的RG還在bam文件頭裏面

2.picard

i=Dongbu102
java -jar ~/software/picard.jar AddOrReplaceReadGroups I=${i}.realn.bam O=${i}.bam RGID=${i} RGLB=${i} RGPL=illumina RGSM=${i} RGPU=unit1

@HD     VN:1.6  SO:coordinate
@SQ     SN:R1   LN:32890249
@SQ     SN:R2   LN:47789304
@SQ     SN:R3   LN:39559458
@SQ     SN:R4   LN:57813992
@SQ     SN:R5   LN:46156245
@SQ     SN:R6   LN:57212458
@SQ     SN:R7   LN:33292243
@SQ     SN:R8   LN:36191323
@SQ     SN:R9   LN:45435172
@RG     ID:Dongbu102    LB:Dongbu102    PL:illumina     SM:Dongbu102    PU:unit1

輸出文件中只有修改之後的樣本ID,搞定!

總結:改bam文件的樣本ID就用picard吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章