🎉 进入生物信息学的世界,与Rosalind一起探索吧!🧬
Rosalind是一个在线平台,专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战,帮助用户从基础到高级掌握生物信息学知识。无论你是初学者还是专业人士,Rosalind都能为你提供适合的学习资源和实践机会。网址:https://rosalind.info
你是否想像专业人士一样分析DNA序列?这里有一个简单的任务来帮助你入门。
📝 任务说明:
这个题目是要你计算在一群具有不同基因型的个体中,两两随机交配后,后代中表现显性性状的概率。题目给出了三种基因型的个体数量:
- k: 纯合显性个体的数量(homozygous dominant, AA)
- m: 杂合个体的数量(heterozygous, Aa)
- n: 纯合隐性个体的数量(homozygous recessive, aa)
需要计算两两随机选取个体交配后,后代表现显性性状(具有显性等位基因)的概率。
解答
可能的配对及其概率:
-
AA×AA:总是产生 AA(100% 显性)
-
AA×Aa(或 Aa×AA):产生 50% AA 和 50% Aa(100% 显性)
-
AA×aa(或 aa×AA):总是产生 Aa(100% 显性)
-
Aa×Aa:产生 25% AA、50% Aa 和 25% aa(75% 显性)
-
Aa×aa(或 aa×Aa):产生 50% Aa 和 50% aa(50% 显性)
-
aa×aa:总是产生 aa(0% 显性)
每种配对的概率计算
-
计算最终的概率:
- 最终的概率是上述每种配对概率与其产生显性表型概率的乘积之和。
def dominant_phenotype_probability(k, m, n):
# 总个体数
total = k + m + n
# 各种配对产生显性表型的概率
prob_AA_AA = (k / total) * ((k - 1) / (total - 1))
prob_AA_Aa = 2 * (k / total) * (m / (total - 1))
prob_AA_aa = 2 * (k / total) * (n / (total - 1))
prob_Aa_Aa = (m / total) * ((m - 1) / (total - 1))
prob_Aa_aa = 2 * (m / total) * (n / (total - 1))
prob_aa_aa = (n / total) * ((n - 1) / (total - 1))
# 显性表型的总概率
probability = (
prob_AA_AA * 1 +
prob_AA_Aa * 1 +
prob_AA_aa * 1 +
prob_Aa_Aa * 0.75 +
prob_Aa_aa * 0.5 +
prob_aa_aa * 0
)
return probability
def main():
# 从输入读取数据
k = int(input("请输入显性纯合体(AA)的个体数: "))
m = int(input("请输入杂合体(Aa)的个体数: "))
n = int(input("请输入隐性纯合体(aa)的个体数: "))
# 计算并打印概率
result = dominant_phenotype_probability(k, m, n)
print(f"产生显性表型后代的概率: {result:.5f}")
if __name__ == "__main__":
main()
补充
孟德尔第一定律,也称为分离律(Law of Segregation),是孟德尔在研究豌豆遗传实验时发现的基本遗传定律之一。该定律描述了在生殖细胞形成过程中,等位基因如何分离并在后代中重新组合的现象。具体内容如下:
-
等位基因分离:每个个体有一对等位基因控制某一特定性状(例如豌豆的颜色),这些等位基因在生殖细胞(配子)形成时会分离。每个配子只会携带其中一个等位基因。
-
随机组合:受精时,来自父本和母本的配子随机结合,从而形成新的基因型。这意味着后代的基因型是随机组合的,具有不同的等位基因组合。
孟德尔通过研究豌豆的性状,如花的颜色和种子的形状,发现了这种分离现象。具体来说,他注意到当他交配纯合显性个体和纯合隐性个体时,第一代子代(F1代)全部表现出显性性状,而第二代子代(F2代)则按3:1的比例分离出显性和隐性性状。
以下是对孟德尔第一定律的简要总结:
- 每个性状由一对等位基因控制。
- 在形成配子时,等位基因分离,每个配子只包含一个等位基因。
- 受精时,来自父母双方的等位基因随机结合,决定后代的基因型和表现型。