Penetrance Models¶
A penetrance model converts a hazard DataFrame (output of the hazard model) into a
MECE PenetranceTable — one row per (age band × sex × phenotype) combination —
for use by the FLB calculator.
HerediCalc ships two built-in penetrance models.
victor¶
The mathematically correct VICTOR competing-risk model.
Implements the full five-step VICTOR algorithm as described in Competing-Risk Model:
- Hardy-Weinberg correction to back-calculate carrier-free baseline rates
- All-cause hazard including OtherTrait (\(RR_g = 1\))
- All-cause survival \(S_g(a)\) at band end
- Cause-specific cumulative incidence functions (CIF)
- MECE penetrance table: affected rows as CIF increments; unaffected row as \(1 - S_g(a_1)\)
Configuration¶
plugins:
penetrance_model: victor # default — can be omitted
hazard_model: annual_rate # default — can be omitted
Plugin metadata¶
| Field | Value |
|---|---|
| Name | victor |
| Kind | penetrance_model |
| Compatible with | flb_calculator: segregatr, liability_assigner: victor_standard |
| Sub-plugins | rr_model (default: tabular), crhf_model (default: lookup) |
victor_cool3¶
COOL3-compatible VICTOR variant — for validation and comparison only.
Replicates the three systematic deviations present in COOL3 v3. See VICTOR Model Tracks for a detailed analysis.
| Deviation | Description |
|---|---|
| Tracked-only survival | OtherTrait excluded from all-cause hazard |
| Band-midpoint evaluation | Unaffected rows use \(S_g((a_0+a_1)//2)\) instead of \(S_g(a_1)\) |
| No band-width normalisation | Delegated to annual_rate_cool3 hazard model |
Use with annual_rate_cool3
victor_cool3 must be paired with annual_rate_cool3 to reproduce COOL3 output.
HerediCalc applies this automatically when hazard_model is not explicitly set.
Using victor_cool3 with annual_rate will produce internally inconsistent results.
Configuration¶
plugins:
penetrance_model: victor_cool3
# hazard_model: annual_rate_cool3 ← set automatically; explicit override possible
Or via CLI (hazard-model is set automatically by the cascade):
heredicalc run pedigree.ped \
--penetrance-model victor_cool3 \
[other options...]
Plugin metadata¶
| Field | Value |
|---|---|
| Name | victor_cool3 |
| Kind | penetrance_model |
| Default | hazard_model: annual_rate_cool3 |
| Compatible with | flb_calculator: segregatr, liability_assigner: victor_standard |
| Sub-plugins | rr_model (default: tabular), crhf_model (default: lookup) |
Comparison¶
| Feature | victor |
victor_cool3 |
|---|---|---|
| All-cause hazard | All phenotypes incl. OtherTrait | Tracked phenotypes only |
| Unaffected row | \(1 - S_g(a_1)\) (band end) | \(1 - S_g((a_0+a_1)//2)\) (midpoint) |
| Default hazard model | annual_rate |
annual_rate_cool3 |
| Scientific validity | ✅ Correct | ⚠️ COOL3-compatible only |
| Use for | Publication, analysis | Validation, COOL3 comparison |
Sub-Plugin Dependencies¶
Both penetrance models require two sub-plugins, injected automatically:
| Sub-plugin kind | Default | Purpose |
|---|---|---|
rr_model |
tabular |
Relative risk lookups by gene, sex, age, phenotype, zygosity |
crhf_model |
lookup |
Cumulative risk haplotype frequency (CRHF) per gene |
Override in config:
plugins:
params:
rr_model: tabular
crhf_model: lookup