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
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.
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
-ind_pheno_penetrance_prob_filepheno_fileas an optional columnest_ind_pheno_penetrance_probs(or use the same commandest_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_fileinput by the user. For example, in the context of recessive disease: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.