如何从代表环肽的字符串中生成子肽(特殊组合)?

2024-05-16 19:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是:我有一个代表一个环状肽的序列,我试图创建一个能产生所有可能的亚肽的功能。当两个氨基酸之间的键被破坏时,就会产生一个亚肽。例如:对于肽“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”的结果:

^{pr2}$

氨基酸的顺序并不重要,如果它们代表一个真正的肽序列。例如,“ABD”是“DAB”的有效形式,因为D和a在环肽中有键。在

我用的是Python。在


Tags: in功能forab代表序列daabcd
3条回答

你可以用这个

>>>aa='ABCD'
>>> F=[]
>>> B=[]
>>> for j in range(1,len(aa)+1,1):
for i in range(0,len(aa),1):
    A=str.split(((aa*j)[i:i+j]))
    B=B+A
    C=(B[0:len(aa)*len(aa)-len(aa)+1])

它给你:

C=['A'、'B'、'C'、'D'、'AB'、'BC'、'CD'、'DA'、'ABC'、'BCD'、'CDA'、'DAB'、'ABCD']

我希望这有帮助,顺便说一句,我也在做coursera课程,如果有兴趣的话,请告诉我

可能更容易生成它们:

def subpeptides(peptide):
    l = len(peptide)
    looped = peptide + peptide
    for start in range(0, l):
        for length in range(1, l):
            print(looped[start:start+length])

它给出了:

^{pr2}$

(如果您想要一个列表而不是打印,只需将print(...)更改为yield ...,您就有了一个生成器)。在

上面所做的只是列举第一个键可能断裂的不同位置,然后是在一个、两个或三个(在这种情况下)酸之后下一个键断裂时,你会得到不同的产物。looped只是一种简单的避免“循环”逻辑的方法。在

上学期没来 你可以使用下面的代码

def subpeptides(peptide):
    l = len(peptide)
    ls=[]
    looped = peptide + peptide
    for start in range(0, l):
        for length in range(1, l):
            ls.append( (looped[start:start+length]))
    ls.append(peptide)
    return ls

相关问题 更多 >