This is a test version of Biostars. For the public version, visit https://www.biostars.org.
[samtools reheader] Can't change chromosome name

I have a BAM file (containing reads mapped to only one chromosome), that has a very long header. I need to replace the long header of the chromosome by "chrM" and did the following:

samtools view -H my.bam > header.sam
sed "s/longheader/chrM/" header.sam > header_corrected.sam # (longheader stands for the long header..)
samtools reheader header_corrected.sam my.bam

Both header.sam and header_corrected.sam have the appropriate header. This query doesn't work and only displays a bunch of unreadable characters just as is I didn't use samtools to read the bam file.. what's wrong with my query? Is there another way to substitute "longheader" with "chrM"?

samtools bam reheader

1 answer

My guess would be that samtools reheader outputs a bam file which is a binary representation of the text from a sam file. That is why you're getting all those unreadable characters on your screen. To test this out try to redirect the output to a file and then use samtools view to see the text representation.

$ samtools reheader header_corrected.sam my.bam >new.bam
$ samtools view new.bam

Your guess is correct. Samtools will never modify a file in place, since that would almost certainly lead to a corrupted file.

It worked well, thanks :)

Log in to answer this question.