Step 9b: STR Clinical Annotation (Stranger)¶
What This Does¶
Annotates the ExpansionHunter VCF (step 9) with clinical pathogenicity status for each repeat locus. Raw repeat counts become labelled calls: normal, pre_mutation, or full_mutation, with disease name, OMIM number, inheritance mode, and the specific repeat-size thresholds used for classification.
This turns step 9 output from a table of numbers into actionable clinical calls.
Why¶
ExpansionHunter reports the number of repeats at each locus but applies no pathogenicity judgement. Stranger adds that judgement using the ClinGen/OMIM short tandem repeat database, so you can immediately see whether a repeat count falls in the normal, pre-mutation, or full-mutation range without manually cross-referencing disease thresholds.
Tool¶
- Stranger v0.10.2 (Clinical Genomics Stockholm) — annotates STR VCFs with pathogenicity labels from a curated repeat catalog covering HTT, FMR1, C9orf72, DMPK, ATXN*, RFC1, and ~40 other loci
Docker Image¶
STRANGER_IMAGE
Pinned in versions.env; Image versions lists the current tag.
- Binary:
stranger(on PATH) - Bundled repeat catalog: Stranger's GRCh38 catalog (
variant_catalog_grch38.json, installed inside the container). Stranger's own default is its GRCh37 catalog; the script and the Nextflow module pass the GRCh38 one explicitly, because ExpansionHunter (step 9) calls the GRCh38 loci
Command¶
Step 09 must run first:
A custom repeat catalog (TSV or JSON) can be supplied via the STRANGER_REPEATS environment variable; the bundled GRCh38 catalog is used when it is not set. The output is written to a temporary name and renamed when Stranger succeeds, so a failed run leaves no empty or partial VCF that a rerun would take as done.
Output¶
| File | Description |
|---|---|
expansion_hunter/<sample>_eh_stranger.vcf |
Annotated VCF with STR_STATUS and disease metadata in INFO fields |
Key INFO fields added by Stranger:
| Field | Values | Meaning |
|---|---|---|
STR_STATUS |
normal, pre_mutation, full_mutation |
Pathogenicity call for this allele |
Disease |
e.g. HD |
Disease associated with this locus |
InheritanceMode |
AD, AR, XD, XR |
Inheritance mode |
STR_NORMAL_MAX |
integer | Upper bound of normal repeat range |
STR_PATHOLOGIC_MIN |
integer | Lower bound of clearly pathogenic range |
HGNCId, Source, SourceId |
Gene and the source of the locus definition |
Runtime¶
Under 1 minute. Stranger is a pure-Python VCF annotator — it reads the VCF once and writes to stdout.
Notes¶
- Requires step 09 (ExpansionHunter) to have run first. The script exits cleanly with an informational message if the EH VCF is absent.
- The bundled catalog covers ~40 STR loci with established clinical thresholds. Custom catalogs can be used via
STRANGER_REPEATS=/path/to/catalog.tsv. STR_STATUSis per-allele: a heterozygous locus may have one normal and one pre-mutation allele.- Pre-mutation alleles at FMR1 (55-200 CGG) and ATXN1 carry carrier risk even without current disease. See
docs/interpreting-results.mdfor guidance. - Short-read WGS has limited ability to size very large expansions (>150 repeats) accurately;
full_mutationcalls at loci like FMR1 and C9orf72 should be confirmed with orthogonal methods. - RFC1 (CANVAS) is a special case — treat any flag as uninterpretable, not a diagnosis. CANVAS requires the AAGGG motif specifically, biallelic, at ~400–2000+ repeats. Short-read ExpansionHunter reports only the degenerate
AARRGmotif and cannot distinguish pathogenic AAGGG from the common benign AAAAG, and the catalog'sSTR_PATHOLOGIC_MINfor RFC1 is far below the clinical threshold — so a modest expansion (e.g. 51/73) is over-called asfull_mutation. Confirm only with motif-aware / flanking-PCR / repeat-primed-PCR testing, and only if cerebellar-ataxia/neuropathy/vestibular symptoms are present.