問題描述:有時經常遇到重測序的數據加測的問題,或者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吧!