3. 原始数据准备

做定量蛋白质组学的朋友都知道,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原生支持我的推荐
RAWThermo 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)
经验之谈: 如果你转换的是DIA(数据非依赖采集)数据,峰检测参数要小心。我习惯用--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)
注意: 千万别光看TIC形状就扔数据。有时候整体强度低但色谱保留时间正常、信噪比达标,可能只是稀释度问题,MaxQuant归一化后还能用。真正的“坏数据”往往是保留时间漂移超过2分钟、质量偏差大于10 ppm、扫描数剧烈减少。我当年吃过一次亏:一个样本的扫描数少了30%,我没在意,结果MaxQuant鉴定到的蛋白质数量只有其他样本的一半,差点排除生物组学差异分析。

数据预处理与质量检查的整体流程

质谱原始数据预处理与质量检查流程 质谱仪输出 RAW / mzXML 格式判断 Thermo RAW? 是 → 直接使用 MaxQuant可读 否 → 转mzML MSConvert批处理 质量检查 TIC / BPC / 扫描数 / 质量偏差 合格 → 送MaxQuant 不合格 → 重采/排除 我踩过的坑 某项目60个样本, 5个TIC异常没发现, 最后定量CV翻倍。 早做质检省心百倍。

常见坑与个人经验

做数据预处理,说白了就是跟格式和噪音打交道。我把自己过去五六年踩过的坑列出来,希望能帮你省点时间。

  • 别偷懒不转格式: 有一次我用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上(不是广告,纯粹实用),以后有机会单独分享。