Skip to content

Continuous age of onset in phenotype penetrance probabilities #235

@RosCraddock

Description

@RosCraddock

Goal

To increase the flexibility of the phenotype penetrance probabilities when incorporating phenotype data by allowing a continuous age of onset, rather than restricting to discrete ages.

Proposed approach

  • user inputted individual phenotype penetrance probability for each phenotype record through -ind_pheno_penetrance_prob_file
  • incorporate age (or age since minimum onset) at phenotype testing in the pheno_file as an optional column
  • estimate the individual phenotype penetrance probabilities with the command est_ind_pheno_penetrance_probs (or use the same command est_pheno_penetrance_prob).

Estimating the individual phenotype penetrance probabilities

This will have two steps. First is to estimate the three parameters of an extended Weibull model using MLE. Each set of three parameters will be conditional on the genotype state and may not be needed for all states. Which states could be captured in the pheno_penetrance_prob_file input by the user. For example, in the context of recessive disease:

P(Not diseased) P(diseased)
P(AA) 0.9 0.1
P(Aa) 0.9 0.1
P(aA) 0.9 0.1
P(aa) 1-wb wb

where wb is the code for the extended Weibull model
Open to feedback on this, too.

What is the extended Weibull model?
F(t) = (1-k)[1-exp(-𝜆⁢(t-𝛿)^𝛼)]
where,
t is the age at phenotyping
k is the probability that carrier will never develop the disease
𝜆 is the scale parameter
𝛼 is the shape parameter
𝛿 is the literature informed maximum age without clinical onset.
t and 𝛿 will be provided by the user through an adjusted age (i.e t-𝛿, or if t<𝛿 then 0) , and the parameters k, 𝜆, and 𝛼 can be estimated from the MLE:

loglikelihood = sum_ij[log(F( k, 𝜆, 𝛼 | p_ij, g_i, t_ij))+log(P(g_i | data))]

After optimising the three parameters, the second step is to reestimate the individual phenotype penetrance for all individuals with a phenotype and age at phenotyping (or adjusted age t-𝛿).

Scope

tinyhouse/pedigree.py
tinyhouse/inputoutput.py
tinyhouse/probMaths.py (function: updateGenoProbsFromPhenotype())
tinypeel.py
peelingInfo.py
peelingUpdates.py
plus additional functional and accuracy tests

Done when

All steps defined above are complete, along with appropriate testing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    taskActionable tasks

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions