这是我的问题:我有一个代表环肽的序列,我正在尝试创建一个生成所有可能的亚肽的函数。当 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。