问题描述:有时经常遇到重测序的数据加测的问题,或者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吧!