007. IPRB(Mendel's First Law)+排列組合公式

更新於 發佈於 閱讀時間約 10 分鐘

題目連結

孟德爾第一定律(Mendel's First Law),是遺傳學中的分離律

raw-image


題目輸入

2 2 2

輸出

0.78333


蛤???

當三個2擺在一起

怎麼計算也不會是這個數字吧?

raw-image


不可能,絕對不可能!

raw-image


這麼醜的數字0.78333到底是怎麼湊來的?


幾分之幾

首先,先搞清楚這個數字是哪個分數(幾分之幾)

0.78333 = 78.333% = 75% + 3.333%

換算成分數:3/4 + 1/30 = 45/60 + 2/60 = 47/60

拿計算機起來驗算一下,果真等於0.87333

raw-image



好的,心理比較有個底了,手邊已有個判斷材料


題目輸入的 2 2 2 代表 k, m, n

k individuals are homozygous dominant for a factor, m are heterozygous, and n are homozygous recessive.
  • 純顯性型(homozygous dominant):兩者均為顯性 => 顯性 x 顯性
  • 異形合子(heterozygous):兩者相異 => 顯性 x 隱性
  • 純隱性型(homozygous recessive):兩者均為隱性 => 隱性 x 隱性


也就是說,現在一個族群裡有

2個AA(顯性 x 顯性)、2個Aa(顯性 x 隱性)、2個aa(隱性 x 隱性)


計算任意交配後,子代呈現顯性的機率



機率計算

那機率怎麼計算呢?

先來計算交配方式有幾種

總共6個生物做計算,隨機挑兩個生物來交配(不重複)有幾種方式?

C6取2 => C(6,2) = 6!/2!4! = 15

總共有15種配對方式


不對啊,既然15種配對方式,那怎麼會是分數47/60,分母是60?

大腦卡了一下。哦!還要算上隱性顯性的機率

因為機率不一定都是整數(1 or 0),會有小數點的可能


棋盤方格法(或稱旁氏表、龐尼特方格, Punnett Square)若為2個Aa(顯性 x 隱性)=> 子代機率則為75%顯性、25%隱性
raw-image



好,看來現在有各式各樣的棋盤方格要來計算惹

計算交配方式的機率

但是這一步,會讓大腦很亂、難以直接計算

因為,個體總共有這麼多:
2個AA(顯性 x 顯性)、2個Aa(顯性 x 隱性)、2個aa(隱性 x 隱性)

於是先把這群生物分成三坨
第一坨A、第二坨B、第三坨C

AA => 第A坨
Aa => 第B坨
aa => 第C坨

任選兩隻生物,有可能取到:
A+A坨、A+B坨、A+C坨
B+B坨、B+A坨、B+C坨
C+C坨、C+A坨、C+B坨

整理一下、將相同的放在一起:
AA、BB、CC 以及
AB、AC、BA、BC、CA、CB


A坨生物 的視角來看

他有這些交配的選擇(最終結果就是AA一次、AB兩次、AC兩次)

raw-image

每一坨生物 的視角循環一輪後,會得出以下:

1次:AA、BB、CC

2次:AB、AC、BA、BC、CA、CB

數字加起來剛好為15(C6取2)種配對方式







接著,按照各式情境,對應的棋盤方格法

raw-image

計算後代的顯性比例(4分別對應四種底色)

AA x ?? = 100% 只要有碰到AA,後代機率一定是100%(綠色底)

Aa x Aa = 75% (藍色底)

Aa x aa = 50% (黃色底)

aa x aa = 0% (紅色底)


所以不管怎麼取,後代顯性都只會有以上四種機率


將機率帶入 配對可能性

AA、BB、CC:1次

AB、AC、BA、BC、CA、CB:2次 => 等同 AB、AC、BC 各取4次


得出這張統計表

raw-image

機率次數加總、除以總次數,就是答案了

( (100% + 75% + 0%)x1 + (100% + 100% + 50%)x4 )/ 15 = 0.78333



BUT,若換個數字

A、B、C三坨分別是:1、2、3 個 的話

次數又會有所變化

raw-image

(因為A只有一隻、不可能跟自己交配,所以AA為0次)



有沒有公式?

將以上的式子,換算成代數k, m, n套入的話,就會是這張圖表

raw-image
( (k.100%) + (m.75%) + (n.0%) 
+ (2.k.m.100%) + (2.k.n.100%) + (2.m.n.50%) ) / total(C6取2)



程式碼:

解法一 math.comb()

使用math.comb()的方法來計算排列組合、C幾取幾

import math

k, m, n = 2, 2, 2

total = math.comb(k + m + n, 2)
kk = math.comb(k, 2)
mm = math.comb(m, 2)
nn = math.comb(n, 2)

print((kk * 1 + mm * 0.75 + nn * 0 + k * m * 1 + k * n * 1 + m * n * 0.5) / total)

這樣寫雖然精簡,但可讀性不佳







另一個計算排列組合的數量,是 itertools.combinations

這是會組出所有的排列組合,而不是可能性的總數(要再len()才會是總數)

import itertools

items = ['A', 'B', 'C']

combs = list(itertools.combinations(items, 2))

print(combs) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
print(len(combs)) # 3



程式碼:

解法二 itertools.combinations

import itertools


def dominant_probability(k, m, n):
# 產出所有基因池可能性
pool = ['AA'] * k + ['Aa'] * m + ['aa'] * n # ['AA', 'AA', 'Aa', 'Aa', 'aa', 'aa']

total = 0
count = 0 # 計算顯性後代(dominant offspring)的數量

for a, b in itertools.combinations(pool, 2):
total += 1

pair = {a, b} # 用集合去重複、不管先後順序
# 1. ex: ('AA','AA') 變成 ('AA')
# 2. ex: ('AA', 'Aa') 等同於 ('Aa', 'AA')

print(pair)
if pair == {'AA'}:
count += 1
elif pair == {'Aa'}:
count += 0.75
elif pair == {'aa'}:
count += 0
elif pair == {'AA', 'Aa'}:
count += 1
elif pair == {'AA', 'aa'}:
count += 1
elif pair == {'Aa', 'aa'}:
count += 0.5

return count / total


print(dominant_probability(2, 2, 2))

集合(set)的特性是去重複、與前後順序無關

print({'AA', 'Aa'} == {'Aa', 'AA'})  # 為相同集合(set)







其實這道題也可以不用用到排列組合公式

畢竟C6取2,就是 C(6, 2) = 6x5 = 6x(6-1)


最直觀的寫法如下

程式碼:

解法三 直觀機率累加

def dominant_probability(k, m, n):
total = k + m + n

prob = 0
prob += (k / total) * ((k - 1) / (total - 1)) * 1 # AA x AA
prob += (k / total) * (m / (total - 1)) * 1 # AA x Aa
prob += (m / total) * (k / (total - 1)) * 1 # Aa x AA
prob += (k / total) * (n / (total - 1)) * 1 # AA x aa
prob += (n / total) * (k / (total - 1)) * 1 # aa x AA
prob += (m / total) * ((m - 1) / (total - 1)) * 0.75 # Aa x Aa
prob += (m / total) * (n / (total - 1)) * 0.5 # Aa x aa
prob += (n / total) * (m / (total - 1)) * 0.5 # aa x Aa
prob += (n / total) * ((n - 1) / (total - 1)) * 0 # aa x aa

return prob


print(dominant_probability(2, 2, 2))







留言
avatar-img
留言分享你的想法!
avatar-img
生物資訊實驗室
0會員
17內容數
這裡存放著滿滿的大平台!Rosalind 生物資訊解題平台的學習過程! 📢 適合對象: ✅ 想學習生物資訊的程式新手 ✅ 對Python程式有基礎,想挑戰 Rosalind 題目的解題者 ✅ 對DNA、蛋白質、基因組數據分析有興趣的人
生物資訊實驗室的其他內容
2025/04/16
題目連結 密碼子為三個鹼基一組的序列 就像把一段RNA序列拆包、逐個decode成對應的蛋白質字母 輸入 AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA 輸出 MAMAPRTEINSTRING 首先就是要建立出密碼
Thumbnail
2025/04/16
題目連結 密碼子為三個鹼基一組的序列 就像把一段RNA序列拆包、逐個decode成對應的蛋白質字母 輸入 AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA 輸出 MAMAPRTEINSTRING 首先就是要建立出密碼
Thumbnail
2025/04/06
題目連結 今天文章比較長,要冷靜忍耐一下 (文末有提到zip()與asterisk星號用法,篇幅hen長) 輸入兩基因序列,比對這兩序列中有幾個不一樣的地方。 計算兩字串不同字符的個數,這個就稱為漢明距離 (Hamming distance) 11110000 01110001
Thumbnail
2025/04/06
題目連結 今天文章比較長,要冷靜忍耐一下 (文末有提到zip()與asterisk星號用法,篇幅hen長) 輸入兩基因序列,比對這兩序列中有幾個不一樣的地方。 計算兩字串不同字符的個數,這個就稱為漢明距離 (Hamming distance) 11110000 01110001
Thumbnail
2025/04/04
題目連結 這題要我們讀入多個DNA序列(FASTA格式) 從中找出GC含量最高的那一段序列,並輸出GC含量(保留小數到第六位) 普遍稱呼「GC」而非「CG」,我也不知道為什麼 ╮(╯_╰)╭ 但讓我聯想到,GC在程式語言專指垃圾回收(Garbage Collection) 首先要
Thumbnail
2025/04/04
題目連結 這題要我們讀入多個DNA序列(FASTA格式) 從中找出GC含量最高的那一段序列,並輸出GC含量(保留小數到第六位) 普遍稱呼「GC」而非「CG」,我也不知道為什麼 ╮(╯_╰)╭ 但讓我聯想到,GC在程式語言專指垃圾回收(Garbage Collection) 首先要
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
題目連結 孟德爾第一定律(Mendel's First Law),是遺傳學中的分離律 題目輸入 2 2 2 輸出 0.78333 蛤??? 當三個2擺在一起 怎麼計算也不會是這個數字吧? 不可能,絕對不可能! 這麼醜的數字0.78333到底是怎麼湊來的? 幾
Thumbnail
題目連結 孟德爾第一定律(Mendel's First Law),是遺傳學中的分離律 題目輸入 2 2 2 輸出 0.78333 蛤??? 當三個2擺在一起 怎麼計算也不會是這個數字吧? 不可能,絕對不可能! 這麼醜的數字0.78333到底是怎麼湊來的? 幾
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 七 指派範疇是第一步, 第二步是設定推導規則。 推導規則的作用是對某一給定的表式63 進行判定,看它是否一個貫通的表式(或詞構)。就上述英語例句而言,我們只需一個簡單的單向通則 (general rule)﹕6
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 七 指派範疇是第一步, 第二步是設定推導規則。 推導規則的作用是對某一給定的表式63 進行判定,看它是否一個貫通的表式(或詞構)。就上述英語例句而言,我們只需一個簡單的單向通則 (general rule)﹕6
Thumbnail
1.0 從函數到函算語法 1.3 弗雷格的函數概念 四 有了上述的區分,我們便要承認「2」﹑「1+1」﹑「3-1」﹑「6/3」有同一指謂。思考一下  6/3。6/3 是什麼﹖有人可能說,是個商數。但  6/3  的商數是什麼﹖這時我們會說,6/3 的商數就是乘予 3 而得出 6 的那個數。
Thumbnail
1.0 從函數到函算語法 1.3 弗雷格的函數概念 四 有了上述的區分,我們便要承認「2」﹑「1+1」﹑「3-1」﹑「6/3」有同一指謂。思考一下  6/3。6/3 是什麼﹖有人可能說,是個商數。但  6/3  的商數是什麼﹖這時我們會說,6/3 的商數就是乘予 3 而得出 6 的那個數。
Thumbnail
1.0 從函數到函算語法 1.3 弗雷格的函數概念 二 公元1891年,弗雷格給〈耶拿大學醫學及自然科學協會〉(Jenaische Gesellschaft für Medizin und Naturwissenschaft) 做了個演講,講題為〈函數與概念〉(Funktion und B
Thumbnail
1.0 從函數到函算語法 1.3 弗雷格的函數概念 二 公元1891年,弗雷格給〈耶拿大學醫學及自然科學協會〉(Jenaische Gesellschaft für Medizin und Naturwissenschaft) 做了個演講,講題為〈函數與概念〉(Funktion und B
Thumbnail
5 Advice from a Caterpillar: 一個哲學問題 / 視角2 毛毛蟲的忠告 五 數學工作者書寫恆等式是尋常事﹐譬如「9 = 9」或「6 = 4+2」等。為什麼數學工作者可以這麼輕鬆地做這種陳述﹐即一個恆等式中的等號的左項與等號的右項同一或等值? 因為一個恆等式中的等號的左
Thumbnail
5 Advice from a Caterpillar: 一個哲學問題 / 視角2 毛毛蟲的忠告 五 數學工作者書寫恆等式是尋常事﹐譬如「9 = 9」或「6 = 4+2」等。為什麼數學工作者可以這麼輕鬆地做這種陳述﹐即一個恆等式中的等號的左項與等號的右項同一或等值? 因為一個恆等式中的等號的左
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法 1.2.5 弦的振動 1.2.6 熱的傳導 1.2.7 十九世紀的尾聲 三 必須說一下波希米亞數學家/邏輯學家/哲學家/神學
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法 1.2.5 弦的振動 1.2.6 熱的傳導 1.2.7 十九世紀的尾聲 三 必須說一下波希米亞數學家/邏輯學家/哲學家/神學
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法 1.2.5 弦的振動 三 1755年,歐拉改變了主意,在《微分學原理》(Institutiones calculi differen
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法 1.2.5 弦的振動 三 1755年,歐拉改變了主意,在《微分學原理》(Institutiones calculi differen
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  三 有些讀者大概都知道,微積分學有兩個分科﹕一為微分學 (differential calculus),一為積分學 (integ
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  三 有些讀者大概都知道,微積分學有兩個分科﹕一為微分學 (differential calculus),一為積分學 (integ
Thumbnail
1. 凡所有相皆是虛妄,若見諸相非相,即見如來 2. 能量看不到,卻統籌物理世界(形而上統籌形而下) 3. 數學與物理的不同:數學「定理」:絕對真理,不因時空轉換;物理「定律」:找到自然背後的律,而非證明 4. 數學的本質:建立在不能再問的「公理」上 5. 歐式平
Thumbnail
1. 凡所有相皆是虛妄,若見諸相非相,即見如來 2. 能量看不到,卻統籌物理世界(形而上統籌形而下) 3. 數學與物理的不同:數學「定理」:絕對真理,不因時空轉換;物理「定律」:找到自然背後的律,而非證明 4. 數學的本質:建立在不能再問的「公理」上 5. 歐式平
Thumbnail
冪次定律 呈現一條曲線,從左下方緩慢上升,然後迅速上升,強調了少數事件的極端值。這些極端值代表著相對較大的事件,其影響力遠遠超過了大多數事件。 馬太效應 由一個明顯的源頭開始,不斷分支出更多的線條,形成一個庞大的樹狀結構。這些分支中的一些可能變得更大,代表著成功的累積效應,符合馬太效應
Thumbnail
冪次定律 呈現一條曲線,從左下方緩慢上升,然後迅速上升,強調了少數事件的極端值。這些極端值代表著相對較大的事件,其影響力遠遠超過了大多數事件。 馬太效應 由一個明顯的源頭開始,不斷分支出更多的線條,形成一個庞大的樹狀結構。這些分支中的一些可能變得更大,代表著成功的累積效應,符合馬太效應
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News