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