【发布时间】:2013-11-12 04:29:18
【问题描述】:
这是我的问题:我有一个代表环状肽的序列,我正在尝试创建一个生成所有可能的亚肽的函数。当 2 个氨基酸之间的键断裂时,就会产生一个亚肽。例如:对于肽“ABCD”,其亚肽将是“A”、“B”、“C”、“D”、“AB”、“BC”、“CD”、“DA”、“ABC”、 'BCD'、'CDA'、DAB'。因此,来自长度为 n 的肽的可能亚肽的数量将始终为 n*(n-1)。请注意,并非所有这些都是肽段('DA'、'CDA'...)的子字符串。
我编写了一个生成组合的代码。但是,有一些过量的元素,例如未连接的氨基酸('AC','BD'......)。有没有人暗示我如何消除这些,因为每次调用函数时肽的长度可能不同?到目前为止,这是我所拥有的:
def Subpeptides(peptide):
subpeptides = []
from itertools import combinations
for n in range(1, len(peptide)):
subpeptides.extend(
[''.join(comb) for comb in combinations(peptide, n)]
)
return subpeptides
以下是肽“ABCD”的结果:
['A', 'B', 'C', 'D', 'AB', 'AC', 'AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'ACD', 'BCD']
氨基酸的顺序并不重要,如果它们代表肽的真实序列。例如,“ABD”是“DAB”的有效形式,因为 D 和 A 在环肽中具有键。
我正在使用 Python。
【问题讨论】:
-
'DAB' 和 'ABD' 不会被认为是同一个肽吗?
-
它们被认为是相同的,因为断裂的键仍然是 C-D 和 C-B。顺序是不一样的,但因为我和他们的群众一起工作,所以这并不重要。不过观察力不错。
标签: python string substring combinations itertools