gpt4 book ai didi

python - 罗莎琳德 "Mendel' s 第一定律“IPRB

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:33 28 4
gpt4 key购买 nike

为了准备即将到来的生物信息学类(class),我正在做一些来自 rosalind.info 的作业。我目前被困在作业“Mendel's First Law”中。

我想我可以用蛮力强制自己解决这个问题,但我的想法一定是太复杂了。我的方法是这样的:

构建一棵具有三个级别的概率树。有两种生物交配,生物 A 和生物 B。第一级是,选择生物 A 为显性纯合子 (k)、杂合子 (m) 或隐性纯合子 (n) 的概率是多少。好像以纯合子显性为例,因为一共有(k+m+n)个生物,其中k个是纯合子显性,概率是k/(k+m+n)。

然后在这棵树中,假设我们知道 A 被选为什么生物,那么在这棵树中,每一个生物 B 是 k/m/n 的概率。例如,如果生物 A 被选为杂合子 (m),则生物 B 也为杂合子的概率为 (m-1)/(k+m+n-1),因为现在只剩下一个较少的杂合子生物。

这会给出两个级别的概率,并且会涉及大量代码才能做到这一点,因为我实际上是在构建一个树结构,并且为每个分支手动编写了该部分的代码。

enter image description here

现在选择了生物A和B之后,他们每个人都有两条染色体。可以随机挑选其中一条染色体。因此,对于 A 染色体,可以选择 1 条或 2 条染色体,对于 B 也一样。所以有 4 种不同的选择:选择 A 中的 1 条,B 中的 1 条。选择 A 中的 2 条,B 中的 1 条。选择 A 中的 1 条,B 中的 2 条。选择A 的 2 个,B 的 2 个。其中每一个的概率都是 1/4。所以最后这棵树会有这些叶子的概率。

然后我会以某种方式神奇地把所有这些概率加起来,看看两种生物产生具有显性等位基因的生物的概率是多少。

我怀疑这项作业是否设计为需要数小时才能完成。我在想什么?

更新:

以最荒谬的蛮力方式解决了这个问题。只是运行了数千次模拟交配并找出最终具有显性等位基因的部分,直到有足够的精度通过分配。

import random
k = 26
m = 18
n = 25

trials = 0
dominants = 0

while True:
s = ['AA'] * k + ['Aa'] * m + ['aa'] * n
first = random.choice(s)
s.remove(first)
second = random.choice(s)
has_dominant_allele = 'A' in [random.choice(first), random.choice(second)]
trials += 1
if has_dominant_allele:
dominants += 1
print "%.5f" % (dominants / float(trials))

最佳答案

具有显性等位基因的物种是 AAAa

您的总种群(k + n + mk (hom) 具有AA 的纯合显性生物体组成>, m (het) 具有Aan (rec ) 带有 aa 的纯合隐性生物。其中每一个都可以与任何其他生物交配。

具有显性等位基因的生物的概率是:

P_dom = n_dominant/n_total or 1 - n_recessive/n_total

为这些组合中的每一个做 Punnett 平方是个不错的主意:

  hom + het

| A | a
-----------
A | AA | Aa
a | Aa | aa


het + rec

| a | a
-----------
A | Aa | Aa
a | aa | aa

显然,两种生物的交配可能会产生四个 child 。 hom + het 产生 4 个具有隐性等位基因的生物体中的 1 个,het + rec 产生 4 个具有隐性等位基因的生物体中的 2 个隐性等位基因。

您可能还想对其他组合执行此操作。

由于我们不只是一对一地交配生物,而是将整个 k + m + n 群放在一起,因此后代总数和具有特定特征的“ child ”数量等位基因很高兴知道。

如果您不介意使用一点 Python,scipy.misc 中的 comb 在这里可能会有帮助。在计算中,不要忘记 (a) 您从每个组合中得到 4 个子代,并且 (b) 您需要一个因子(来自 Punnett 平方)来确定隐性(或显性)后代来自组合。

更新

    # total population
pop_total = 4 * comb(hom + het + rec, 2)

# use PUNNETT squares!

# dominant organisms
dom_total = 4*comb(hom,2) + 4*hom*het + 4*hom*rec + 3*comb(het,2) + 2*het*rec

# probability for dominant organisms
phom = dom_total/pop_total
print phom

# probability for dominant organisms +
# probability for recessive organisms should be 1
# let's check that:
rec_total = 4 * comb(rec, 2) + 2*rec*het + comb(het, 2)
prec = totalrec/totalpop
print 1 - prec

关于python - 罗莎琳德 "Mendel' s 第一定律“IPRB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25119106/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com