跳转至

蛋白质组TMT标记定量

一句话概述

基于串联质量标签(TMT/iTRAQ)的多重标记定量蛋白组学分析全流程——从质谱原始数据经MaxQuant/MSFragger搜库,到蛋白定量、归一化、差异表达和功能富集分析。


核心知识点总览

知识点关键内容重要程度
TMT/iTRAQ原理等压标签/MS2报告离子定量⭐⭐⭐⭐⭐
MaxQuant搜库Andromeda引擎/蛋白鉴定⭐⭐⭐⭐⭐
MSFragger/FragPipe超快搜索/开放搜索⭐⭐⭐⭐⭐
定量归一化批次效应/通道泄漏校正⭐⭐⭐⭐
差异蛋白分析limma/MSstats统计检验⭐⭐⭐⭐
比值压缩(ratio compression)MS2 vs MS3对定量精度影响⭐⭐⭐
多重TMT实验整合桥接通道/参考通道策略⭐⭐⭐
下游功能分析GO/KEGG/蛋白互作网络⭐⭐⭐

各步骤详解

第一步:TMT定量蛋白组学原理

白话解释: TMT是一种多重标记技术——把不同样本的蛋白用不同"颜色"的标签标记(TMT6plex: 6色,TMT16plex: 16色),然后混合在一起同时质谱分析。标签设计巧妙:在MS1水平所有标签质量相同(等压),但在MS2碎裂后产生不同质量的"报告离子",通过报告离子的强度比较各样本中蛋白的相对含量。

技术细节: TMT标签结构:Reporter(质量不同) + Balancer(补偿质量) + Reactive group(与肽段氨基连接)

定量层级: - MS2定量:标准方法,报告离子在MS2谱中,有"比值压缩"问题 - MS3/SPS-MS3定量:选取MS2碎片离子再碎裂,减少co-isolation干扰,定量更准确但灵敏度降低

# TMTpro 16plex报告离子质量(m/z)——注意TMTpro与经典TMT不同
# 126.127726, 127.124761, 127.131081, 128.128116
# 128.134436, 129.131471, 129.137790, 130.134825
# 130.141145, 131.138180, 131.144500, 132.141535
# 132.147855, 133.144890, 133.151210, 134.148245

# 实验设计示例(TMT16plex)
# Channel 126: Sample_Control_1
# Channel 127N: Sample_Control_2
# Channel 127C: Sample_Control_3
# Channel 128N: Sample_Treatment_1
# ... 
# Channel 134: Pool Reference (混合样本作为参考)

第二步:MaxQuant搜库分析

白话解释: MaxQuant是蛋白质组学最常用的数据分析软件。它把质谱产生的碎片谱图与蛋白序列数据库比对,鉴定出是哪些蛋白的哪些肽段,然后从报告离子的信号强度中提取定量信息。

技术细节:

# === MaxQuant 参数设置(TMT) ===
# 在MaxQuant GUI或mqpar.xml中设置:

# 1. 搜库参数
# Database: UniProt Human reviewed (Swiss-Prot)
# Enzyme: Trypsin/P
# Max missed cleavages: 2
# Fixed modifications: Carbamidomethyl (C)
# Variable modifications: Oxidation (M), Acetyl (Protein N-term)

# 2. TMT标记设置
# Type: Reporter ion MS2 (或 MS3)
# Label: TMT16plex
# Reporter mass tolerance: 0.003 Da

# 3. FDR控制
# Peptide FDR: 0.01
# Protein FDR: 0.01
# Site FDR: 0.01

# 4. 定量设置
# Min ratio count: 2
# Match between runs: Yes (同实验批次)

# 5. 命令行运行(Linux)
mono MaxQuantCmd.exe mqpar.xml
# === MSFragger/FragPipe 搜库(更快)===

# FragPipe是包含MSFragger的GUI/CLI工具
# MSFragger速度比MaxQuant快10-100倍

# 使用fragpipe命令行
fragpipe --headless \
    --workflow TMT16 \
    --manifest manifest.fp-manifest \
    --output-dir fragpipe_output \
    --ram 32 \
    --threads 16

# manifest文件格式(指定raw文件和实验分组):
# /path/to/file1.raw    experiment1    biorep1    1
# /path/to/file2.raw    experiment1    biorep2    1

# FragPipe TMT工作流包含:
# MSFragger搜库 → Philosopher过滤 → TMT-Integrator定量

第三步:数据预处理与归一化

白话解释: MaxQuant/FragPipe输出的原始定量值还不能直接用于统计分析。需要进行质控过滤(去除污染蛋白、低质量鉴定)、缺失值处理、归一化(校正通道间系统偏差)等预处理步骤。

技术细节:

# === TMT数据预处理(R)===
library(limma)
library(NormalyzerDE)
library(tidyverse)

# 读取MaxQuant输出
protein_groups <- read.table("proteinGroups.txt", sep = "\t", header = TRUE)

# 1. 过滤
# 去除反向序列、污染物、只有一个肽段鉴定的蛋白
protein_groups <- protein_groups %>%
  filter(Reverse != "+" & Potential.contaminant != "+" & Razor...unique.peptides >= 2)

# 2. 提取报告离子强度列
reporter_cols <- grep("Reporter.intensity.corrected", colnames(protein_groups))
quant_matrix <- protein_groups[, reporter_cols]
rownames(quant_matrix) <- protein_groups$Majority.protein.IDs

# 3. Log2转换
quant_log2 <- log2(quant_matrix)
quant_log2[is.infinite(as.matrix(quant_log2))] <- NA

# 4. 过滤缺失值过多的蛋白
# 保留在至少70%样本中有定量值的蛋白
keep <- rowMeans(!is.na(quant_log2)) >= 0.7
quant_filtered <- quant_log2[keep, ]
cat(sprintf("Proteins after filtering: %d\n", nrow(quant_filtered)))

# 5. 归一化
# 方法1: 中位数归一化(每个通道减去中位数)
medians <- apply(quant_filtered, 2, median, na.rm = TRUE)
quant_norm <- sweep(quant_filtered, 2, medians - mean(medians))

# 方法2: Quantile归一化
library(preprocessCore)
quant_qn <- normalize.quantiles(as.matrix(quant_filtered))
dimnames(quant_qn) <- dimnames(quant_filtered)

# 方法3: VSN (Variance Stabilizing Normalization)
library(vsn)
quant_vsn <- normalizeVSN(2^as.matrix(quant_filtered))

# 6. 缺失值填充(可选)
library(impute)
quant_imputed <- impute.knn(as.matrix(quant_norm), k = 5)$data
# 或使用MinProb(下限填充——假设缺失是因为低丰度)
# 或使用QRILC/MLE方法

第四步:差异蛋白分析

白话解释: 归一化后,用统计方法找出在不同条件间表达量显著变化的蛋白。limma(原为转录组设计)通过经验贝叶斯方差收缩,在蛋白组学中也表现优异。MSstats则是专为蛋白组学设计的统计框架。

技术细节:

# === limma差异分析 ===
library(limma)

# 实验设计矩阵
sample_info <- data.frame(
  channel = colnames(quant_norm),
  group = c(rep("Control", 4), rep("Treatment", 4))
)
design <- model.matrix(~ 0 + group, data = sample_info)
colnames(design) <- c("Control", "Treatment")

# 对比矩阵
contrast <- makeContrasts(Treatment - Control, levels = design)

# 拟合模型
fit <- lmFit(quant_norm, design)
fit2 <- contrasts.fit(fit, contrast)
fit3 <- eBayes(fit2)

# 提取结果
de_results <- topTable(fit3, number = Inf, sort.by = "P")
de_results$protein <- rownames(de_results)

# 显著差异蛋白
sig_proteins <- de_results %>% filter(adj.P.Val < 0.05 & abs(logFC) > 0.58)
cat(sprintf("Significant DEPs: %d (Up: %d, Down: %d)\n",
            nrow(sig_proteins),
            sum(sig_proteins$logFC > 0),
            sum(sig_proteins$logFC < 0)))

# 火山图
library(EnhancedVolcano)
EnhancedVolcano(de_results, lab = de_results$protein,
                x = 'logFC', y = 'adj.P.Val',
                pCutoff = 0.05, FCcutoff = 0.58,
                title = "TMT Differential Protein Expression")
# === MSstats专用蛋白组学统计 ===
library(MSstats)

# MSstats需要特定格式输入
# 从MaxQuant的evidence.txt生成
evidence <- read.table("evidence.txt", sep = "\t", header = TRUE)
protein_groups_msstats <- read.table("proteinGroups.txt", sep = "\t", header = TRUE)

# 转换MaxQuant输出为MSstats格式
msstats_input <- MaxQtoMSstatsFormat(
  evidence = evidence,
  annotation = annotation,  # 实验设计注释
  proteinGroups = protein_groups_msstats,
  removeProtein_with1Feature = TRUE
)

# 数据处理
processed <- dataProcess(msstats_input,
                          normalization = "equalizeMedians",
                          summaryMethod = "TMP",  # Tukey's Median Polish
                          MBimpute = TRUE)

# 差异分析
comparison <- matrix(c(1, -1), nrow = 1)
rownames(comparison) <- "Treatment-Control"
colnames(comparison) <- c("Treatment", "Control")

msstats_results <- groupComparison(contrast.matrix = comparison,
                                    data = processed)

# 结果
sig_msstats <- msstats_results$ComparisonResult %>%
  filter(adj.pvalue < 0.05 & abs(log2FC) > 0.58)

第五步:功能富集与网络分析

白话解释: 找到差异蛋白后,通过GO/KEGG富集分析和蛋白互作网络(PPI)理解它们代表的生物学过程。与转录组分析类似,但蛋白组数据更直接反映功能层面的变化。

技术细节:

# === 功能分析 ===
library(clusterProfiler)
library(org.Hs.eg.db)
library(STRINGdb)

# GO/KEGG富集
up_proteins <- sig_proteins$protein[sig_proteins$logFC > 0]
down_proteins <- sig_proteins$protein[sig_proteins$logFC < 0]

# 蛋白ID转换(UniProt → ENTREZID)
up_entrez <- bitr(up_proteins, fromType = "UNIPROT",
                   toType = "ENTREZID", OrgDb = org.Hs.eg.db)

ego_up <- enrichGO(gene = up_entrez$ENTREZID,
                    OrgDb = org.Hs.eg.db, ont = "BP", pvalueCutoff = 0.05)
dotplot(ego_up, showCategory = 15, title = "Upregulated Proteins - GO BP")

# STRING蛋白互作网络
string_db <- STRINGdb$new(version = "12.0", species = 9606, score_threshold = 400)
sig_mapped <- string_db$map(sig_proteins, "protein", removeUnmappedRows = TRUE)
string_db$plot_network(sig_mapped$STRING_id[1:50])

第六步:多重TMT实验整合

白话解释: 一个TMT16plex最多16个样本。大型研究需要多个TMT实验(plex),它们之间存在批次效应。通过在每个plex中包含一个共同的"桥接通道"(bridge/reference channel),可以进行跨plex的归一化和整合。

技术细节:

# === 多plex整合 ===

# 策略:Internal Reference Scaling (IRS)
# 每个plex的bridge channel作为参考

# 假设有3个plex,每个plex的第16通道是pooled reference
plex1_quant <- quant_norm[, 1:15]  # 15个样本
plex1_ref <- quant_norm[, 16]       # reference

plex2_quant <- quant_norm2[, 1:15]
plex2_ref <- quant_norm2[, 16]

plex3_quant <- quant_norm3[, 1:15]
plex3_ref <- quant_norm3[, 16]

# IRS归一化:各plex除以自己的reference,再乘以全局reference均值
global_ref <- rowMeans(cbind(plex1_ref, plex2_ref, plex3_ref), na.rm = TRUE)

plex1_irs <- sweep(plex1_quant, 1, plex1_ref) + global_ref
plex2_irs <- sweep(plex2_quant, 1, plex2_ref) + global_ref
plex3_irs <- sweep(plex3_quant, 1, plex3_ref) + global_ref

# 合并
integrated_quant <- cbind(plex1_irs, plex2_irs, plex3_irs)

# 验证:PCA看批次效应是否消除
pca_result <- prcomp(t(integrated_quant), scale. = TRUE)
plot(pca_result$x[, 1:2], col = rep(1:3, each = 15))
# 应该按生物学分组聚类,而非按plex

第七步:结果验证与报告

白话解释: 蛋白组学结果需要多层验证:与转录组数据比较一致性、WB/PRM验证关键蛋白、功能实验确认生物学意义。

技术细节:

# === 蛋白组-转录组一致性 ===

# 合并蛋白和mRNA数据
protein_rna_merge <- merge(de_results, rna_de_results,
                            by.x = "gene_name", by.y = "gene_symbol",
                            suffixes = c("_protein", "_rna"))

# 散点图比较fold change
ggplot(protein_rna_merge, aes(x = logFC_rna, y = logFC_protein)) +
  geom_point(alpha = 0.3) +
  geom_smooth(method = "lm", color = "red") +
  geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
  labs(x = "mRNA log2FC", y = "Protein log2FC") +
  annotate("text", x = -2, y = 2,
           label = sprintf("r = %.3f", cor(protein_rna_merge$logFC_rna,
                                            protein_rna_merge$logFC_protein,
                                            use = "complete.obs")))
# 通常r = 0.4-0.6(蛋白与mRNA不完全一致是正常的)

实战命令速查

# MaxQuant命令行
mono MaxQuantCmd.exe mqpar.xml
# FragPipe
fragpipe --headless --workflow TMT16 --manifest manifest.txt --output-dir output
# R分析
# limma: lmFit → contrasts.fit → eBayes → topTable
# MSstats: MaxQtoMSstatsFormat → dataProcess → groupComparison

面试常问点

Q1: TMT的比值压缩(ratio compression)是什么?如何解决?

A: 比值压缩是MS2级别TMT定量的固有问题——在MS1窗口中共分离的非目标肽段也会产生报告离子信号,"稀释"真实比值,使得差异被低估(fold change被压缩向1)。解决方法:(1) SPS-MS3定量(选取MS2碎片再碎裂,减少干扰);(2) 减小MS1分离窗口宽度;(3) 使用compensation factor算法校正。

Q2: MaxQuant和MSFragger/FragPipe的区别?

A: MaxQuant使用Andromeda搜索引擎,运行较慢但成熟稳定,MBR(Match Between Runs)提高鉴定率。MSFragger使用fragment ion indexing策略,搜索速度快10-100倍,支持开放搜索(open search)发现未预期修饰。FragPipe集成了MSFragger+Philosopher+TMT-Integrator的完整流程。两者结果高度一致,大型数据集推荐FragPipe。

Q3: TMT实验中如何处理缺失值?

A: TMT缺失值类型:(1) MCAR(完全随机缺失)——可用KNN/SVD填充;(2) MNAR(非随机缺失,因低丰度未检测到)——应用left-censored方法(如MinProb, QRILC)。实际中通常混合两种类型。策略:先过滤缺失>50%的蛋白,再用适当方法填充剩余缺失值,或使用能处理缺失值的统计方法(如MSstats的AFT模型)。

Q4: 为什么蛋白组的fold change通常小于转录组?

A: (1) TMT的比值压缩效应天然压缩差异;(2) 蛋白翻译后调控(如降解)缓冲了mRNA变化的效果;(3) 蛋白半衰期较长,短期刺激的效果在蛋白水平被稀释;(4) 蛋白组通常用更保守的fold change阈值(如1.5倍=log2FC>0.58)。

Q5: TMT与Label-Free定量的优缺点比较?

A: TMT优势:高重复性(同一MS运行,无run间变异)、通量高(最新TMTpro可达35重)、可比性好。劣势:成本高、动态范围受限(压缩效应)、需要足量起始蛋白。Label-Free优势:动态范围大、无标记成本、样本数不限。劣势:run间变异大、需严格实验控制、定量精度依赖色谱重现性。


易错点

1. 忘记过滤反向库和污染蛋白

MaxQuant输出中标有"+"的Reverse和Potential contaminant行必须去除,否则会引入虚假的差异蛋白。

2. 归一化方法选择不当

对于TMT数据,如果样本间总蛋白量差异大(如肿瘤vs正常),总量归一化会掩盖真实差异。应先评估是否适合等量假设。

3. 忽略TMT通道泄漏(isotope impurity)

TMT标签的同位素纯度不是100%,相邻通道间有~2-5%信号泄漏。MaxQuant可自动校正(Reporter ion isotope correction),但需要提供标签的校正因子(随批次不同,Thermo提供)。

4. 多plex整合不做桥接通道

没有共同参考通道的多个TMT plex无法可靠整合。批次效应会被误认为生物学差异。实验设计时必须预留参考通道。

5. 对PSM水平定量做蛋白水平统计

应在蛋白水平(汇总所有归属肽段后)做差异分析,而非对单个PSM或肽段水平做统计后再合并。


补充知识

TMT标记发展

  • TMT6plex → TMT10plex → TMT11plex → TMTpro16plex → TMTpro18plex → TMTpro35plex
  • TMTpro 18-plex:2021年发表,最多18个样本/实验
  • TMTpro 35-plex:2024年发表(Zuniga et al., J Proteome Res),通过氘代(deuterium)引入扩展到35重,需要DISAT桥接通道策略校正氘效应

替代定量策略

  • DIA (Data-Independent Acquisition):非标记,覆盖率高
  • SILAC:代谢标记,定量最准确但限于细胞培养
  • SWATH-MS:DIA的一种实现

引用推荐

  • MaxQuant: Cox & Mann, Nature Biotechnology, 2008
  • MSFragger: Kong et al., Nature Methods, 2017
  • TMT: Thompson et al., Analytical Chemistry, 2003
  • MSstats: Choi et al., Bioinformatics, 2014