use*_*164 7 python probability bioinformatics rosalind
我正试图在http://rosalind.info/problems/iprb/解决问题
鉴于:三个正整数
k,m和n代表含有k+m+n生物的群体:k个体是一个因子的纯合优势,m是杂合的,并且n是纯合的隐性.返回:两个随机选择的交配生物将产生具有显性等位基因的个体(从而显示显性表型)的概率.假设任何两种生物都可以交配.
我的解决方案适用于样本,但不适用于生成的任何问题.在进一步研究之后,似乎我应该找到随机选择任何一个生物体的概率,找到选择第二个生物体的概率,然后是产生后代与显性等位基因的配对概率.
我的问题是:我的代码在下面找到了什么概率?是否找到了所有可能交配的具有显性等位基因的后代的百分比 - 因此,如果对所有对进行测试,我的代码是否正在解决具有显性等位基因的后代的百分比?
f = open('rosalind_iprb.txt', 'r')
r = f.read()
s = r.split()
############# k = # homozygotes dominant, m = #heterozygotes, n = # homozygotes recessive
k = float(s[0])
m = float(s[1])
n = float(s[2])
############# Counts for pairing between each group and within groups
k_k = 0
k_m = 0
k_n = 0
m_m = 0
m_n = 0
n_n = 0
##############
if k > 1:
k_k = 1.0 + (k-2) * 2.0
k_m = k * m
k_n = k * n
if m > 1:
m_m = 1.0 + (m-2) * 2.0
m_n = m * n
if n> 1:
n_n = 1.0 + (n-2) * 2.0
#################
dom = k_k + k_m + k_n + 0.75*m_m + 0.5*m_n
total = k_k + k_m + k_n + m_m + m_n + n_n
chance = dom/total
print chance
Run Code Online (Sandbox Code Playgroud)
看着你的代码,我很难弄清楚它应该做什么。我将在这里解决这个问题。
让我们简化一下措辞。有 n1 类型 1、n2 类型 2 和 n3 类型 3 项目。
有多少种方法可以从所有物品中选择一套尺寸为 2 的物品?(n1 + n2 + n3) 选择 2。
每对项目都具有与以下六个无序多重集之一相对应的项目类型:{1,1}、{2,2}、{3,3}、{1,2}、{1,3}、{2 ,3}
有多少个 {i,i} 形式的多重集?你选择2。
有多少个 {i,j} 形式的多重集,其中 i != j?尼 * 新泽西州。
因此,六个多重集的概率如下:
这些总和为 1。请注意,对于 X > 1,[X 选择 2] 只是 [X * (X - 1) / 2];对于 X = 0 或 1,则为 0。
返回:两个随机选择的交配生物体产生具有显性等位基因(并因此显示显性表型)的个体的概率。
要回答这个问题,您只需确定六个多重集中的哪一个对应于该事件。由于缺乏遗传学知识来回答这个问题,我将把这个问题留给你。
例如,假设如果两个父母中的任何一个为 1 型,则产生显性等位基因。那么感兴趣的事件为 {1,1}、{1,2}、{1,3},事件的概率为 P ({1,1}) + P({1,2}) + P({1,3})。