如何使用Python从蛋白质序列获取含漏切位点的胰蛋白酶酶切肽段
实现方案
核心逻辑
你已经获取到所有K/R的位点坐标,只需要补全序列首尾的边界,即可通过控制位点间隔实现不同次数的漏切,同时按规则提取肽段:
- 在位点列表开头补
-1,对应第一个肽段从序列起始位置开始 - 在位点列表末尾补序列总长度,对应最后一个肽段到序列末尾结束
- 漏切n次等价于间隔n个位点取切割区间,即可包含中间的n个K/R位点
完整代码示例
# 替换为你的实际蛋白序列 seq1 = "MAKELoveRProteinKTestR" # 1. 获取所有K/R的切割位点(你原有逻辑的简化写法) cut_sites = [pos for pos, char in enumerate(seq1) if char in ("K", "R")] # 补全首尾边界 cut_sites = [-1] + cut_sites + [len(seq1)] # 2. 提取指定漏切次数的肽段 max_miss_cleave = 2 # 可自行调整允许的最大漏切次数,0为完全酶切 all_peptides = [] for miss_num in range(max_miss_cleave + 1): # 遍历所有可行的起始切割位点 for i in range(len(cut_sites) - miss_num - 1): # 从当前K/R的下一位开始 start_idx = cut_sites[i] + 1 # 到漏切n个后的K/R位点结束,因Python切片左闭右开,故+1以包含末尾的K/R end_idx = cut_sites[i + miss_num + 1] + 1 # 提取肽段 peptide = seq1[start_idx:end_idx] all_peptides.append(peptide) # 输出所有肽段 print(all_peptides) # 3. 适配你已有的分子量计算函数,假设你的分子量函数为calc_mw(肽段序列) for pep in all_peptides: # mw = calc_mw(pep) # 按需处理分子量、同位素分布即可 print(f"肽段:{pep}")
注意说明
- 允许的漏切次数直接修改
max_miss_cleave参数即可,比如只需要完全酶切就设为0,最多2次漏切设为2 - 如果需要去重肽段,可在肽段收集完成后加一行
all_peptides = list(set(all_peptides)),注意set会打乱顺序,需要保留顺序可以用遍历去重的方式 - Python字符串/列表切片为左闭右开规则,所以末尾索引需要+1才能包含目标位置的K/R
内容的提问来源于stack exchange,提问作者manrai
相关产品推荐
相关产品推荐

