4、序列库准备:数据库文件格式、常见数据库下载、污染库添加技巧

好,咱们继续。前面几讲我们把 MaxQuant 的软件基础和搜库原理捋了一遍,现在该动手准备最核心的原料了——蛋白质序列数据库。

说白了,数据库就是你拿质谱数据去比对的那个参考答案。没有它,MaxQuant 啥都干不了。

我个人习惯把序列库准备称为“搜库成功的一半”。为什么?因为数据库的质量直接决定了鉴定结果的准确性和覆盖率。今天我就把这个环节掰开揉碎了讲清楚。

4.1 FASTA 格式:蛋白质序列的通用语言

几乎所有蛋白质鉴定软件,包括 MaxQuant,用的都是 FASTA 格式。它很简单,就是一个纯文本文件,里面一条一条地记录蛋白质序列。

你想想看,就这么个简单的格式,我在项目里见过多少回乌龙。有人把换行符弄丢了,有人把序列和注释写反了,结果搜库全报错。

标准的一条 FASTA 记录长这样:

>sp|P04406|G3P_HUMAN Glyceraldehyde-3-phosphate dehydrogenase OS=Homo sapiens OX=9606 GN=GAPDH PE=1 SV=3
MVKVGVNGFGRIGRLVTRAAFNSGKVDIVAINDPFIDLNYMVYMFQYDSTHGKFHGTVKAENGKLVINGNA
KVSVDLTVKLGWKDEHEKISWVDVEGKNFQITKHHVKLMLKEWAAGVDSVVELMAKAKDQKEQVKGLQKV
KGFIIEGEENKVPKLWSKMTNFVCMDLSQVPCKSRNPATGDNLGLL

注意三个关键点:

  • 大于号开头:每一行以 > 开头,后面跟着注释信息,不要有空格开头。
  • 唯一标识符:|P04406| 是 UniProt 的 accession,MaxQuant 用它去重和索引。
  • 序列行:后续行全是标准氨基酸单字母缩写,不要混入空格或数字。
我曾经踩过的坑: FASTA 文件中如果混入非标准字符(如 B、Z、X),MaxQuant 会直接跳过该条目,而且不报错。排查时你只会发现“为什么这个蛋白少了几条肽段?”嗯,很隐蔽。

4.2 主流数据库的选择与下载

现在市面上最常见的两个数据库来源是 UniProt 和 Swiss-Prot。其实它俩是一家,只是质量控制级别不同。

我一般怎么选呢?看表格:

数据库 特点 适合场景
Swiss-Prot 人工校验,无冗余,条目较少(约 ~20万) 标准常规项目的首选,结果可靠
TrEMBL 自动注释,包含预测蛋白,条目庞大(>2亿) 非模式生物、想挖掘新蛋白时
UniProt (完整版) Swiss-Prot + TrEMBL 打包,文件非常大 宏蛋白质组或跨物种混合样本

具体下载步骤:

  1. 打开 //www.uniprot.org/(实际使用中手动输入即可,课程里不设链接)
  2. 搜索目标物种名,比如 "Homo sapiens"、 "Mus musculus"
    限制数据库类型为 "Reviewed (Swiss-Prot)"
  3. 点击 "Download",格式选 "FASTA (canonical & isoforms)"
  4. 下载完成后,把文件名改成简单点的,比如 human_swissprot.fasta
小技巧: 我每次下载后都会用文本编辑器看一下文件头。数一数 > 的数量,确保没少下载。稳妥起见可以用 grep -c "^>" human_swissprot.fasta 快速统计条目数。

4.3 污染库:必须加,不能省

这个问题我每次讲课都要强调。很多人图省事,只下载个目标物种数据库就开跑。结果呢?鉴定出一堆角蛋白、胰蛋白酶、乳清蛋白——全是假的。

为什么一定要加污染库?因为质谱样本制备过程中,免不了引入微量污染物:手指皮肤上的角蛋白、乳头上的beta-乳球蛋白、试剂里的BSA……这些蛋白质的肽段信号甚至可以很强,如果不加到数据库里,MaxQuant 没办法"认出来",就会错误地匹配到你目标蛋白上。

MaxQuant 官方提供了一个污染库文件,叫做 contaminants.fasta,里面包含了常见的人角蛋白、BSA、常用蛋白酶、抗体片段等。你一定要把它合并到目标数据库里。

合并操作很简单(Linux/Mac):

cat human_swissprot.fasta contaminants.fasta > human_swissprot_plus_contam.fasta

或者直接在 Windows 命令提示符里:

copy human_swissprot.fasta + contaminants.fasta human_swissprot_plus_contam.fasta

重点:合并后的 FASTA 文件就是你在 MaxQuant 参数页【Global Parameters → Sequences → FASTA files】里要选择的唯一文件。不要在软件里分别添加多个 FASTA 文件,除非你有特殊策略需求。

4.4 个人习惯:再给数据库加一层保命保险

嗯,这里再分享一个我自己用的小套路。我会额外加一个 “常用实验室污染蛋白” 的集合,比如大肠杆菌、酵母、甚至是使用过的磷酸酶抑制剂中的酶类。因为这些污染物在特定的实验室环境下很常见。

怎么搞?从 UniProt 上下载这些非目标物种的 Swiss-Prot 库,然后只提取你想加的那几个,或者整条 FASTA 追加进去。说白了多花 5 分钟,少掉很多麻烦。

我还会在最终合并好的 FASTA 文件里搜索一遍常见污染物的关键字:

grep "Keratin\|BSA\|Trypsin\|Lysozyme\|Casein" merged.fasta

如果找到结果,说明这些污染序列确实在里面了,心里踏实。

4.5 核心流程一图通:序列库准备全貌

说了这么多,不如画出来。下面是整个序列库准备的核心逻辑:

序列库准备核心流程 下载目标物种 FASTA 选择:Swiss-Prot / TrEMBL / 完整版 追加官方 contaminants.fasta 合并输出:target_contam.fasta 避坑总结 • 检查换行与 > 符号 • 统计条目数确认完整 • 污染库必须追加入库 • 合并后验证污染蛋白存在

4.6 MaxQuant 中加载数据库的最终检查

文件准备妥当了,在 MaxQuant 里操作很简单。但我建议你做完最后两个检查:

  1. 大小检查:人类 + 污染库一般在 30~50 MB。如果只有几百 KB,那肯定不对。
  2. Accession 唯一性:MaxQuant 不能接受完全相同的两行条目,虽然概率低,但你如果手动拼接了好几个库,最好用去重工具(如 SeqKit)跑一遍:
seqkit rmdup merged.fasta -o deduped.fasta

你看,序列库准备这一步听着简单,但其实最容易出幺蛾子。我早期做项目时吃过几次亏,后来养成了上面这些习惯,就再也没出过数据库问题。

最后一条干货:下载完成后把原始压缩包和最终合并文件都保留好,标注日期和版本。万一你要回溯结果或重新搜库,你会发现这个习惯救了大命。