| qual | Yes | min, max, median and the number of records stating no QUAL. Null when nothing stated one, which is not the same as a range of zero | |
| tstv | Yes | ts, tv and ratio over every ALT, and tsFirstAlt/tvFirstAlt/ratioFirstAlt over each site’s first ALT only. Both, because bcftools reports both and a multiallelic call set makes them differ | |
| counts | Yes | records, samples, and the class tallies: snps, mnps, indels, others, noAlts, multiallelicSites and multiallelicSnpSites. A site counts in every class its alleles carry, which is how bcftools counts them | |
| filters | Yes | every FILTER value seen with its count, including PASS and the unfiltered (`.`) tally: the two are different states and are counted apart | |
| summary | Yes | the call set in one sentence, generated from this run | |
| per_contig | Yes | records, snps and indels per contig, over everything read | |
| per_sample | Yes | bcftools' PSC section per sample: refHom, nonRefHom, hets, transitions, transversions, indels, averageDepth, singletons, hapRef, hapAlt and missing | |
| not_counted | Yes | what this run could NOT count and why: `genotypesUnavailable` when the file's genotypes were not parsed (so per_sample is empty for a reason), and `badAlleleCalls` listing genotypes naming an allele their record never declares. Real bcftools stats exits on such a file rather than reporting per-sample numbers, so a non-empty list means per_sample has no bcftools counterpart to be compared against | |
| indel_lengths | Yes | indel length (ALT minus REF) to the number of sites, sorted by length: bcftools' IDD section. Negative is a deletion | |
| substitutions | Yes | the twelve directed substitution types with their counts | |