This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Error parsing SAM header. @RG line missing SM tag. Line: @RG ID:None

Hey,

I downloaded a BAM file for chr20 from NCBI (SRR1976036). This is a NA12878 sample.

I wanted to do some variant calling with freebayes and got the following error.

could not find SM: in @RG tag

After some investigation i found that my BAM file does not have a RG tag.

 @HD    VN:1.2  SO:coordinate
@SQ SN:CM000663.1   LN:249250621
@SQ SN:CM000664.1   LN:243199373
@SQ SN:CM000665.1   LN:198022430

......
@SQ SN:GL000248.1   LN:39786
@SQ SN:GL000249.1   LN:38502
@RG ID:None

I looked around the internet for an answer and i though i found an answer using Picard function AddOrReplaceReadGroups.

So i tried the following

java -jar /home/user/Downloads/picard.jar AddOrReplaceReadGroups I=SRR1976036_chr20.bam O=036_RG.bam RGID=4 RGLB=lib1 RGPL=illumina RGPU=unit1 RGSM=test

However i got the following message:

Exception in thread "main" htsjdk.samtools.SAMFormatException: Error parsing SAM header. @RG line missing SM tag. Line: @RG ID:None; File /home/user/NA12878/SRR1976036_chr20.bam; Line number 95

I looked around and couldn't find an answer.

it is the first time working with a BAM directly. I have used variant calling from FASTQ to VCF files and never got this problem.

Could someone tell me what i can do to add the information properly?

Kind regards Covux

picard na12878

2 answers

The @RG line in the bam-header looks malformed. Remove that and then try Piccard

how do i remove the @RG line?

You can remove it from the header if it is only there (and not in the reads).

samtools view -H your.bam | grep -v "^@RG" | samtools reheader - your.bam > your.new.bam

Then run Picard again on your.new.bam.

Note: It will fail if you have malformed RG in each read. In that case, post some of the initial reads

I just your command line and now i get a different error.

Exception in thread "main" htsjdk.samtools.SAMFormatException: SAM validation error: ERROR: Record 1, Read name SRR1976036.630013850.None, RG ID on SAMRecord not found in header: None

here are some of the reads i have in my file

 SRR1976036.630013850.None  163 CM000682.1  59993   60  88M =   60001   96  GTGACTCAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGCCCTAAACAG    B<B7BBFFFIFBFBF<B<FBB7BFFFFFBBF'B<BFFFBF<<BB<F<BFF7<BFBBFFB<<BBBB<7<B<<<<BBB<<<'77BB'<B<    RG:Z:None   BX:Z:TATGCGAGGCTGTG-1   NH:i:1  NM:i:8

   SRR1976036.630013848.None    83  CM000682.1  59999   60  88M =   60000   88  CAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGCCCTAAACAGGTGGTA    BFFFFFFFFFFFFFFFBFFFFFFFFFFFFFIFFB0IIIIIIIFIIIIIIIIIIFIIIFFFBIIIFIIIIIIFFBFFFFFIIIFIIFFF    RG:Z:None   BX:Z:GCTTGACAAAGATC-1   NH:i:1  NM:i:2

    SRR1976036.630013849.None   16  CM000682.1  60000   60  4S84M   *   0   0   ACTCAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGCCCTAAACAGGTG    BFFFFFFFFFFFFFFFFFFFFFFFFFFIIIIIIIIFB<IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIIIFIIIIIIIIIFFF    RG:Z:None   BX:Z:CAACGTGTTCCGTA-1   NH:i:1  NM:i:1

    SRR1976036.697073837.None   81  CM000682.1  60000   60  8S80M   CM000685.1  137107070   0   GGTGACTCAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGCCCTAAACA    BFFFFFFFFFFFFFFFFFFFFFFFFFFFFIIIIIIFIFFFB<IIIIIIIIIIIIIIIFIIIFFIIIIIIIIIIIIIFFFFFFFIIFFF    RG:Z:None   BX:Z:TGACCAGTATACAG-1   NH:i:1  NM:i:1

    SRR1976036.630013888.None   163 CM000682.1  60000   60  10S78M  =   60259   347 GAGGTGACTCAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGCCCTAAA    FFFFFIFIIIIIIIIIIIIII0BFFFFFIIFIIFIIIFIIIIIIIIIIIIIIFIBFIFFFFFBFFFFFFFFFFFFBFFFFBFFFFFFF    RG:Z:None   NH:i:1  NM:i:1
    SRR1976036.697073835.None   81  CM000682.1  60000   60  11S77M  CM000685.1  137107070   0   AGAGGTGACTCAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGCCCTAA    BFFFFFFBFFFFFFFFFFFFFFFFFFFFIIIIIIIIIIIIIIFFBIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFFFFFFF    RG:Z:None   BX:Z:CTGAACAGGCTCGA-1   NH:i:1  NM:i:1

    SRR1976036.630013848.None   163 CM000682.1  60000   60  16S72M  =   59999   -88 AATAGAGAGGTGACTCAGATCCAGAGGTGGAAGAGGAAGGAAGCTTGGAACCCTATAGAGTTGCTGAGTGCCAGGACCAGATCCTGGC    FFFIIFFFIBFFFIFFIIFIIIIIIIF'<FFFFIIIIIIIIFFFFIIIIIIIIIFFFFFFBFFFFFFF<BBFFBBBBBFFFFFFFFFF    RG:Z:None   BX:Z:GCTTGACAAAGATC-1   NH:i:1  NM:i:1

Try this on original BAM

samtools view -H your.bam | sed 's,^@RG.*,@RG\tID:None\tSM:None\tLB:None\tPL:Illumina,g' |  samtools reheader - your.bam > your.new.bam

The do the variant calling directly on your.new.bam (DON'T run Picard).

it worked!

would you mind telling me what the command line does? :)

Your read groups were malformed. In the actual reads, the RG:Z:None tag means that your sample name is "None". However, your header contains only ID tag in RG: @RG ID:None (It must contain at least the SM=Sample tag). To reconcile, I added the sample info (and some other default info like PL=Platform=Illumina, SM=Sample etc.). You can see all details of @RG here https://software.broadinstitute.org/gatk/documentation/article.php?id=6472

samtools view -H your.bam => take the header of BAM

sed 's,^@RG.*,@RG\tID:None\tSM:None\tLB:None\tPL:Illumina,g' => Replace line starting with @RG to @RG\tID:None\tSM:None\tLB:None\tPL:Illumina

samtools reheader - your.bam => make new header with above changes

Many thanks for your explanation!

 However i got the following message:

Exception in thread "main" htsjdk.samtools.SAMFormatException: Error parsing SAM header. @RG line missing SM tag. Line: @RG ID:None; File /home/user/NA12878/SRR1976036_chr20.bam; Line number 95

of course, because from what you've done:

java -jar /home/user/Downloads/picard.jar AddOrReplaceReadGroups I=SRR1976036_chr20.bam O=036_RG.bam RGID=4 RGLB=lib1 RGPL=illumina RGPU=unit1 RGSM=test

the new bam carrying the read groups is now called 036_RG.bam

So you are telling me it did succeed? and now a new file called 036_RG.bam is created? ( which is my intention.)

But i cannot find a file called 036_RG.bam that also lets me believe i did something wrong.

Log in to answer this question.