蛋白质组学数据库搜库策略¶
一句话说明¶
搜库(Database Search)是蛋白组学的核心步骤——把质谱仪测到的碎片谱(MS/MS)和蛋白序列数据库生成的理论谱进行比对,从而鉴定出肽段和蛋白质身份。就像用指纹比对犯罪嫌疑人数据库。
核心知识点¶
要点1:搜库基本流程¶
- In silico酶切:用指定的酶(如Trypsin)对数据库中所有蛋白做理论切割
- 理论谱生成:为每个理论肽段生成预测的碎片离子谱
- 谱图匹配:将实验MS/MS谱与理论谱比对,打分
- FDR控制:用目标-诱饵策略(Target-Decoy)控制假阳性率
要点2:常用搜库引擎¶
- MaxQuant/Andromeda:学术界最常用,配套Perseus做下游统计
- MSFragger:极速搜索,支持开放搜索,是FragPipe的核心
- Comet:开源经典,Trans-Proteomic Pipeline的组件
- SEQUEST:最早的搜库引擎之一(Thermo平台)
- Mascot:商业软件,老牌稳定
- pFind:国产高性能引擎,支持大规模PTM搜索
要点3:Target-Decoy FDR控制¶
- 原理:在正常数据库(Target)之外,生成一个反转/打乱的假数据库(Decoy)
- 计算:FDR = 2 * Decoy hits / (Target hits + Decoy hits)
- 或 FDR = Decoy hits / Target hits(简化版)
- 标准:蛋白和肽段层面FDR均<1%
- 为什么有效:Decoy匹配全是随机的,它的数量估计了Target中假阳性的数量
要点4:关键搜索参数¶
- 酶特异性:Trypsin(切Arg/Lys C端)最常用,允许1-2个漏切
- 质量容忍度:
- 母离子:Orbitrap一般10-20 ppm,TOF一般30-50 ppm
- 碎片离子:高分辨0.02 Da,低分辨0.5 Da
- 固定修饰:半胱氨酸烷基化(Carbamidomethyl,+57.021)几乎必选
- 可变修饰:甲硫氨酸氧化(+15.995)几乎必选,N端乙酰化(+42.011)常选
- FASTA数据库:UniProt参考蛋白组(如Human reviewed ~20,000蛋白)
实战代码¶
# === MaxQuant搜库参数配置要点 ===
# MaxQuant通过GUI配置mqpar.xml,关键参数说明
# 1. FASTA数据库设置
# - 下载UniProt参考蛋白组: https://www.uniprot.org/proteomes/
# - 人类: UP000005640 (reviewed, ~20,400蛋白)
# - 建议加common contaminants(常见污染物库)
# 2. 酶设置
# - Enzyme: Trypsin/P(不切Pro前的Arg/Lys)
# - Max missed cleavages: 2(允许2个漏切位点)
# 3. 修饰设置
# - Fixed: Carbamidomethyl (C) → 半胱氨酸还原烷基化
# - Variable: Oxidation (M) → 甲硫氨酸氧化(实验伪影)
# - Variable: Acetyl (Protein N-term) → 蛋白N端乙酰化
# 4. 质量容忍度
# - First search: 20 ppm(初始校准搜索,容忍度宽)
# - Main search: 4.5 ppm(MaxQuant自动校准后的精确搜索)
# - MS/MS tolerance: 20 ppm(碎片离子容忍度)
# === 搜库结果质控分析 ===
import pandas as pd
import matplotlib.pyplot as plt
# 1. 读取MaxQuant summary.txt评估搜索质量
summary = pd.read_csv("combined/txt/summary.txt", sep="\t")
# 2. 关键质控指标
for _, row in summary.iterrows():
raw_file = row["Raw file"]
ms_scans = row["MS"] # MS1扫描数
msms_scans = row["MS/MS"] # MS2扫描数
msms_identified = row["MS/MS Identified [%]"] # MS2鉴定率
peptides = row["Peptide Sequences Identified"] # 鉴定肽段数
print(f"{raw_file}: MS/MS鉴定率={msms_identified}%, 肽段数={peptides}")
# 3. 读取evidence.txt分析质量偏差分布
evidence = pd.read_csv("combined/txt/evidence.txt", sep="\t")
# 质量偏差分布应该集中在0附近
plt.figure(figsize=(8, 5))
plt.hist(evidence["Mass error [ppm]"].dropna(), bins=100, range=(-10, 10))
plt.xlabel("Mass Error (ppm)")
plt.ylabel("Count")
plt.title("Mass Error Distribution")
plt.axvline(0, color="red", linestyle="--") # 理想中心应在0
plt.savefig("mass_error_distribution.png", dpi=150)
# 4. 鉴定打分分布
plt.figure(figsize=(8, 5))
plt.hist(evidence["Score"], bins=100, alpha=0.7, label="Target")
# decoy的分数分布应该在低分区
plt.xlabel("Andromeda Score")
plt.ylabel("Count")
plt.title("PSM Score Distribution")
plt.legend()
plt.savefig("score_distribution.png", dpi=150)
面试常问点¶
Q1: Target-Decoy策略是怎么控制FDR的?¶
参考答案:核心思想很简单:把蛋白序列反转生成一个假数据库(Decoy),和真数据库(Target)一起搜索。因为实验谱图不可能真正匹配到反转序列,所以Decoy匹配全是假阳性。通过统计Decoy匹配数,就能估计Target匹配中有多少假阳性。比如我们设定1% FDR,意思是在最终结果中最多允许1%是假的。公式简单版:FDR ≈ Decoy匹配数 / Target匹配数。
Q2: FASTA数据库选大的好还是小的好?¶
参考答案:要权衡。数据库太大(比如用整个UniProt/TrEMBL几亿条序列),搜索空间大,假阳性风险增加,而且同一肽段可能匹配到多个蛋白导致蛋白推断困难。数据库太小可能漏掉真正的蛋白。建议用UniProt参考蛋白组(reviewed),人类约20,000个蛋白。如果研究非模式生物,可以适当加上TrEMBL未审核条目,但要注意FDR可能需要更严格的控制。
Q3: 为什么推荐Trypsin做蛋白酶?¶
参考答案:Trypsin切割Arg和Lys的C端,产生的肽段大小适中(通常6-20个氨基酸),C端带碱性氨基酸有利于正离子模式检测,而且切割效率高、特异性好。产生的肽段长度正好在质谱的最佳检测范围内。其他酶如LysC、GluC也有使用场景,但Trypsin是绝对的主流。
速查卡片¶
| 问题 | 一句话答案 |
|---|---|
| FDR标准是多少? | 肽段和蛋白层面均<1% |
| Target-Decoy怎么做? | 反转蛋白序列生成假库,匹配到假库的都是假阳性 |
| Trypsin切哪里? | Arg和Lys的C端(除非后面是Pro) |
| 半胱氨酸为什么要烷基化? | 阻止二硫键重新形成,固定修饰+57.021 Da |
| MaxQuant的ppm怎么设? | 初始搜索20ppm,校准后主搜索4.5ppm |
| 搜库引擎推荐? | MaxQuant(学术首选)、MSFragger(速度最快) |