samtools reheader [-iP] [-c CMD | in.header.sam ] in.bam
Replace the header in in.bam with the header in in.header.sam. This command is much faster than replacing the header with a BAM→SAM→BAM conversion.
By default this command outputs the BAM or CRAM file to standard output (stdout), but for CRAM format files it has the option to perform an in-place edit, both reading and writing to the same file. No validity checking is performed on the header, nor that it is suitable to use with the sequence data itself.
- -P, --no-PG
Do not add a @PG line to the header of the output file.
- -i, --in-place
Perform the header edit in-place, if possible. This only works on CRAM files and only if there is sufficient room to store the new header. The amount of space available will differ for each CRAM file.
- -c, --command CMD
Allow the header from in.bam to be processed by external CMD and read back the result. When used in this manner, the external header file in.header.sam has to be omitted.
CMD must take the original header through stdin in SAM format and output the modified header to stdout. CMD is passed to the system's command shell. Care should be taken to ensure the command is quoted correctly to avoid unwanted shell expansions (for example of $ variables).
CMD must return an exit status of zero.
Remove comment lines
samtools reheader -c 'grep -v ^@CO' in.bam
Add “Chr” prefix to chromosome names. Note extra backslashes before dollar signs to prevent unwanted shell variable expansion.
samtools reheader -c 'perl -pe "s/^(@SQ.*)(\tSN:)(\d+|X|Y|MT)(\s|\$)/\$1Chr\$2\$3/"' in.bam
Remove “Chr” prefix
samtools reheader -c 'perl -pe "s/^(@SQ.*)(\tSN:)Chr/\$1\$2/"' in.bam
Written by Heng Li with modifications by James Bonfield and Valeriu Ohan, all from the Sanger Institute.
Samtools website: <http://www.htslib.org/>