Java 在具有多个RG的BAM文件上运行GATK DepthOfCoverage

Java 在具有多个RG的BAM文件上运行GATK DepthOfCoverage,java,samtools,Java,Samtools,我试图在一些BAM文件上运行GATK DepthOfCoverage,这些文件是我从两个原始文件合并而来的。同一个样本在两个通道上排序,以最大化读取次数。我意识到,我的合并文件具有不同的读取组,正如每次读取的RG字段所反映的,并且我的两个原始文件的头在@RG字段中不同 我曾尝试运行samtools reheader,在标头中添加一个新的@RG字段,但当我合并两个文件时,每个读取组都基于两个BAM文件的名称,而不是两个BAM文件标头中的@RG名称 例如,我的两个起始示例是: 27163.pe.ma

我试图在一些BAM文件上运行GATK DepthOfCoverage,这些文件是我从两个原始文件合并而来的。同一个样本在两个通道上排序,以最大化读取次数。我意识到,我的合并文件具有不同的读取组,正如每次读取的RG字段所反映的,并且我的两个原始文件的头在@RG字段中不同

我曾尝试运行samtools reheader,在标头中添加一个新的@RG字段,但当我合并两个文件时,每个读取组都基于两个BAM文件的名称,而不是两个BAM文件标头中的@RG名称

例如,我的两个起始示例是:

27163.pe.markdup.bam
27091.pe.markdup.bam
但是当我使用samtools合并它们时

samtools merge merged.bam 27163.pe.markdup.bam 27091.pe.markdup.bam 
生成的merged.bam在头中的@RG字段与这两个字段中的一个字段相同,并且每个读取都有一个基于它来自的文件名的读取名称,如下所示:

阅读1

RG:Z:27091.pe.markdup

阅读2

RG:Z:27163.pe.markdup

对于BAM中的其余读取,请执行以下操作

我做错什么了吗?合并前我是否应该重新读取每个原始文件?或者干脆在合并到与GATK兼容的东西后重新阅读?在合并之前,似乎无论头中的@RG字段是什么,合并的文件都会根据两个输入文件的名称使用不同的RGs进行读取

我也不确定GATK DepthOfCoverage在阅读组方面想要什么作为输入。是否所有读取都需要一个RG?在这种情况下,我应该使用与samtools合并不同的东西吗


提前感谢您能给我的任何帮助。

如需将来参考,请参阅此处制定的解决方案:

基本上正确的过程是使用Picard而不是samtools进行合并,samtools在bam文件读取组词汇表方面提供与GATK兼容的输出