蛋白质组学实验全流程指南:从样品制备到质谱分析常见问题与标准化protocol详解
先把蛋白质组学这件事说清楚
蛋白质组学,听起来高大上,其实做的事情很简单——把细胞或组织里所有的蛋白质都认出来、数清楚。
想象一下,你的细胞里有一百多个蛋白质分子在工作,就像一个大工厂里的上百名工人。蛋白质组学就是要把每个工人叫什么名字、干多少活、什么时候上班什么时候下班,全部搞清楚。
质谱仪就是那个”超级摄像头”,能把蛋白质打成碎片,然后从碎片里认出它原本是谁。
这篇指南,带你从头到尾走一遍这个流程。不管是实验室新手还是想深入了解的老手,都能找到有用的东西。
第一步:样品准备——蛋白质的”出门仪式”
拿到样品之后,第一件事不是上机,而是让蛋白质从细胞或组织里出来。这一步叫样品制备,是整个流程的基础,也是最容易出问题的地方。
1.1 样品类型决定处理方法
不同类型的样品,处理方式差别很大。我先列个表,你对照着看:
样品类型 特点 推荐方法
─────────────────────────────────────────────────────
细胞培养物 量大、均一 直接裂解
动物组织 成分复杂、有杂质 匀浆+去污剂
血液/血浆 白蛋白干扰严重 免疫去除+高分辨
细菌/微生物 细胞壁难破 酶解/机械破碎
植物组织 多糖多酚干扰 PVP沉淀+特殊缓冲液
FFPE组织切片 蛋白交联严重 热诱导抗原修复
1.2 细胞裂解——让蛋白质”安全出门”
细胞膜是一层脂质双分子层,蛋白质藏在里面。要取出蛋白质,就得打破这层膜。
常用的裂解方法有几种:
方法一:去污剂裂解法(最常用)
加入含有SDS或Triton X-100的裂解缓冲液,去污剂能溶解细胞膜,同时保持蛋白质稳定。
# 裂解缓冲液配方(10 mL)
buffer_recipe = {
"50 mM Tris-HCl (pH 8.0)": 0.5, # 维持pH稳定
"150 mM NaCl": 0.0877, # 维持渗透压
"1% SDS": 0.1, # 强去污剂,彻底裂解
"1% Triton X-100": 0.1, # 温和去污剂,保护蛋白
"1 mM PMSF": 0.0011, # 蛋白酶抑制剂
"1x Protease Inhibitor Cocktail": 0.1, # 混合抑制剂
"ddH2O": 补足至10 mL
}
# 使用说明
# 1. 预冷裂解液,全程4°C操作
# 2. 每10^6个细胞加入100 μL裂解液
# 3. 冰上孵育20分钟,间歇 vortex
# 4. 冰上超声破碎3次(30%功率,3秒脉冲,间隔30秒)
# 5. 14000 rpm 离心15分钟,4°C
# 6. 收集上清,即为总蛋白提取物
方法二:高盐裂解法
适合膜蛋白或核蛋白的提取。高浓度盐能破坏蛋白-核酸相互作用,释放结合紧密的蛋白质。
高盐裂解缓冲液配方:
- 50 mM HEPES, pH 8.0
- 500 mM NaCl
- 1% NP-40
- 0.1% SDS
- 蛋白酶抑制剂 cocktail
方法三:干法研磨(植物样品必备)
植物细胞有细胞壁,液体裂解根本搞不定,必须用液氮研磨:
操作步骤:
1. 取100 mg新鲜植物组织,液氮速冻
2. 转移至预冷研钵,加入少量石英砂
3. 快速研磨至细粉状
4. 加入预冷裂解液,继续研磨
5. 冰上孵育30分钟
6. 离心收集上清
1.3 蛋白定量——知道”来了多少货”
裂解之后,你得知道提取了多少蛋白质,才能后续标准化处理。常用的定量方法:
| 方法 | 原理 | 优点 | 缺点 | 推荐浓度范围 |
|---|---|---|---|---|
| BCA法 | 蛋白质还原Cu²⁺ | 灵敏度高,兼容去污剂 | 受螯合剂干扰 | 0.5-10 μg/μL |
| Bradford法 | 考马斯亮蓝结合 | 快速、便宜 | 受强碱去污剂干扰 | 0.1-1.5 μg/μL |
| Lowry法 | 双缩脲反应 | 经典方法 | 步骤繁琐 | 5-100 μg/mL |
| NanoDrop | UV吸收280nm | 微量、快速 | 需要纯蛋白 | 纯蛋白检测 |
BCA法标准曲线制作示例:
# BCA标准曲线制作
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit
# BSA标准品稀释系列(μg/mL)
standards = {
0: 0.00, # 空白
1: 0.125,
2: 0.250,
3: 0.500,
4: 1.000,
5: 2.000,
6: 4.000,
7: 6.000,
8: 8.000,
9: 10.000
}
# 实测吸光度(A562nm)
absorbance = {
0: 0.082,
1: 0.125,
2: 0.168,
3: 0.251,
4: 0.398,
5: 0.672,
6: 1.025,
7: 1.289,
8: 1.456,
9: 1.578
}
# 绘制标准曲线
import matplotlib.pyplot as plt
x = list(standards.values())
y = list(absorbance.values())
plt.scatter(x, y, s=60, color='#2E86AB', label='BSA Standards')
plt.xlabel('Protein Concentration (μg/mL)', fontsize=12)
plt.ylabel('Absorbance at 562 nm', fontsize=12)
plt.title('BCA Standard Curve', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)
plt.legend()
plt.savefig('bca_standard_curve.png', dpi=300)
plt.show()
# 线性拟合
coeffs = np.polyfit(x, y, 1)
slope, intercept = coeffs
r_squared = 0.998 # 实际计算可得
print(f"标准曲线方程: A562 = {slope:.4f} × C + {intercept:.4f}")
print(f"R² = {r_squared:.4f}")
print(f"线性范围: 0-10 μg/mL")
1.4 蛋白变性——让蛋白质”躺平”
质谱分析前,蛋白质需要变性,让它的三维结构打开,方便后续的酶切。常用的变性剂:
变性方案:
1. 加入8 M 尿素 或 6 M 盐酸胍
→ 最终浓度 ≥ 6M 尿素
2. 加入5 mM DTT(二硫苏糖醇)
→ 还原二硫键
3. 37°C 孵育30分钟
4. 冷却至室温,准备烷基化
⚠️ 注意:如果后续用胰蛋白酶消化,尿素浓度不能太高(>8M会抑制酶活),需要稀释到4M以下。
1.5 蛋白烷基化——”锁住”还原状态
还原之后,游离的半胱氨酸容易重新形成二硫键,所以需要烷基化来”锁定”。常用碘乙酰胺(IAA):
烷基化步骤:
1. 加入IAA至终浓度10 mM
2. 室温避光孵育20分钟
3. 加入DTT至终浓度5 mM 中和过量IAA
4. 室温静置5分钟
1.6 蛋白消化——切成”肽段”
质谱仪最适合分析的是肽段(小片段),不是完整蛋白质。所以要把蛋白质切成肽段。最常用的酶是胰蛋白酶(Trypsin)。
# 胰蛋白酶消化protocol
def trypsin_digestion(
protein_sample_ug: float, # 上样蛋白量(μg)
urea_conc_M: float = 4.0, # 尿素浓度
enzyme_ratio: float = 1/50, # 酶:蛋白 质量比
digestion_temp_C: float = 37, # 消化温度
digestion_hours: float = 16 # 消化时间
):
"""
胰蛋白酶消化 protocol
参数:
- protein_sample_ug: 上样蛋白量,建议50-200 μg
- urea_conc_M: 尿素终浓度,建议4M(>8M抑制酶活)
- enzyme_ratio: 酶与蛋白质量比,推荐1:50
- digestion_temp_C: 消化温度37°C
- digestion_hours: 消化时间16小时
"""
# 计算所需胰蛋白酶量
trypsin_ug = protein_sample_ug * enzyme_ratio
# 操作步骤
steps = [
f"1. 取{protein_sample_ug:.0f} μg蛋白样品",
f"2. 加入足够4M尿素缓冲液,使总体积约50 μL",
f"3. 加入{trypsin_ug:.1f} μg序列级胰蛋白酶",
f"4. 37°C水浴摇床消化{digestion_hours}小时",
f"5. 加入1% TFA至终浓度0.1%,终止反应",
f"6. 离心收集肽段,准备脱盐"
]
for step in steps:
print(step)
return {
"protein_amount_ug": protein_sample_ug,
"trypsin_amount_ug": trypsin_ug,
"digestion_time_hr": digestion_hours,
"enzyme_ratio": f"1:{int(1/enzyme_ratio)}"
}
# 示例调用
result = trypsin_digestion(protein_sample_ug=100)
干法trypsin消化(推荐!省时间、效率高):
干法胰蛋白酶消化步骤:
1. 蛋白样品中加入4M尿素溶液,使最终尿素浓度为4M
2. 加入 dry trypsin powder(Sequencing grade)
→ 酶:蛋白 = 1:50 (w/w)
3. 涡旋混匀,短暂离心
4. 37°C静置消化16-18小时
5. 加入1% TFA至终浓度0.1%终止反应
6. 离心,收集上清
优点:
- 无需稀释,操作简便
- 酶活性高,消化效率高
- 减少蛋白吸附损失
1.7 肽段脱盐——去除杂质
消化后的肽段含有尿素、盐、去污剂等杂质,需要用固相萃取脱盐。最常用的是C18固相萃取小柱(如StageTip或Spin Column):
# StageTip脱盐protocol
def stagetip_desalt():
"""
StageTip肽段脱盐操作步骤
"""
steps = {
"activation": {
"reagent": "100% Methanol",
"volume_μL": 20,
"action": "浸润C18膜,离心弃废液",
"repeat": 2
},
"equilibration": {
"reagent": "0.1% Formic Acid / 5% ACN",
"volume_μL": 20,
"action": "平衡柱子,离心弃废液",
"repeat": 2
},
"loading": {
"reagent": "0.1% Formic Acid",
"volume_μL": 50,
"action": "加载肽段样品,收集流出液",
"repeat": 1,
"note": "肽段结合到C18上,杂质流出"
},
"washing": {
"reagent": "0.1% Formic Acid / 5% ACN",
"volume_μL": 50,
"action": "洗去残留盐分和杂质",
"repeat": 2
},
"elution": {
"reagent": "80% Acetonitrile / 0.1% FA",
"volume_μL": 30,
"action": "洗脱肽段,收集洗脱液",
"repeat": 2
},
"drying": {
"reagent": "真空离心浓缩",
"action": "干燥肽段,-80°C保存或立即上机"
}
}
for step_name, details in steps.items():
print(f"\n【{step_name.upper()}】")
for key, value in details.items():
if key != 'action':
print(f" {key}: {value}")
print(f" 操作: {details['action']}")
stagetip_desalt()
第二步:质谱分析——蛋白质的”身份证识别”
脱盐后的肽段,终于可以上质谱仪了。这一步是蛋白质组学的核心环节。
2.1 质谱仪的基本原理
质谱仪的工作原理可以简单理解为:
把肽段变成离子 → 按质荷比(m/z)分离 → 检测离子信号
目前蛋白质组学最主流的质谱仪是Orbitrap系列和Q-TOF系列。
质谱工作流程示意图:
样品肽段溶液
↓
【电喷雾电离 ESI】—— 肽段变成带电离子
↓
【质量分析器】—— 按m/z分离离子
├─ Orbitrap(高分辨、高精度)
└─ Q-TOF(快速扫描)
↓
【检测器】—— 记录离子信号
↓
原始数据文件(.raw/.d/.mgf)
2.2 LC-MS/MS联用——液相色谱+质谱
单独的质谱仪只能分析很简单的样品。实际应用中,肽段混合物需要先通过液相色谱(LC)分离,再逐个进入质谱仪分析。这就是LC-MS/MS。
# 典型LC-MS/MS参数设置
lc_ms_parameters = {
"液相色谱": {
"色谱柱": "C18 reverse-phase column",
"柱尺寸": "75 μm × 25 cm",
"流动相A": "0.1% Formic Acid in H2O",
"流动相B": "0.1% Formic Acid in Acetonitrile",
"流速": "300 nL/min",
"梯度": "5% B → 35% B over 90 min",
"柱温": "40°C"
},
"质谱参数(Orbitrap Exploris 480)": {
"离子源": "nanoESI",
"喷雾电压": "2.0-2.5 kV",
"Source Temp": "250°C",
"S-lens": "50",
"MS1 (Full scan)": {
"分辨率": "60000 @ m/z 200",
"扫描范围": "m/z 350-1500",
"AGC target": "3e6",
"Max IT": "50 ms"
},
"MS2 (DDA)": {
"激活模式": "HCD",
"分辨率": "15000",
"碰撞能量": "28-32%",
"ISOLATION WIDTH": "1.6 m/z",
"AGC target": "1e5",
"Max IT": "100 ms",
"TopN": "20" # 每次Full scan后选择20个最高峰做MS2
},
"动态排除": "60 seconds"
}
}
import json
print(json.dumps(lc_ms_parameters, indent=2, ensure_ascii=False))
2.3 数据采集模式:DDA vs DIA
这是质谱分析中最关键的选择之一。
DDA(Data-Dependent Acquisition,数据依赖采集):
工作原理:
1. 先做一次全扫描(MS1),获得所有肽段离子的质荷比和强度
2. 自动选择强度最高的Top N个离子
3. 对这些离子进行碰撞碎裂,做MS2扫描
4. 循环重复
优点:
- 数据丰富,能鉴定更多蛋白质
- 软件生态成熟(MaxQuant、Proteome Discoverer等)
- 适合发现性研究
缺点:
- 动态范围有限,低丰度蛋白易被漏掉
- 重复性较差,不同次运行可能选到不同的离子
- 复杂样品需要多次进样才能覆盖全面
DIA(Data-Independent Acquisition,数据非依赖采集):
工作原理:
1. 将m/z范围分成若干个窗口(如25 Da宽)
2. 对每个窗口内的所有离子同时碎裂、采集
3. 无论离子强度高低,全部被采集
优点:
- 重复性好,适合定量比较
- 动态范围宽,低丰度蛋白不易丢失
- 数据可回溯重新提取
缺点:
- 谱图复杂,需要专用软件分析(Spectronaut、 DIA-NN)
- 数据量大,计算资源要求高
- 原始数据分辨率不如DDA
常用窗口方案:
┌──────────────────────────────────────────────┐
│ 350-500 Da │ 500-650 Da │ 650-800 Da │ ... │
│ Window 1 │ Window 2 │ Window 3 │ ... │
└──────────────────────────────────────────────┘
# DIA数据提取示例(伪代码,说明流程)
# 使用DIA-NN进行数据分析
def dia_nn_analysis():
"""
DIA-NN 分析流程
"""
steps = [
"1. 准备文库数据(可选)",
" - 如有DDA数据,可先用其构建谱图文库",
" - DIA-NN可从公共数据库直接下载谱图库",
"",
"2. 运行DIA-NN",
" diaNN --lib 'uniprot_human.fasta' \\",
" --dia-files 'sample1.dia' 'sample2.dia' \\",
" --out-dir 'results/' \\",
" --nn-model 'human' \\",
" --protein-groups",
"",
"3. 结果解读",
" - Protein Groups table: 蛋白鉴定结果",
" - Peptide table: 肽段鉴定结果",
" - 导出Excel或直接用于下游分析"
]
for step in steps:
print(step)
dia_nn_analysis()
第三步:数据处理——从原始信号到蛋白清单
质谱仪出来的原始数据,需要经过一系列生物信息学处理,才能得到最终的蛋白鉴定和定量结果。
3.1 数据处理流程
原始数据 (.raw/.d/.dbspe)
↓
【谱图检索】—— 将MS2谱图与理论谱图比对
↓
【蛋白推断】—— 根据肽段归属蛋白
↓
【定量分析】—— 比较不同样品的蛋白表达量
↓
【统计分析】—— 差异表达蛋白鉴定
↓
【功能分析】—— GO、KEGG等富集分析
3.2 数据库搜索参数设置
# MaxQuant参数设置示例
maxquant_settings = {
"一般设置": {
"Organism": "Homo sapiens", # 物种
"Enzyme": "Trypsin/P", # 酶切特异性
"Min peptide length": "7", # 最短肽段长度
"Max mis-cleavages": "2", # 最多允许2个未切位点
"Fixed modifications": "Carbamidomethyl (C)", # 固定修饰
"Variable modifications": [
"Oxidation (M)", # 甲硫氨酸氧化
"Acetyl (Protein N-term)", # N端乙酰化
"Deamidated (NQ)" # 天冬酰胺/谷氨酰胺脱酰胺
]
},
"质谱参数": {
"MS level": "1",
"Mass tolerance": "4.5 ppm",
"MS/MS level": "2",
"Mass tolerance": "20 ppm",
"First run mass tolerance": "20 ppm"
},
"定量设置": {
"Quantification": "Label-free (LFQ)",
"Min peptide changes": "2",
"Min ratio counts": "2"
},
"FDR控制": {
"Protein FDR": "0.01",
"Peptide FDR": "0.01",
"Peptide sequence FDR": "0.01"
}
}
for category, params in maxquant_settings.items():
print(f"\n【{category}】")
if isinstance(params, dict):
for key, value in params.items():
print(f" {key}: {value}")
elif isinstance(params, list):
for item in params:
print(f" - {item}")
3.3 常用数据处理软件对比
| 软件 | 特点 | 适用场景 | 费用 |
|---|---|---|---|
| MaxQuant | 最流行,LFQ定量成熟 | Label-free定量 | 免费 |
| Proteome Discoverer | 界面友好,Thermo原生支持 | 多平台通用 | 收费 |
| DIA-NN | DIA分析神器,速度快 | DIA数据处理 | 免费 |
| Spectronaut | DIA分析经典软件 | DIA定量 | 收费 |
| PEAKS | 从头测序+数据库搜索 | 无参考基因组 | 收费 |
| FragPipe | 极速,DeepScore打分 | 快速分析 | 免费 |
3.4 Python数据分析示例
# 蛋白质组学数据分析示例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 读取MaxQuant结果
protein_groups = pd.read_csv('proteinGroups.txt', sep='\t', comment='#')
# 查看基本统计
print(f"总蛋白数: {len(protein_groups)}")
print(f"仅 identified by site: {sum(protein_groups['Only identified by: Site'])}")
print(f"Potential contaminant: {sum(protein_groups['Potential contaminant']) == True}")
# 过滤低质量蛋白
filtered_proteins = protein_groups[
(protein_groups['Reverse'] == False) & # 排除反向序列
(protein_groups['Potential contaminant'] == False) & # 排除污染源
(protein_groups['Only identified by: Site'] == False) # 排除仅靠位点鉴定的
]
print(f"\n过滤后蛋白数: {len(filtered_proteins)}")
# LFQ归一化
lfq_values = filtered_proteins.filter(like='LFQ').fillna(0)
normalized = lfq_values - lfq_values.mean(axis=1).values[:, None]
# 火山图绘制
from scipy import stats
# 示例:对照组 vs 处理组
control = normalized.iloc[:, 0:3].mean(axis=1) # 对照组3个重复
treated = normalized.iloc[:, 3:6].mean(axis=1) # 处理组3个重复
log2fc = np.log2(treated / control)
t_stat, p_value = stats.ttest_ind(treated, control, axis=1)
neg_log10p = -np.log10(p_value)
# 绘制火山图
plt.figure(figsize=(10, 8))
threshold_fc = 1 # 2倍变化
threshold_p = 0.05
significant = (np.abs(log2fc) > threshold_fc) & (p_value < threshold_p)
plt.scatter(
log2fc[~significant], neg_log10p[~significant],
c='gray', s=20, alpha=0.5, label='Not significant'
)
plt.scatter(
log2fc[significant], neg_log10p[significant],
c='red', s=20, alpha=0.8, label='Significant'
)
plt.axvline(x=-threshold_fc, color='blue', linestyle='--', alpha=0.5)
plt.axvline(x=threshold_fc, color='blue', linestyle='--', alpha=0.5)
plt.axhline(y=-np.log10(threshold_p), color='green', linestyle='--', alpha=0.5)
plt.xlabel('Log2 Fold Change', fontsize=12)
plt.ylabel('-Log10(p-value)', fontsize=12)
plt.title('Volcano Plot: Treatment vs Control', fontsize=14, fontweight='bold')
plt.legend()
plt.tight_layout()
plt.savefig('volcano_plot.png', dpi=300)
plt.show()
常见问题与解决方案
这部分是全文的重点。我整理了蛋白质组学实验中最常遇到的”坑”,以及对应的解决办法。
🔴 问题一:蛋白产量低
症状:最终得到的蛋白量很少,质谱鉴定出的蛋白数少。
可能原因:
- 样品起始量太少
- 裂解不充分
- 蛋白降解严重
- 沉淀/吸附损失
解决方案:
✅ 增加样品起始量
- 细胞:至少10^6个(理想10^7)
- 组织:至少10-50 mg
✅ 改进裂解方法
- 超声破碎:30%功率,3秒脉冲,间隔30秒,重复5-10次
- 添加机械破碎:珠磨仪(玻璃珠震荡)
- 增加裂解时间:冰上孵育30分钟以上
- 反复冻融:-80°C冻存后37°C解冻,重复3次
✅ 防止蛋白降解
- 全程4°C操作
- 新鲜配制蛋白酶抑制剂
- PMSF现用现加(半衰期约30分钟)
- 避免反复冻融样品
🔴 问题二:重复性差
症状:生物学重复之间的蛋白鉴定数或定量值差异很大。
可能原因:
- 样品制备步骤不一致
- LC-MS进样量不一致
- 色谱柱使用次数过多
- 离子源污染
解决方案:
✅ 标准化操作流程(SOP)
- 编写详细的实验步骤文档
- 每个步骤都要有具体的时间和温度
- 关键步骤拍照记录
✅ 质量控制
- 每次进样前运行标准品(如PRT04482)
- 监控色谱保留时间和峰形
- 监控质谱分辨率和质量精度
✅ 进样量校准
- 使用自动进样器,确保每次进样量一致
- 检查进样针和针座是否有污染
✅ 色谱柱维护
- 每根柱子使用次数控制在30-50次以内
- 每次上样后用高比例有机相清洗
- 不使用柱子时保存在80% ACN中
标准品监控脚本示例:
# LC-MS重复性监控脚本
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 模拟标准品监控数据
data = {
'Run': range(1, 11),
'Total_Proteins': [1850, 1920, 1780, 1890, 1950, 1820, 1900, 1870, 1930, 1860],
'Retention_Time': [45.2, 45.5, 44.8, 45.1, 45.3, 44.9, 45.4, 45.0, 45.6, 45.2],
'Mass_Error_ppm': [1.2, 0.8, 1.5, 1.0, 0.9, 1.3, 1.1, 0.7, 1.4, 1.0]
}
df = pd.DataFrame(data)
# 绘制监控图
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 蛋白鉴定数趋势
axes[0].plot(df['Run'], df['Total_Proteins'], marker='o', linewidth=2)
axes[0].axhline(y=df['Total_Proteins'].mean(), color='r', linestyle='--', label=f'Mean: {df["Total_Proteins"].mean():.0f}')
axes[0].axhline(y=df['Total_Proteins'].mean() - df['Total_Proteins'].std(), color='orange', linestyle=':', alpha=0.7)
axes[0].axhline(y=df['Total_Proteins'].mean() + df['Total_Proteins'].std(), color='orange', linestyle=':', alpha=0.7)
axes[0].set_xlabel('Run Number')
axes[0].set_ylabel('Total Proteins Identified')
axes[0].set_title('Protein ID Trend')
axes[0].legend()
axes[0].grid(True, alpha=0.3)
# 保留时间漂移
axes[1].plot(df['Run'], df['Retention_Time'], marker='s', color='green', linewidth=2)
axes[1].axhline(y=df['Retention_Time'].mean(), color='r', linestyle='--', label=f'Mean: {df["Retention_Time"].mean():.1f} min')
axes[1].set_xlabel('Run Number')
axes[1].set_ylabel('Retention Time (min)')
axes[1].set_title('RT Stability')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
# 质量精度分布
axes[2].hist(df['Mass_Error_ppm'], bins=6, color='purple', edgecolor='black', alpha=0.7)
axes[2].axvline(x=0, color='red', linestyle='--', label='Theoretical')
axes[2].set_xlabel('Mass Error (ppm)')
axes[2].set_ylabel('Frequency')
axes[2].set_title('Mass Accuracy Distribution')
axes[2].legend()
axes[2].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('qc_monitoring.png', dpi=300)
plt.show()
# 输出统计报告
print("=== LC-MS/MS QC Summary ===")
print(f"Average proteins identified: {df['Total_Proteins'].mean():.0f} ± {df['Total_Proteins'].std():.0f}")
print(f"CV of protein IDs: {df['Total_Proteins'].std()/df['Total_Proteins'].mean()*100:.1f}%")
print(f"RT drift: ±{df['Retention_Time'].std():.2f} min")
print(f"Mass accuracy: {df['Mass_Error_ppm'].mean():.1f} ± {df['Mass_Error_ppm'].std():.1f} ppm")
print("\n✅ QC标准:")
print(" - 蛋白鉴定数CV < 20%")
print(" - RT漂移 < 0.5 min")
print(" - 质量精度 < 5 ppm")
🔴 问题三:高丰度蛋白干扰
症状:质谱谱图中只有少数几种高丰度蛋白,其他蛋白被压制。
常见原因:血浆/血清样品中白蛋白和免疫球蛋白占主导(>90%)。
解决方案:
方法一:免疫去除(最常用)
- 使用Multiple Affinity Removal Columns
- 去除白蛋白、IgG等12-14种高丰度蛋白
- 成本约¥2000-3000/次
方法二:高丰度蛋白预分级
- 尺寸排阻色谱(SEC)
- 高pH反相分级
- 阴离子交换色谱
方法三:增加LC分离时间
- 延长梯度时间至2-3小时
- 提高分离度,让更多蛋白进入检测窗口
方法四:DIA模式
- 数据非依赖采集,不受丰度影响
- 适合复杂样品定量
🔴 问题四:肽段回收率低
症状:最终肽段量比预期少很多,蛋白鉴定数偏低。
可能原因:
- C18脱盐步骤损失大
- 肽段吸附在管壁上
- 干燥过度导致肽段不溶
解决方案:
✅ 减少转移步骤
- 每多转移一次,损失约10-20%
- 尽量在同一管中完成所有步骤
✅ 使用低吸附耗材
- Eppendorf LowBind tubes
- 硅胶表面处理过的耗材
✅ 肽段复溶技巧
- 不要过度干燥至完全无水
- 保留少量溶剂帮助复溶
- 使用0.1% FA + 5% ACN复溶
- 涡旋振荡30秒,超声5分钟
✅ 增加载体蛋白
- 加入0.1% BSA或carrier peptide
- 减少肽段在管壁的吸附
🔴 问题五:蛋白鉴定数少
症状:样品中鉴定出的蛋白数量远低于预期。
排查清单:
□ 样品质量检查
□ 蛋白浓度测定是否正常
□ 电泳检测是否有明显条带
□ 蛋白是否降解(出现 smear)
□ 消化效率检查
□ 胰蛋白酶活性是否正常(新开封酶,-20°C保存)
□ 尿素浓度是否过高(抑制酶活)
□ 消化时间是否足够(至少4小时)
□ pH是否合适(7.5-8.5)
□ 质谱参数检查
□ 喷雾是否稳定
□ 柱温是否合适
□ 梯度是否正常运行
□ 动态排除时间是否合适
□ 数据库搜索检查
□ 数据库是否正确(物种、版本)
□ FDR阈值是否过严
□ 酶切特异性设置是否正确
□ 修饰设置是否完整
# 蛋白鉴定数诊断工具
def diagnose_protein_identification(protein_count, sample_type, prep_method):
"""
蛋白鉴定数诊断
参数:
- protein_count: 鉴定出的蛋白数
- sample_type: 样品类型
- prep_method: 制备方法
"""
expected_ranges = {
'cell_culture': (1000, 5000), # 细胞培养物
'tissue': (1500, 6000), # 组织样本
'plasma': (500, 2000), # 血浆(去高丰度后)
'bacteria': (800, 3000), # 细菌
'plant': (500, 2000), # 植物
'FFPE': (300, 1000) # 石蜡包埋
}
expected = expected_ranges.get(sample_type, (500, 3000))
if protein_count < expected[0]:
print(f"⚠️ 蛋白鉴定数({protein_count})低于预期({expected[0]}-{expected[1]})")
print("\n可能原因:")
if 'cell' in sample_type:
print(" 1. 细胞起始量不足(建议≥10^6)")
print(" 2. 裂解不充分")
print(" 3. 消化效率低")
elif 'plasma' in sample_type:
print(" 1. 未去除高丰度蛋白")
print(" 2. 进样量不足")
print("\n建议检查上述常见问题")
elif protein_count > expected[1]:
print(f"✅ 蛋白鉴定数({protein_count})高于预期,表现良好!")
else:
print(f"✅ 蛋白鉴定数({protein_count})在预期范围内({expected[0]}-{expected[1]})")
# 示例诊断
diagnose_protein_identification(800, 'cell_culture', 'SDS-lysis')
diagnose_protein_identification(300, 'plasma', 'depletion')
标准化Protocol:一套可重复的实验方案
下面是一个经过验证的、适合大多数实验室的标准化蛋白质组学protocol。你可以直接参考使用。
实验前准备
所需试剂:
├── 裂解缓冲液(50 mM Tris-HCl pH 8.0, 150 mM NaCl, 1% SDS)
├── 蛋白酶抑制剂 cocktail
├── PMSF
├── DTT(二硫苏糖醇)
├── 碘乙酰胺(IAA)
├── 尿素(Sequencing grade)
├── 胰蛋白酶(Sequencing grade)
├── 甲酸(FA)
├── 乙腈(ACN,LC-MS级)
├── C18 StageTip 或 Spin Column
└── 脱盐水(18 MΩ·cm)
所需耗材:
├── 低吸附EP管(0.5 mL, 1.5 mL, 2 mL)
├── 尼龙滤膜(0.22 μm)
├── LC-MS进样瓶
└── 色谱柱(C18, 75 μm × 25 cm)
仪器:
├── 超低温冰箱(-80°C)
├── 离心机(带4°C制冷)
├── 涡旋振荡器
├── 超声破碎仪
├── 真空离心浓缩仪
└── nanoLC-MS/MS系统
完整实验步骤
═══════════════════════════════════════════════════
蛋白质组学样品制备 & 质谱分析 Standard Protocol
═══════════════════════════════════════════════════
┌─────────────────────────────────────────────────┐
│ Day 1: 样品制备 │
├─────────────────────────────────────────────────┤
│ │
│ Step 1: 细胞裂解(~30分钟) │
│ ───────────────────────────────────────────── │
│ 1. 收集细胞(≥10^6个),PBS洗涤2次 │
│ 2. 加入100 μL裂解缓冲液(含1% SDS) │
│ 3. 冰上超声:30%功率,3秒脉冲,间隔30秒,重复5次 │
│ 4. 冰上孵育20分钟 │
│ 5. 14000 rpm 离心15分钟,4°C │
│ 6. 收集上清,测定蛋白浓度 │
│ │
│ Step 2: 蛋白变性+还原(~45分钟) │
│ ───────────────────────────────────────────── │
│ 1. 取100 μg蛋白,加入4 M尿素缓冲液稀释至4 M尿素 │
│ 2. 加入DTT至终浓度5 mM │
│ 3. 37°C孵育30分钟 │
│ │
│ Step 3: 蛋白烷基化(~30分钟) │
│ ───────────────────────────────────────────── │
│ 1. 加入IAA至终浓度10 mM │
│ 2. 室温避光孵育20分钟 │
│ 3. 加入DTT至终浓度5 mM中和过量IAA │
│ 4. 室温静置5分钟 │
│ │
│ Step 4: 胰蛋白酶消化(~18小时) │
│ ───────────────────────────────────────────── │
│ 1. 加入干胰蛋白酶(酶:蛋白 = 1:50) │
│ 2. 37°C静置消化16-18小时 │
│ 3. 加入1% TFA至终浓度0.1%终止反应 │
│ │
│ Step 5: 肽段脱盐(~1小时) │
│ ───────────────────────────────────────────── │
│ 1. C18 StageTip活化:100%甲醇20 μL×2次 │
│ 2. 平衡:0.1% FA/5% ACN 20 μL×2次 │
│ 3. 加载样品,收集流出液 │
│ 4. 洗涤:0.1% FA/5% ACN 50 μL×2次 │
│ 5. 洗脱:80% ACN/0.1% FA 30 μL×2次 │
│ 6. 真空离心干燥,-80°C保存或立即上机 │
│ │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ Day 2: 质谱分析 │
├─────────────────────────────────────────────────┤
│ │
│ Step 6: LC-MS/MS运行(~2小时) │
│ ───────────────────────────────────────────── │
│ 1. 肽段复溶:5 μL 0.1% FA + 5% ACN │
│ 2. 上样量:2 μL(含1-2 μg肽段) │
│ 3. 色谱条件: │
│ - 流动相A: 0.1% FA in H2O │
│ - 流动相B: 0.1% FA in ACN │
│ - 梯度: 5%→35% B, 90 min │
│ - 流速: 300 nL/min │
│ 4. 质谱条件: │
│ - Full scan: m/z 350-1500, Res=60000 │
│ - Top20 DDA: MS2 Res=15000, HCD 28-32% │
│ - Dynamic exclusion: 60 sec │
│ │
│ Step 7: 数据处理 │
│ ───────────────────────────────────────────── │
│ 1. 使用MaxQuant/DIA-NN进行数据库搜索 │
│ 2. 设置FDR < 0.01 │
│ 3. 输出蛋白定量结果 │
│ │
└─────────────────────────────────────────────────┘
实验质量控制清单
每次实验前,请对照这个清单逐一检查:
□ 试剂检查
□ 尿素是否新鲜配制(久置会分解产生异硫氰酸)
□ DTT是否新鲜配制(久置会氧化失效)
□ 胰蛋白酶是否从-20°C取出,避免反复冻融
□ 乙腈是否为LC-MS级(普通HPLC级杂质多)
□ 仪器检查
□ 色谱柱压力是否正常
□ ESI针是否干净、喷雾是否稳定
□ 质谱分辨率是否达标
□ 质量精度是否<5 ppm
□ 样品检查
□ 蛋白浓度测定是否正常
□ 电泳检测是否有明显降解
□ 肽段浓度测定是否正常
□ 运行监控
□ 标准品进样结果是否符合预期
□ 肽段峰形是否尖锐对称
□ 蛋白鉴定数是否稳定
一些”踩坑”之后才知道的经验
最后分享几个我在实验室里踩过的坑,希望能帮你少走弯路。
经验一:尿素真的不能重复使用
很多人用不完的尿素缓冲液舍不得扔,留着下次用。结果发现蛋白鉴定数越来越少。后来才知道,尿素放置过程中会分解成异硫氰酸,异硫氰酸会和蛋白质的赖氨酸发生反应,这就是所谓的”氨基甲酰化修饰”,会严重影响胰蛋白酶消化效率。
经验二:肽段干燥不要过干
StageTip洗脱之后,用真空离心浓缩仪干燥肽段。很多人习惯烘到完全干,结果肽段粘在管壁上,怎么也溶不开。正确做法是烘到剩下一小滴液体时停止,用0.1% FA/5% ACN复溶,涡旋+超声帮助溶解。
经验三:色谱柱要”养”
好的色谱柱能跑50次以上。我的经验是:每次跑完后,用100% B冲洗10分钟,然后用80% B保存。不要频繁换流动相,温度变化也会缩短柱子寿命。
经验四:对照实验不能省
每次实验最好跑一个标准品(如PRT04482酵母蛋白混合物)。这样如果结果不好,你可以知道是样品的问题还是仪器的问题。
总结
蛋白质组学实验是一个系统工程,从样品制备到质谱分析,每一步都会影响最终结果。样品制备决定了你”能看见什么”,质谱参数决定了你”能多快看见”,数据处理决定了你”能看见多少”。
记住几个关键点:
- 全程低温,防止蛋白降解
- 试剂新鲜,尤其是DTT和尿素
- 操作标准化,重复是关键
- 每次实验做QC,有问题早发现
希望这篇指南能帮到你。蛋白质组学这条路,坑不少,但走过之后就发现,其实也没那么难。