首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从代表环肽的字符串中生成亚肽(特殊组合)?

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

Stack Overflow用户
提问于 2013-11-01 00:17:36
回答 3查看 1.1K关注 0票数 3

这是我的问题:我有一个代表环状肽的序列,我试图创建一个函数来生成所有可能的子肽。当两个氨基酸之间的键被破坏时,就会产生一个亚肽。例如,肽'ABCD‘的亚肽为'A’、'B‘、'C’、'D‘、'AB’、'BC‘、'CD’、'DA‘、'ABC’、'BCD‘、'CDA’、民建联。因此,从长度为n的肽中可能产生的亚肽的数量总是n*(n-1)。请注意,并非所有这些都是来自肽('DA',‘CDA’.)的子串。

我写了一段代码来生成组合。然而,也有一些过量的元素,如不相连的氨基酸('AC',‘BD’.)。有没有人暗示我如何消除这些,因为肽可能有一个不同的长度,每次调用该函数?到目前为止,我的情况如下:

代码语言:javascript
复制
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’的结果:

代码语言:javascript
复制
['A', 'B', 'C', 'D', 'AB', 'AC', 'AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'ACD', 'BCD']

如果氨基酸代表肽的真正序列,那么氨基酸的顺序就不重要了。例如,由于D和A在环肽中有一个键,所以'ABD‘是一种有效的’民建联‘形式。

我在用Python。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-01 00:36:23

简单地生成它们可能更容易:

代码语言:javascript
复制
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])

这意味着:

代码语言:javascript
复制
>>> subpeptides("ABCD")
A
AB
ABC
B
BC
BCD
C
CD
CDA
D
DA
DAB

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

上面所做的就是列举出第一个键可能被破坏的不同地方,然后是当下一个键在一、二或三种酸(在这种情况下)发生断裂时,你会得到的不同的产品。looped只是一种简单的方法,可以避免“循环”的逻辑。

票数 6
EN

Stack Overflow用户

发布于 2013-11-27 20:23:13

错过了最后一个学期,您可以使用下面的代码

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-12-05 17:41:17

你可以用这个

代码语言:javascript
复制
>>>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',‘民建联’,'ABCD‘

我希望这对我有帮助,顺便说一句,如果有兴趣的话,让我知道,我也在修课程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19718853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档