作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想找到特定杂交的所有可能的配子。
例如:'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']]
如果我能得到关于我做错了什么以及如何改进的意见,那就太好了。谢谢!
最佳答案
好的,我刚刚阅读了一些有关您可能想要实现的目标的 Material ,以下是更改
>>> from itertools import product, izip
如果我理解正确的话,等位基因是忽略大小写的连续字符。如果是“AaBb”,则为 ['Aa' 和 'Bb']
>>> def allele(e):
return [list(v) for _, v in groupby(e, key = str.lower)]
交叉被定义为 Material 和亲本之间等位基因的所有可能的交叉
随后从交叉中选择新基因组
>>> def punnett(a, b):
return [''.join(e)
for e in product(*([''.join(e) for e in product(*e)]
for e in izip(allele(a), allele(b))))]
>>> punnett('AaBbCc', 'AaBbCc')
['AABBCC', 'AABBCc', 'AABBcC', 'AABBcc', 'AABbCC', 'AABbCc', 'AABbcC', 'AABbcc', 'AAbBCC', 'AAbBCc', 'AAbBcC', 'AAbBcc', 'AAbbCC', 'AAbbCc', 'AAbbcC', 'AAbbcc', 'AaBBCC', 'AaBBCc', 'AaBBcC', 'AaBBcc', 'AaBbCC', 'AaBbCc', 'AaBbcC', 'AaBbcc', 'AabBCC', 'AabBCc', 'AabBcC', 'AabBcc', 'AabbCC', 'AabbCc', 'AabbcC', 'Aabbcc', 'aABBCC', 'aABBCc', 'aABBcC', 'aABBcc', 'aABbCC', 'aABbCc', 'aABbcC', 'aABbcc', 'aAbBCC', 'aAbBCc', 'aAbBcC', 'aAbBcc', 'aAbbCC', 'aAbbCc', 'aAbbcC', 'aAbbcc', 'aaBBCC', 'aaBBCc', 'aaBBcC', 'aaBBcc', 'aaBbCC', 'aaBbCc', 'aaBbcC', 'aaBbcc', 'aabBCC', 'aabBCc', 'aabBcC', 'aabBcc', 'aabbCC', 'aabbCc', 'aabbcC', 'aabbcc']
>>> punnett('AaBb', 'AaBb')
['AABB', 'AABb', 'AAbB', 'AAbb', 'AaBB', 'AaBb', 'AabB', 'Aabb', 'aABB', 'aABb', 'aAbB', 'aAbb', 'aaBB', 'aaBb', 'aabB', 'aabb']
>>>
关于python - 旁尼特平方函数 : Matching Items in Lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170551/
我是一名优秀的程序员,十分优秀!