samtools reheader - replaces the header in the input file
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(1)
Samtools website: <http://www.htslib.org/>