Skip to content

BAM tags

Every per-read tag FiberHMM writes. Intervals are 0-based in the molecular frame (in MA strings the start is written 1-based). The meaning of the scores is explained in Annotations and scores.

Footprint calls

Written by fiberhmm-call, fiberhmm-apply (legacy tags, plus MA nuc/msp groups on reads that already carry DddA island groups), fiberhmm-recall-tfs/-recall-nucs, and the joint recall of fiberhmm-pair/fiberhmm-merge --recall.

Tag Type Content
ns / nl B:I nucleosome starts / lengths; with --downstream-compat also TF calls
as / al B:I MSP starts / lengths (fiberhmm-apply --no-msps omits them)
nq B:C one byte per ns entry: with nucleosome recall the LLR ×10 (0 = unresolved); otherwise the HMM posterior mean ×255 (--scores), the input's nq, or 0
aq B:C one byte per MSP: mean HMM posterior P(accessible) over the MSP ×255 (high = confidently accessible); only fiberhmm-apply --scores
MA Z molecular annotations (groups below)
AQ B:C quality bytes of every MA annotation, in MA order
AN Z one name per MA annotation (. for unnamed); written when a call wraps a circular origin (fhw_*), for strand-rescue roles, consensus class tokens, or when preserved groups carry names
hl i 1 on reads written by fiberhmm-apply --harmonize-legacy-tags (opt-in): ns/nl hold only the nucleosomes of the MA view, not every HMM footprint, so fiberhmm-recall-tfs/-nucs refuse the read. A later run removes it only when it replaces ns/nl (call, apply, recall, duplex joint recall); a run that leaves ns/nl in place, such as an MA-only write, keeps it

FiberHMM also reads fibertools-rs 0.13+ Ma/Aq/An tags (same spec, always molecular frame) as input; it never writes them. See Coordinate frames.

--no-legacy-tags writes only MA/AQ (existing legacy tags are left as they were); --downstream-compat writes TF calls into ns/nl and no MA/AQ/AN. Records a run skips are written without this run's call tags; DddA island groups are kept.

MA groups

Group AQ bytes Written by Meaning
nuc.QQQ nq, el, er nucleosome recall (fiberhmm-call default, recall-nucs, duplex recall) recalled nucleosomes
nuc.Q nq recall-tfs, call --no-recall-nucs nucleosomes without recall
msp. — all callers methylase-sensitive patches
tf.QQQ tq, el, er all callers TF / Pol II and other sub-nucleosomal footprints
ddda_mcg. — fiberhmm-tag-m5c, fiberhmm-call-m5c --tag-bam whole CpG island, confidently methylated on this molecule
ddda_ucg. — same whole CpG island, confidently unmethylated (the CpG-aware recall whitelist)
deam+ / deam- — fiberhmm-pair merge CT- and GA-source aligned coverage of a joint duplex molecule
nuc_sr.QQQ, tf_sr.QQQ q0, q1, q2 fiberhmm-strand-rescue-annotate strand-rescue shadow layers (Strand rescue)
tf_sr.QQQQQ as above plus fi, fq fiberhmm-tag-consensus family slot (0 = unassigned) and assignment confidence ×255
tf_consensus.QQQQQQ tq, fi, fq, op, sq, q0 fiberhmm-consensus, fiberhmm-transfer native TF calls labelled with their class (Consensus)
tf_recaller.QQQQQQ tq, fi, tier, q0, lr, rr fiberhmm-consensus --bam-recaller-layer the lattice recaller's own class calls
tf_cross_consensus.QQQQQQ as tf_consensus fiberhmm-consensus --engine staged_native_families (XCR) deprecated staged engine

The strand field of every FiberHMM group is ., except the duplex coverage groups of fiberhmm-pair, whose strand is + (deam+, CT source) or - (deam-, GA source). ddda_mcg+/- and ddda_mcg_hemi+/- from older experimental per-CpG callers are still read but no longer written.

Quality bytes

Byte Scale
tq min(255, round(10 × LLR)); 23 points = one order of magnitude in likelihood ratio
nq as tq for recalled nucleosomes (0 = unresolved)
el, er round(255 × max(0, 1 − ambiguity_bp / 30)), molecular left / right edge
q0, q1, q2 (strand rescue) linear 0–255 probabilities; see Strand rescue
fi family / class slot, 1–255 (0 = none)
fq assignment confidence ×255 (0 = unavailable in consensus exports)
op informative opportunities in the call
sq DAF core protection ceiling of the molecule (1 + LLR × 10)
q0 (consensus) lattice recaller: the molecule's EM class posterior ×255; staged engine: the class's share of the call's evidence ×255
tier 1 core, 2 edge, 3 loose
lr, rr left / right edge-range width in bp (0 = exact edge), saturated at 255

DAF tags

Tag Type Writer Content
st Z fiberhmm-daf-encode conversion flavour: CT or GA; SEQ then carries Y/R codes. fiberhmm-call's one-pass DAF path derives the flavour internally and does not write it
di i fiberhmm-dedup, integrated dedup duplicate-cluster id, on every member of a cluster of two or more
ds i same cluster size (copies of the molecule in the input)

Duplicates are also flagged 0x400 (standalone --flag-only, and the integrated default); a collapse keeps only the representative, which keeps di/ds.

Duplex pairing tags

Tag Type On Content
mt A source reads P pair member, U had candidates but failed, . no opposite-flavour candidate
mp Z pair members the mate's query name
pm A pair members, joint molecule route: S sequence, D sequence-free model (F: pre-3.0 footprint pairer)
pa A sequence pairs R reciprocal, C constrained 2×2
sb i sequence pairs shared reference-A/T bases
sd i sequence pairs differences at those bases
sr i sequence pairs difference rate ×1,000,000
sg i sequence pairs assignment margin ×1,000,000
mc i sequence pairs (optional) nucleosome dyad correlation ×1000
dm i model pairs decision score ×1000
mg i model pairs reciprocal decision margin ×1000
mv Z model pairs model identifier
cs Z joint molecule source names, <ct_name>;<ga_name>
dc i joint molecule deamination count (C→T and G→A)
bc i joint molecule source-base conflicts written as N

The joint molecule (<ct_name>.cs) has no mt/mp and carries its route's evidence tags.

Tags FiberHMM reads

Tag Used for
MM/ML (or Mm/Ml) m6A (A+a, T-a), 5mC and dU calls; ?-mode unlisted bases are unknown, not unmodified
MD DAF deaminations when SEQ has no R/Y
MN detects hard-clipped records whose MM/ML cannot match SEQ
st DAF flavour of R/Y-encoded reads
HP, PS copied by fiberhmm-extract --haplotype-fields
ns/nl/as/al, MA/AQ/AN input footprints for recall, extraction, QC and every downstream command