我想找到特定十字架的所有可能配子。
例如:'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']]
此外,三杂交也没有给出我预期的结果:
>>> punnett('AaBbCc', 'AaBbCc')
[['AA', 'Aa', 'aA', 'aa', 'BB', 'Bb', 'bB', 'bb'], ['AA', 'Aa', 'aA', 'aa', 'BB', 'Bb', 'bB', 'bb', 'CC', 'Cc', 'cC', 'cc']]
如果我能得到关于我做错了什么以及如何改进它的意见,那就太好了。谢谢!