跳转至

蛋白质翻译后修饰(PTM)分析


一句话说明

翻译后修饰(PTM)就是蛋白质翻译出来之后被"二次加工"——加个磷酸基、糖链、甲基等化学基团,改变蛋白质的功能、定位和相互作用。就像新车出厂后还要装导航、贴膜、改排气管一样。


核心知识点

要点1:常见PTM类型

PTM类型质量偏移(Da)生物学功能检测难度
磷酸化+79.966信号传导开关
泛素化+114.043(diGly)蛋白降解标记
乙酰化+42.011组蛋白修饰,基因调控
甲基化+14.016组蛋白/蛋白质功能调控高(小质量偏移)
糖基化不定蛋白质折叠、细胞识别高(异质性大)
琥珀酰化+100.016代谢调控
SUMO化大分子蛋白定位、转录调控

要点2:PTM质谱检测策略

  • Bottom-up(自下而上):蛋白酶切成肽段后检测,是主流方法
  • 优势:灵敏度高、方法成熟
  • 劣势:失去修饰位点间的组合信息
  • Top-down(自上而下):直接分析完整蛋白
  • 优势:保留完整修饰信息和组合关系(proteoform)
  • 劣势:技术难度大,只适合小蛋白
  • Middle-down:大片段分析,折中方案

要点3:数据库搜索策略

  • 固定修饰(Fixed Modification):所有指定残基都被修饰,如半胱氨酸烷基化(+57.021)
  • 可变修饰(Variable Modification):可能有也可能没有的修饰,如甲硫氨酸氧化(+15.995)
  • 搜索空间爆炸:每加一种可变修饰,搜索空间翻倍——3种可变修饰的搜索时间是0种的8倍
  • 开放搜索(Open Search):不预设修饰类型,用大质量容忍窗口(如±500 Da)搜索所有可能的修饰,工具如MSFragger

要点4:PTM分析常用工具

  • MaxQuant:支持多种PTM搜索,内置位点定位算法
  • MSFragger:超快的开放搜索引擎,适合发现未知PTM
  • pFind:支持大规模PTM搜索
  • PTM数据库
  • PhosphoSitePlus:磷酸化/乙酰化/泛素化等
  • dbPTM:综合PTM数据库
  • UniProt:蛋白注释含已知PTM信息

实战代码

# === 使用MSFragger进行开放搜索发现未知PTM ===
# MSFragger是FragPipe工具套件的核心引擎

# 1. 下载FragPipe: https://github.com/Nesvilab/FragPipe
# 包含MSFragger + Philosopher + PTM-Shepherd

# 2. 命令行运行开放搜索
java -jar MSFragger.jar \
  --database_name human_uniprot.fasta \  # 蛋白序列库
  --precursor_mass_lower -150 \          # 母离子质量偏移下限(-150 Da)
  --precursor_mass_upper 500 \           # 母离子质量偏移上限(+500 Da)
  --precursor_mass_units 1 \             # 单位:Da
  --fragment_mass_tolerance 20 \         # 碎片离子容忍度20ppm
  --output_format tsv \                  # 输出TSV格式
  sample1.mzML sample2.mzML             # 输入文件
# === PTM分析下游统计 ===
import pandas as pd
import numpy as np

# 1. 读取PTM搜索结果(以MaxQuant乙酰化位点为例)
acetyl = pd.read_csv("Acetyl (K)Sites.txt", sep="\t")

# 2. 基本过滤
acetyl = acetyl[acetyl["Reverse"] != "+"]  # 去反库
acetyl = acetyl[acetyl["Localization prob"] > 0.75]  # 高置信位点

# 3. 计算修饰化学计量比(Stoichiometry)
# 化学计量比 = 修饰肽段强度 / (修饰肽段强度 + 未修饰肽段强度)
# 反映实际修饰程度
if "Occupancy" in acetyl.columns:
    acetyl_occupied = acetyl[acetyl["Occupancy"] > 0]
    print(f"平均乙酰化占有率: {acetyl_occupied['Occupancy'].mean():.2%}")

# 4. PTM motif分析
from collections import Counter

# 提取磷酸化位点周围的序列motif(±7个氨基酸)
def extract_motif(sequence_window):
    """统计修饰位点周围的氨基酸频率"""
    if pd.isna(sequence_window) or len(sequence_window) < 15:
        return None
    return sequence_window  # 15个字符的窗口序列

motifs = acetyl["Sequence window"].apply(extract_motif).dropna()
# 统计中心位点(修饰位点)两侧的氨基酸偏好
center = 7  # 窗口中心位置
position_freq = {}
for pos in range(-3, 4):  # 分析修饰位点±3位的偏好
    aa_at_pos = [m[center + pos] for m in motifs if len(m) > center + pos]
    position_freq[pos] = Counter(aa_at_pos).most_common(3)

print("修饰位点周围氨基酸偏好:")
for pos, freq in position_freq.items():
    print(f"  位置{pos:+d}: {freq}")

面试常问点

参考答案:传统数据库搜索需要预先指定可能的修饰类型,但实际上蛋白质可能有几百种不同的修饰。开放搜索放宽母离子质量匹配的容忍窗口(如±500 Da),让算法自动发现各种修饰。MSFragger通过片段离子索引技术使开放搜索速度可接受。这对发现新修饰类型、检测化学伪影(如甲醛固定产生的加合物)特别有用。

Q2: 可变修饰设太多会怎样?

参考答案:每增加一种可变修饰,搜索空间就翻倍。比如3种可变修饰在一个肽段上有8种组合(2³),搜索时间显著增加,而且假阳性也会升高(因为候选匹配变多了)。所以一般建议可变修饰不超过3-4种,真正需要大规模PTM搜索时用开放搜索策略代替。


速查卡片

问题一句话答案
磷酸化质量偏移?+79.966 Da
泛素化残留标记?diGly(+114.043 Da),留在Lys上
固定修饰vs可变修饰?固定=所有位点都有;可变=可能有也可能没有
开放搜索用什么工具?MSFragger(FragPipe套件)
PTM化学计量比是什么?修饰肽段占总肽段的比例,反映实际修饰程度
Bottom-up vs Top-down?Bottom-up切成肽段分析主流;Top-down分析完整蛋白保留组合信息