【问题标题】:Generating a Cyclic Spectrum生成循环谱
【发布时间】:2015-02-12 01:49:20
【问题描述】:

我正在尝试从我的肽生成所有循环组合的谱。

这是我的线性光谱代码:

#For example: LEQN
#L:113 E:129 Q:128 N:114
    peptide = [113,129,128,114]
        for a in peptide:
            for i in peptide[b:]:
                s+= i
                spectrum.append(s)
            s=0
            b += 1

spectrum.sort()
print spectrum

输出: [113、114、128、129、242、242、257、370、371、484]

我的代码成功添加了这些和 L(113), E(129), Q(128), N(114), LE(113+129), LEQ(113+129+128), LEQN(113+129 +128+114)、EQ(129+128)、EQN(129+128+114)、QN(128+114)

但是缺少 QNL(128+113+114)、NL(114+113)、NLE(114+113+129)

例如。 QNL 应为 128+114+113,即元素 2、3 和 1 的总和。 NL 是 114+133 是元素 3 和 0 的总和。NLE 是 113+114+129 是元素 3、0、1 的总和。

*我不需要添加 EQNL 或 QNLE,因为它们与 LEQN 完全相同。

*但是 LE=242 和 QN=242 具有相同的质量,但不是相同的东西。

预期产量: 113, 114, 128, 129, 227(N+L), 242, 242, 257, 355(Q+N+L), 356(N+L+E) ), 370, 371, 484

【问题讨论】:

  • 有点不清楚您要做什么,您能否指定预期的输出以及循环组合是什么?
  • 你不能只是串联复制肽并循环通过肽[0:4]、肽[2:6]、肽[3:6]、肽[3:7]等?
  • @heathobrien 是什么意思?好的,我添加了更多详细信息以及预期的输出。
  • 查看我的答案以了解我的意思

标签: python list bioinformatics cycle


【解决方案1】:

如果我正确理解您的问题,您需要所有可能的子列表,每个长度不超过 peptide 列表的长度以及该列表中的每个起始位置,在列表末尾环绕。一种方法是使用来自itertoolscycleislice

from itertools import cycle, islice

peptide = [113, 129, 128, 114]
spectrum = []
for num in range(1, len(peptide)):
    for start in range(len(peptide)):
        group = islice(cycle(peptide), start, start + num)
        spectrum.append(sum(group))
spectrum.append(sum(peptide)) # add the entire list only once

这样,sorted(spectrum)[113, 114, 128, 129, 227, 242, 242, 257, 355, 356, 370, 371, 484] 结束,这似乎是您想要的。

但不确定如何扩展到更长的肽列表(我假设实际上这些列表包含四个以上的元素)。

【讨论】:

    【解决方案2】:
    peptide = [113,129,128,114]
    peptide *= 2
    spectrum = []
    for i in range(len(peptide)/2):
        for j in range(i+1,i+4):
           s = 0
           for a in peptide[i:j]:
               s+= a
           spectrum.append(s)
    spectrum.sort()
    print spectrum
    

    【讨论】:

    • 诚然,这不包括整个肽段的总和
    • 如果有额外的 cmets 和解释,这段代码会更有用。
    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 2011-07-18
    • 2020-08-07
    相关资源
    最近更新 更多