gpt4 book ai didi

python - 生成循环谱

转载 作者:行者123 更新时间:2023-12-01 04:51:02 26 4
gpt4 key购买 nike

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

这是我的线性谱代码:

#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

最佳答案

如果我正确理解你的问题,你需要所有可能的子列表,每个长度达到peptide列表的长度,并且对于该列表中的每个起始位置,环绕在列表。一种方法是使用 cycleislice来自itertools

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] ,这似乎就是你想要的。

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

关于python - 生成循环谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28467922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com