第三章:数据格式的“前世今生”——RAW、mzML与搜库结果

做质谱数据分析,说白了就是跟各种文件格式打交道。我当年刚入行时,就被这一堆后缀名搞晕过——.raw、.mzML、.mzXML、.mgf……每个厂家还有自己的“方言”。今天这章,咱们就聊聊这些格式到底是干什么的,以及怎么在它们之间自由切换。

3.1 RAW文件:厂家的“黑匣子”

你从质谱仪上直接拷下来的文件,大概率是 .raw 后缀。这是Thermo Fisher家的专有格式。嗯,就像佳能相机拍的.CR2,只有自家软件才能完全解码。

RAW文件里到底存了什么?

  • 原始谱图数据——每个扫描点的m/z和强度值
  • 时间信息——保留时间轴
  • 仪器参数——离子源设置、碰撞能量等等
  • 诊断信息——比如真空度、电压波动记录

我在项目中遇到过好几次,有人拿着别人的RAW文件想直接用MaxQuant打开,结果报错。为什么?因为Thermo的RAW文件其实是分版本的——Xcalibur 2.x和4.x生成的RAW,底层结构都不一样。

⚠️ 避坑指南
我曾经有一次,从合作方拿到的RAW文件死活读不出来,折腾了两天才发现对方用的Thermo软件版本太老,MaxQuant根本认不了那个格式的头部信息。最后让对方重新导了一遍mzML才解决。

3.2 mzML:质谱界的“普通话”

为什么要转成mzML呢?你想想看,如果实验室里有Bruker、Thermo、SCIEX三台仪器,每个厂家格式都不一样,你的pipeline怎么写?

这就是mzML存在的意义——它是HUPO-PSI(人类蛋白质组学组织-蛋白质组学标准倡议)推的开放格式,基于XML,任何人只要读规范就能解析。

mzML相比于RAW的优势:

对比项 RAW文件 mzML
开放性 封闭,依赖厂商SDK 完全开放,XML明文
可读性 二进制,无法直接查看 文本格式,可用编辑器打开
跨平台 仅Windows(Thermo) Linux/Mac/Windows通吃
压缩率 依赖厂商算法 支持zlib压缩,体积可控
元数据 部分丢失(不同版本) 标准化,完整保留

我个人习惯,所有原始数据进pipeline之前,先统一转成mzML。这样后续不管用MaxQuant、OpenMS还是Skyline,接口都是通的。

3.3 搜库结果文件:MaxQuant的“成绩单”

MaxQuant搜库完成后,会吐出一堆文件。你真正需要关注的,其实就几个核心结果文件。

关键文件清单:

  • evidence.txt——最底层的肽段-谱图匹配(PSM)信息,每一行代表一个匹配
  • peptides.txt——肽段水平汇总,去冗余后的结果
  • proteinGroups.txt——蛋白质水平汇总,这是后续定量分析的起点
  • msms.txt——二级质谱的详细信息,包括碎片离子强度
  • summary.txt——运行参数和统计摘要,排查问题时的第一站

我在做PTXQC流程时,经常发现有人直接拿proteinGroups.txt就开始画火山图,但忽略了evidence.txt里的异常值标记。其实PTXQC的最核心输入,就是evidence.txt和summary.txt。

💡 小技巧
如果你用MaxQuant的“LFQ”或“iBAQ”定量,proteingroups.txt里的LFQ intensity列才是真正的定量值。别弄混了。

3.4 转换工具:谁好用?

格式转换是逃不掉的活。我列几个常用的工具,你们按需选用。

1. MSConvert(ProteoWizard)

业界标杆,支持几乎所有质谱格式的互转。命令行用起来非常爽。

# 单个RAW转mzML
msconvert input.raw --mzML -o ./output/

# 批量转换,保留索引
msconvert *.raw --mzML --zlib --filter "peakPicking true 1-" -o ./mzml_output/

那个 --filter "peakPicking true 1-" 参数,会自动做centroid处理,省掉你后续手动捣腾的麻烦。

2. ThermoRawFileParser

如果你只用Thermo的RAW,这个工具更快,而且输出mzML的元数据更完整。

# 基本用法
mono ThermoRawFileParser.exe -i=rawfile.raw -o=./mzml/ -f=2 -c=1

# -f=2 代表输出mzML格式
# -c=1 代表包括profile和centroid数据

3. OpenMS的FileConverter

在复杂的pipeline里,我建议用OpenMS工具链。

# 转换加保留时间对齐一步到位
FileConverter -in input.raw -out output.mzML

# 也可以直接转成featureXML
FileConverter -in input.mzML -out features.featureXML

4. mzML to MGF(Mascot通用格式)

有些老旧的搜库软件(比如Mascot)不吃mzML,这时候你就需要转成MGF。

# 用Python的pyopenms搞定
from pyopenms import *
exp = MSExperiment()
MzMLFile().load("input.mzML", exp)
MascotGenericFile().store("output.mgf", exp)
✏️ 我的选择
批量处理大量RAW文件时,我优先用MSConvert的命令行模式,配合Shell脚本循环,一次搞定上百个文件。pipeline里我会嵌套ThermoRawFileParser,因为它的日志输出更详细,方便排查。

3.5 格式转换的常见坑

你以为转个格式就是点一下按钮那么简单?嗯,有时候不是。

问题一:数据精度丢失

默认的mzML转换可能是32位浮点的,丢失细节。一定要指定输出精度。

# MSConvert设置64位
msconvert input.raw --mzML --precision 64 -o ./output/

问题二:时间戳错乱

我遇到过一例,转出来的mzML里保留时间全都差了0.5分钟。查了半天发现是仪器时钟偏差,转换时没有做时间校准。记住——RAW文件里的时间戳是本地时间,但mzML标准要求用相对保留时间(从进样开始算的秒数)。

问题三:元数据缺失

有些转换器会丢掉仪器类型、碰撞能量等关键信息。你在下游分析时发现filter string是空的,那就是转换时没带全。

# 用msconvert时可以指定保留所有params
msconvert input.raw --mzML --filter "peakPicking true 1-" --ignoreMissingTolerance 0.5

3.6 一张图看懂数据流转

咱们这一节讲了三种格式,它们之间的转换关系其实很清晰。我画了张图帮你理解整个数据流向。

质谱数据格式流转与核心命名 RAW文件 Thermo专有格式 mzML文件 开放标准格式 搜库结果 evidence.txt等 MSConvert MaxQuant 常用转换工具对比: • MSConvert (ProteoWizard) —— 支持RAW/mzML/MGF等多格式,最通用 • ThermoRawFileParser —— 专门处理Thermo RAW,元数据保留完整 • OpenMS FileConverter —— 适合集成到自动化pipeline PTXQC自定义Pipeline核心输入: • summary.txt —— 运行参数与基础统计,用于质控指标提取 • evidence.txt —— 肽段-谱图匹配详情,用于定量与异常检测

这张图的逻辑其实很简单:仪器出来的RAW是源头,通过转换工具变成mzML这个“通用语言”,然后MaxQuant拿着mzML做搜库,最后吐出evidence.txt和summary.txt给PTXQC做质控。中间每一步都可能有坑,但掌握了格式特点和转换参数,就能绕过去。

✏️ 给你一个脑图
以后你拿到一批新数据,先问自己三个问题:
1. 原始文件是什么格式?
2. 我下游的工具吃哪种格式?
3. 转换时我只保留centroid还是profile也要?
这三个问题想清楚,格式转换这一步就不会出错。

好了,这一章咱们把数据的“语言”理清了。下一部分就该上手操作,看看MaxQuant的web界面到底长什么样了。不过那是后面的事,先把今天的内容消化掉再说。