跳转至

蛋白质组学数据库搜库策略


一句话说明

搜库(Database Search)是蛋白组学的核心步骤——把质谱仪测到的碎片谱(MS/MS)和蛋白序列数据库生成的理论谱进行比对,从而鉴定出肽段和蛋白质身份。就像用指纹比对犯罪嫌疑人数据库。


核心知识点

要点1:搜库基本流程

  1. In silico酶切:用指定的酶(如Trypsin)对数据库中所有蛋白做理论切割
  2. 理论谱生成:为每个理论肽段生成预测的碎片离子谱
  3. 谱图匹配:将实验MS/MS谱与理论谱比对,打分
  4. 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(速度最快)