1
我想找到特定十字的所有可能的配子。Punnett Square功能:列表中的匹配项目
例如:'AABB'
x 'aabb'
将被拆分为['AA', 'BB']
和['aa', 'bb']
。我完成了那部分。在此之后,它应该返回: [['Aa', 'Aa', 'Aa', 'Aa'], ['Bb', 'Bb', 'Bb', 'Bb']]
(对于父'A'中的每个等位基因,它与父'B'中的等位基因匹配;这是简化的Punnett Square)。
这是我到目前为止有:
def punnett(a, b):
n = int(len(a)/2)
x = int(float(len(a))/n)
partsA, partsB, gametes = [a[i * x : i * x + x] for i in range(n)], [b[i * x : i * x + x] for i in range(n)], []
for y in range(1, n):
g = []
for index in range(0, n/2 + y):
for i in partsA[index]:
for j in partsB[index]:
g.append(i+j)
gametes.append(g)
return gametes
它不会导致我估计它会,但:
>>> punnett('AaBb', 'AaBb')
[['AA', 'Aa', 'aA', 'aa', 'BB', 'Bb', 'bB', 'bb']]
此外,trihybrid交不给结果我预料,要么:
>>> punnett('AaBbCc', 'AaBbCc')
[['AA', 'Aa', 'aA', 'aa', 'BB', 'Bb', 'bB', 'bb'], ['AA', 'Aa', 'aA', 'aa', 'BB', 'Bb', 'bB', 'bb', 'CC', 'Cc', 'cC', 'cc']]
如果我能得到什么我做错了什么,我怎么能改善它的输入,那窝很棒。谢谢!
@JBernardo请问您可以在此扩展吗?我对这些功能不是很熟悉(我以前只使用'itertools.permutations')。 – 2013-03-02 04:16:12