特定の交配の可能なすべての配偶子を見つけたいです。
例: 'AABB'
x'aabb'
は と に分割され['AA', 'BB']
ます['aa', 'bb']
。私はその部分をやった。この後、以下を返す必要があります:
[['Aa', 'Aa', 'Aa', 'Aa'], ['Bb', 'Bb', 'Bb', 'Bb']]
(親「A」のすべての対立遺伝子について、親「B」の対立遺伝子と一致します。これは簡略化されたパネット スクエアです)。
これは私がこれまでに持っているものです:
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']]
私が間違っていることと、それを改善する方法について意見を得ることができれば、それは素晴らしいことです. ありがとう!