Manual page from samtools-1.18
released on 25 July 2023


samtools calmd – calculates MD and NM tags


samtools calmd [-Eeubr] [-C capQcoef] aln.bam ref.fasta


Generate the MD tag. If the MD tag is already present, this command will give a warning if the MD tag generated is different from the existing tag. Output SAM by default.

Calmd can also read and write CRAM files although in most cases it is pointless as CRAM recalculates MD and NM tags on the fly. The one exception to this case is where both input and output CRAM files have been / are being created with the no_ref option.

Note that some aligners do not include sequence or confidence values in secondary and supplementary alignment records. Where this happens in SAM files, a “*” character will be seen in the SEQ and QUAL columns. These records will be skipped, as it is not possible to recalculate the MD and NM tags without access to the query sequence. samtools calmd will emit a warning if any records have been skipped for this reason.

Calmd works best on position-sorted input files, as with these it can stream through the reference sequence and so doesn't have to store much reference data at any one time. For other orderings, it may have to switch to a caching mode which keeps the reference sequences in memory. This will result in calmd using more memory (up to the full size of the reference) than it would in the position-sorted case. Note also that versions of samtools calmd up to 1.16.1 should only be used on position sorted inputs as they could be very slow when run on other orderings.



When used jointly with -r this option overwrites the original base quality.


Convert a the read base to = if it is identical to the aligned reference base. Indel caller does not support the = bases at the moment.


Output uncompressed BAM


Output compressed BAM


Coefficient to cap mapping quality of poorly mapped reads. See the mpileup command for details. [0]


Compute the BQ tag (without -A) or cap base quality by BAQ (with -A).


Extended BAQ calculation. This option trades specificity for sensitivity, though the effect is minor.


Do not add a @PG line to the header of the output file.

-@, --threads INT

Number of input/output compression threads to use in addition to main thread [0].



Written by Heng Li from the Sanger Institute.


samtools (1), samtools-mpileup (1)

Samtools website: <>