Problem
給定同型顯性合子、異型合子、同型隱性合子的數量,求隨機配對後子代呈現顯性表徵的機率
Given: Three positive integers k, m, and n, representing a population containing k+m+n organisms: k individuals are homozygous dominant for a factor, m are heterozygous, and n are homozygous recessive.
Return: The probability that two randomly selected mating organisms will produce an individual possessing a dominant allele (and thus displaying the dominant phenotype). Assume that any two organisms can mate.
Background
- factors(遺傳因子):在孟德爾的假設中,個體的性狀透過遺傳因子傳遞。遺傳因子於個體中成對存在並且於繁衍時分離(the law of seqgregation)。分離的遺傳因子會與交配對象的遺傳因子配對而組成子代的遺傳因子,即子代會從親代各自繼承一個遺傳因子。
- homozygous(同型合子的):決定某性狀的一對遺傳因子相同
- heterozygous(異型合子的):決定某性狀的一對遺傳因子相異
- dominant(顯性):該遺傳因子決定之性狀可在異型合子個體表現
- recessive(隱性):該遺傳因子決定之性狀只在同型合子個體才會表現
- phenotype(表現型):個體的性狀類別
- genotype(基因型):個體的遺傳因子類別
Solution
子代呈現顯性表徵的機率為「1 - 子代呈現隱性表徵的機率」,
$$ P_{dom} = 1 - P_{rec}$$
而子代呈現隱性表徵有三種情形,
$P_{nn}$: homozygous recessive 個體彼此配對,子代 100% 呈隱性表徵
$P_{mm}$: heterozygous 個體彼此配對,子代 25% 呈隱性表徵
$P_{mn}$: heterozygous 個體與 homozygous recessive 個體配對,子代 50% 呈隱性表徵
子代屬於這三種情形的機率為「各類親代彼此配對的機率×隱性子代的比率」,即 $$N = k + m + n$$
$$P_{nn} = \frac{n(n-1)}{N(N-1)} * 100%$$
$$P_{mm} = \frac{m(m-1)}{N(N-1)} * 25%$$
$$P_{mn} = \frac{nm}{N(N-1)} * 2 * 50% = nm/N(N-1)$$
因此,
$$P_{rec} = P_{nn} + P_{mm} + P_{mn}$$
$$P_{dom} = 1 - \frac{n(n-1) + 0.25m(m-1) + nm)}{N(N-1)}$$
這題是單純的機率問題,僅用到 python 的四則運算。唯二要留意的是,要記得配對是從全數個體任意取二,個體總數會隨抽取下降;其次,heterozygous 個體與 homozygous recessive 個體配對有兩種可能,要計算進去。
def mendelFirstLaw (k, m, n):
N = float(k + m + n)
return 1 - ( n*(n-1) + n*m + 0.25*m*(m-1) )/( N*(N-1) )
print mendelFirstLaw(2, 2, 2)
你很厲害,我看了你的2012年的文章,過了9年,你依然在堅持著自己喜歡的東西,我是小高一,看了你的文章,覺得很欣慰吧,我從來沒有很堅持的追求任何東西,我目前要拚生奧,看了你的文章,我想說,謝謝,謝謝你給我勇氣
回覆刪除