原始数据准备:从质谱仪到MaxQuant的第一步
做定量蛋白质组学的朋友都知道,MaxQuant不是万能的——它处理不了所有格式的原始数据。我见过不少新手把Thermo的.raw文件直接拖进界面,结果软件报错“unrecognized format”,然后一脸懵。说白了,你得先搞清楚手里拿的是什么格式,再决定怎么喂给M量化。
质谱仪输出的数据文件至少有三种常见格式:RAW、mzXML、mzML。每种格式的“脾气”不一样,咱们一个一个过。嗯,我先从最常见的热电(Thermo)RAW格式说起。
质谱仪器输出格式
Thermo RAW (.raw)
这是Thermo Fisher系列质谱仪(Orbitrap、Q Exactive、Fusion等)的私有二进制格式。里面塞满了原始谱图、扫描参数、离子注入时间、自动增益控制(AGC)目标值等等。我个人的习惯是:只要是从Thermo仪器上拿到的数据,直接用.raw扔给MaxQuant就行——它原生支持这种格式,省去转换的麻烦。但如果你用的是其他品牌(比如Bruker、SCIEX、Agilent),那就得看第二类格式了。
mzXML
mzXML是早期开放格式,由ISB(Institute for Systems Biology)定义。它把原始数据转成XML结构,读起来方便,但文件体积比RAW大不少。我曾在项目里遇到过一个800MB的.raw转换后变成1.2GB的mzXML,而且解析速度变慢。现在基本不推荐用了,除非你用的旧版软件只认这个。
mzML
mzML是HUPO-PSI(人类蛋白质组学组织-蛋白质组学标准倡议)推出的现代开放标准格式。它合并了mzXML和mzData的优点,支持完整元数据记录,压缩效率也好。我个人更倾向于把非Thermo的数据转成mzML再送MaxQuant,因为MaxQuant对mzML的支持最稳定。
| 格式 | 品牌/来源 | 是否二进制 | MaxQuant原生支持 | 我的推荐 |
|---|---|---|---|---|
| RAW | Thermo Fisher | 是 | 是 | 直接用 |
| mzXML | 通用/旧版软件 | 否(XML) | 是(但慢) | 尽量不用 |
| mzML | 通用/现代标准 | 否(XML压缩) | 是 | 推荐转换 |
数据预处理:从原始文件到MaxQuant可用的格式
如果你手里的文件不是.raw,那一般需要先转成mzML。最常用的工具就是MSConvert(来自ProteoWizard套件)。为啥用它?免费、跨平台、命令行和图形界面都有。我早期用图形界面点来点去,后来发现写个批处理脚本效率高得多。
下面是我常用的一条转换命令:
msconvert input.raw --mzML --zlib --outdir ./mzml_output/ --filter "peakPicking true 1-"
解释一下参数:
--mzML指定输出为mzML格式--zlib启用压缩,文件小一半不止--outdir输出目录--filter "peakPicking true 1-"对一级和二级谱都做峰检测(Centroid)
--filter "peakPicking true 1-"加上--filter "msLevel 2"分开处理,避免把一级的轮廓谱压成质心导致定量不准。
批量处理多个文件
一个文件夹几十个.raw文件,一个个转太累。我会写个简单的shell脚本:
#!/bin/bash
for f in *.raw; do
msconvert "$f" --mzML --zlib --outdir ./mzml/
echo "Converted $f"
done
Windows下的朋友可以用PowerShell或直接在MSConvert GUI里选多个文件。我个人还是喜欢命令行,跑完日志一看就知道有没有错误。
质量检查:哪些数据该淘汰?
数据预处理不等于格式转换就完事了。你想想看,如果质谱仪当时状态不好——比如离子源脏了、毛细管堵了、AGC目标值设错了——那转换出来的mzML也是垃圾。我曾经有一个项目,跑了60个样本,转换完一看总离子流图(TIC),有5个样本的基峰强度比平均低了一个数量级,后来发现是喷雾针没调好。如果直接跑MaxQuant,那些样本会严重拉低蛋白质定量精度。
所以,转化后一定要做质量检查。我一般看这几个指标:
- 总离子流(TIC)曲线: 整体强度是否一致?不正常的下降或波动要警惕。
- 基峰色谱(BPC): 最高峰的质量偏差有没有漂移?
- 扫描数: 短时间内的扫描数量是否合理?如果是1小时梯度,扫描数少于3000可能说明仪器采集参数不对。
- 一级质量精度: 用已知的污染峰(如硅氧烷 445.12 Da)检查偏差是否在±5 ppm内。
- 同位素峰分布: 二级谱的同位素分布是否和理论一致?如果总是C13峰高出异常,说明母离子选择窗口可能出了问题。
检查工具推荐: 我常用mzQC格式的质检软件(如QC-MZ),或者直接用R包MSnbase写个简单脚本。要是只是想快速扫一眼,用MaxQuant自带的MsStats插件也行,但它只能看运行过程中的指标,没法看原始文件级的异常。
实际操作中,我习惯先跑一个快速的TIC对比图。下面是个Python代码片段,用pyopenms读取mzML,提取TIC:
import pyopenms as oms
exp = oms.MSExperiment()
oms.MzMLFile().load("sample.mzML", exp)
time = []
tic = []
for spectrum in exp:
mz, intensity = spectrum.get_peaks()
time.append(spectrum.getRT())
tic.append(sum(intensity))
# 然后就可以画图对比多文件
# plt.plot(time, tic)
数据预处理与质量检查的整体流程
常见坑与个人经验
做数据预处理,说白了就是跟格式和噪音打交道。我把自己过去五六年踩过的坑列出来,希望能帮你省点时间。
- 别偷懒不转格式: 有一次我用Bruker的d格式直接改名成.raw扔给MaxQuant,结果软件闪退。后来查文档才知道MaxQuant只认Thermo的.raw和开放格式mzML。老老实实转吧。
- 注意压缩选项: 转mzML时如果不加
--zlib,文件大小会膨胀3-5倍,不仅占硬盘,加载也慢。我试过不加压缩,60个样本占了150GB,加了压缩后只有35GB。 - 检查扫描数: 转换后的mzML有没有“空谱”?即一个scan里没有峰。如果空谱超过5%,说明质谱的触发设置可能有问题(比如Apex触发没生效)。我遇到过一批数据空谱比例高达30%,后来重采了。
- 质量偏差校准: 如果你用的是混合型质谱仪(比如Orbitrap和线性离子阱组合),一级精确质量偏差通常小于2 ppm,如果偏差大于5 ppm,建议用仪器自带的校正液重新校准,别指望MaxQuant的“mass recalibration”功能万能,它只能修正全局漂移,不能改随机误差。
省力的质检方式: 我习惯把TIC、BPC、扫描数这三个指标做成一个简单的HTML报告(用Python的Plotly转静态图),每个样本一行,颜色标记异常。这样5分钟就能扫描60个样本。后来我把这个脚本放到了GitHub上(不是广告,纯粹实用),以后有机会单独分享。