改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吧!

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