跳转至

蛋白质组学 TMT 标记定量

一句话概述

TMT(串联质量标签)是一种多重同位素标记技术,能在一次质谱实验中同时比较多达18个样本的蛋白质表达差异。


核心知识点表格

知识点说明
TMT(Tandem Mass Tag)Thermo Fisher 开发的等压标记试剂,目前最高支持 TMTpro 18-plex
iTRAQAB Sciex 开发的类似技术,支持 4-plex 和 8-plex
等压标记不同标签质量相同但碎裂后产生不同报告离子,用于定量
报告离子TMT 标签在 HCD 碎裂后释放的不同质量离子(如 126-134 Da)
共分离干扰多个肽段同时进入质谱导致定量偏差(ratio compression)
FragPipe + TMT-Integrator2026年 Nature Communications 发表,性能超越 MaxQuant 和 PD
MaxQuant免费开源蛋白组学分析工具,配合 Perseus 做统计分析
Proteome Discoverer(PD)Thermo 商业软件,GUI 友好,支持多种搜索引擎
MS2 vs MS3 定量MS3 能减少共分离干扰但灵敏度降低,MS2 更常用
标准化中位数归一化是最常用的标准化方法

白话解释原理

想象一下: 你想比较6组病人血液中蛋白质的含量差异。

传统方法:每组分别做实验,然后比较 → 批次效应大,不准确。

TMT方法:给每组样本贴不同颜色的"标签"(TMT标记),然后混在一起做一次实验 → 同一台仪器、同一次测量,结果更可比。

具体过程: 1. 6个样本的蛋白质分别用6种TMT标签标记(像给6队球员穿不同颜色球衣) 2. 混合在一起上质谱分析 3. 质谱先看到"一个球"(同一个肽段,因为标签等压) 4. 打碎这个球后,根据不同颜色碎片(报告离子)的强度来判断每组的含量


各步骤详解

第一步:实验数据格式了解

白话解释: 质谱产生的原始数据是 .raw 文件(Thermo)或 .wiff 文件(Sciex),需要用专门软件处理。

# TMT 实验原始数据结构
# project/
# ├── raw_data/
# │   ├── Fraction01.raw    # 第1个分级的原始质谱数据
# │   ├── Fraction02.raw    # 第2个分级
# │   └── ...
# ├── database/
# │   └── human_uniprot.fasta   # 蛋白质参考数据库
# └── results/
#     └── ...                    # 分析结果

# 下载人类蛋白质数据库(UniProt reviewed)
wget https://rest.uniprot.org/uniprotkb/stream?format=fasta\&query=reviewed:true+AND+organism_id:9606 \
    -O human_uniprot_reviewed.fasta  # 下载人类已审核蛋白序列

第二步:使用 FragPipe + TMT-Integrator 分析(推荐)

白话解释: FragPipe 是目前性能最好的开源 TMT 分析工具,2026年发表在 Nature Communications,比 MaxQuant 能鉴定更多蛋白。

# 1. 下载安装 FragPipe
# 访问 https://fragpipe.nesvilab.org/ 下载最新版
# FragPipe 包含 MSFragger(搜库引擎)+ Philosopher(后处理)+ TMT-Integrator

# 2. 图形界面使用流程
# a. 加载 .raw 文件
# b. 选择 workflow: TMT-10plex(或TMTpro-16plex等)
# c. 指定 FASTA 数据库
# d. 设置搜索参数:
#    - 酶: Trypsin/P
#    - 固定修饰: Carbamidomethyl (C), TMT (N-term, K)
#    - 可变修饰: Oxidation (M)
#    - 母离子容差: 20 ppm
#    - 碎片离子容差: 20 ppm
# e. 运行 → 自动完成搜库、FDR控制、定量

# 3. 命令行使用(高级用户)
# MSFragger 搜库
java -jar MSFragger.jar \
    --database_name human_uniprot.fasta \      # 蛋白数据库
    --precursor_mass_tolerance 20 \            # 母离子容差 20ppm
    --fragment_mass_tolerance 20 \             # 碎片离子容差 20ppm
    --search_enzyme_name Trypsin \             # 胰蛋白酶消化
    --num_enzyme_termini 2 \                   # 完全酶切
    *.raw                                      # 原始数据文件

第三步:使用 MaxQuant 分析(经典方法)

白话解释: MaxQuant 是最经典的蛋白组学分析软件,免费但只能在 Windows 上运行。

# MaxQuant 分析流程(图形界面)
# 1. 下载: https://www.maxquant.org/
# 2. 安装 .NET Framework(MaxQuant需要)

# 关键参数设置:
# Raw files → 添加所有 .raw 文件
# Group-specific parameters:
#   Type: Reporter ion MS2
#   TMT标签: 选择 TMT 10plex / TMTpro 16plex
#   Labels: 设置每个通道对应的样本
# Global parameters:
#   Sequences → 添加 FASTA 数据库
#   Fixed modifications: Carbamidomethyl (C)
#   Variable modifications: Oxidation (M), Acetyl (Protein N-term)
#   Min peptide length: 7
#   FDR: 0.01 (1%)

# MaxQuant 输出关键文件:
# - proteinGroups.txt   → 蛋白质水平定量结果
# - peptides.txt        → 肽段水平定量结果
# - evidence.txt        → PSM(肽段谱匹配)水平数据
# - summary.txt         → 实验总结统计

第四步:下游统计分析(R 语言)

白话解释: 搜库完成后,需要做统计分析找出差异表达的蛋白质。

# 安装必要的R包
if (!require("BiocManager")) install.packages("BiocManager")  # 安装Bioconductor管理器
BiocManager::install("limma")      # 安装差异分析包
install.packages("ggplot2")        # 安装绑图包
install.packages("pheatmap")       # 安装热图包

# 1. 读入 TMT 定量数据
library(limma)    # 加载差异分析包
library(ggplot2)  # 加载绑图包

# 读取 MaxQuant 输出的 proteinGroups.txt
data <- read.delim("proteinGroups.txt", stringsAsFactors = FALSE)  # 读取数据

# 提取 TMT 报告离子强度列(Reporter intensity corrected)
tmt_cols <- grep("Reporter.intensity.corrected", colnames(data))  # 找到TMT定量列
tmt_matrix <- as.matrix(data[, tmt_cols])  # 提取为矩阵
rownames(tmt_matrix) <- data$Protein.IDs   # 用蛋白ID作为行名

# 2. 过滤和标准化
# 去除反库(decoy)和污染蛋白
keep <- data$Reverse != "+" & data$Potential.contaminant != "+"  # 保留非反库非污染
tmt_matrix <- tmt_matrix[keep, ]  # 过滤

# 去除缺失值过多的蛋白(>50%缺失)
valid <- rowSums(tmt_matrix > 0) >= ncol(tmt_matrix) * 0.5  # 至少50%通道有值
tmt_matrix <- tmt_matrix[valid, ]  # 过滤

# log2 转换
tmt_log2 <- log2(tmt_matrix + 1)  # log2转换,+1避免log(0)

# 中位数归一化
tmt_norm <- normalizeBetweenArrays(tmt_log2, method = "quantile")  # 分位数归一化

# 3. 差异表达分析(limma)
# 设计矩阵
group <- factor(c("Control", "Control", "Control",  # 前3个通道是对照
                  "Treatment", "Treatment", "Treatment"))  # 后3个通道是处理
design <- model.matrix(~ 0 + group)  # 创建设计矩阵
colnames(design) <- levels(group)    # 设置列名

# 拟合线性模型
fit <- lmFit(tmt_norm, design)                           # 拟合模型
contrast <- makeContrasts(Treatment - Control, levels = design)  # 创建对比
fit2 <- contrasts.fit(fit, contrast)                     # 应用对比
fit2 <- eBayes(fit2)                                     # 经验贝叶斯

# 提取差异蛋白
results <- topTable(fit2, number = Inf, adjust.method = "BH")  # 所有结果
sig_proteins <- results[results$adj.P.Val < 0.05 &        # FDR < 0.05
                        abs(results$logFC) > 1, ]          # |log2FC| > 1
cat("差异蛋白数量:", nrow(sig_proteins), "\n")             # 打印数量

# 4. 火山图可视化
ggplot(results, aes(x = logFC, y = -log10(adj.P.Val))) +  # 创建火山图
    geom_point(aes(color = adj.P.Val < 0.05 & abs(logFC) > 1),  # 显著性着色
               size = 1) +                                 # 点大小
    scale_color_manual(values = c("grey", "red")) +        # 灰色和红色
    geom_hline(yintercept = -log10(0.05), linetype = "dashed") +  # FDR线
    geom_vline(xintercept = c(-1, 1), linetype = "dashed") +      # FC线
    labs(x = "log2 Fold Change", y = "-log10(FDR)",        # 轴标签
         title = "TMT差异蛋白火山图") +                     # 标题
    theme_minimal()                                        # 简洁主题

ggsave("volcano_plot.pdf", width = 8, height = 6)         # 保存图片

第五步:功能富集分析

# 使用 clusterProfiler 做 GO 和 KEGG 富集
BiocManager::install("clusterProfiler")  # 安装富集分析包
BiocManager::install("org.Hs.eg.db")     # 安装人类注释包

library(clusterProfiler)  # 加载富集分析包
library(org.Hs.eg.db)     # 加载人类注释数据库

# 提取差异蛋白的基因名
gene_list <- rownames(sig_proteins)  # 差异蛋白ID列表

# GO 富集分析
go_result <- enrichGO(
    gene = gene_list,                # 基因列表
    OrgDb = org.Hs.eg.db,           # 注释数据库
    keyType = "UNIPROT",            # ID类型
    ont = "BP",                      # 生物过程
    pAdjustMethod = "BH",           # 校正方法
    pvalueCutoff = 0.05             # p值阈值
)

# KEGG 通路富集
kegg_result <- enrichKEGG(
    gene = gene_list,                # 基因列表
    organism = "hsa",                # 人类
    pvalueCutoff = 0.05             # p值阈值
)

# 可视化
dotplot(go_result, showCategory = 15)  # GO富集点图(前15条)
barplot(kegg_result, showCategory = 10)  # KEGG富集柱状图(前10条)

常见报错与解决

报错原因解决方案
No PSMs found搜库参数设置错误检查修饰设置是否包含 TMT 标记,检查酶切设置
Low identification rate (<20%)数据库选错或数据质量差确认物种正确,检查 raw 文件是否完整
Reporter ions not detectedHCD 能量不对或标记效率低确认碎裂方式为 HCD,NCE 设为 30-35%
Ratio compression共分离干扰使用 MS3 方法或 SPS-MS3,或增加分级数
Batch effect visible in PCA不同批次间系统偏差使用 ComBat 或 limma 的 removeBatchEffect
Too many missing values蛋白丰度太低放宽过滤条件,或使用 imputation 填补缺失值

速查表

┌──────────────────────────────────────────────────────────┐
│                 TMT 蛋白组学分析速查                       │
├──────────────────────────────────────────────────────────┤
│ TMT 规格:                                                │
│   TMT 6-plex: 126-131 Da                                │
│   TMT 10-plex: 126-131 Da (含N/C同位素)                   │
│   TMTpro 16/18-plex: 126-134 Da                         │
│                                                          │
│ 分析工具选择:                                              │
│   FragPipe+TMT-Integrator — 性能最好,开源               │
│   MaxQuant — 经典免费,配 Perseus 做统计                  │
│   Proteome Discoverer — 商业GUI,Thermo官方              │
│                                                          │
│ 关键参数:                                                 │
│   酶切: Trypsin/P, max 2 missed cleavages               │
│   固定修饰: Carbamidomethyl(C), TMT(N-term, K)          │
│   可变修饰: Oxidation(M)                                 │
│   FDR: 1% (protein & peptide)                            │
│   母离子容差: 10-20 ppm                                   │
│                                                          │
│ 差异分析标准:                                              │
│   |log2FC| > 1.0(2倍变化)                                │
│   FDR < 0.05                                             │
│   至少2个唯一肽段                                         │
│                                                          │
│ 下游分析: limma → GO/KEGG → PPI 网络                     │
└──────────────────────────────────────────────────────────┘

面试高频问题

  1. TMT 和 iTRAQ 标记的区别是什么? 答:两者原理相同(等压标记),但 TMT 支持更高通量(最高18-plex vs iTRAQ 8-plex),TMT 标记效率更高(标记 N-末端和赖氨酸侧链),且 TMT 目前主流,iTRAQ 已逐渐被取代。TMT 使用 HCD 碎裂,iTRAQ 使用 HCD 或 CID。

  2. 什么是 ratio compression?怎么解决? 答:Ratio compression(比值压缩)是 TMT 定量的主要问题。原因是在 MS2 水平上,目标肽段的报告离子中混入了共分离的其他肽段的报告离子,导致定量比值被"压缩"(向1靠近)。解决方法:使用 SPS-MS3(同步前体选择-三级质谱),增加色谱分离分级数减少共洗脱,或使用计算方法校正。

  3. 蛋白组学数据分析中如何处理缺失值? 答:缺失值分为"随机缺失"(MAR,技术原因)和"非随机缺失"(MNAR,低丰度蛋白检测不到)。处理方法:(1) 过滤——去除缺失比例过高的蛋白;(2) 填补——KNN填补(适合MAR)、最小值填补(适合MNAR)、或 Perseus 的降采样高斯分布填补法。