python中的群体遗传学建模

时间:2012-10-07 12:38:38

标签: python population genetics

所以我需要制作一个程序,用一个基因产生几代随机同等拟合理论生物的等位基因。

我从包含一个突变等位基因2的列表开始,然后我为下一代选择3个等位基因,并将它们附加到下一代的列表中

import random

p = [1,1,1,2]

from random import choice
n=len(p)-1

for i an range(n):
    p.append(choice(p))
问题是,这不会删除未选择的等位基因。 我该如何调整这个程序,以便从列表中删除未选择的等位基因?

感谢

- 修改

程序的输出看起来像这样

[1,1,1,2,1,2,1]

这将代表具有2个不同等位基因的7种生物的群体。这代表第2代,因为存在3个选择的等位基因的双等位基因。这个模拟了3个选择等位基因的2个后代。 但未选择的等位基因(在这种情况下为1)不应该存在于这一代。 所以我想知道的是如何将其从列表中删除

NB。抱歉有点啰嗦

2 个答案:

答案 0 :(得分:1)

import random 
n = 4 

A = [i for i in xrange(n)]
B = [1,1,1,2]
NextGeneration = [] 
for i in xrange(n-1):
    last = n - i - 1
    actualChoice =  random.randint(0,last)   
    NextGeneration.append(B[A[actualChoice]])  
    auxSwap = actualChoice 
    A[actualChoice] = A[last] 

答案 1 :(得分:1)

我不确定我完全理解你的问题,但这是尝试解决方案:

first_gen = [1,1,1,2]
second_gen = first_gen + random.sample(first_gen, len(first_gen)-1)

这有帮助吗?