质谱数据基础:RAW文件格式,峰值列表,特征矩阵

做跨平台合并批次校正,第一步得搞清楚数据长什么样。你拿到的原始文件是RAW格式,但下游分析用的大多是峰值列表或特征矩阵。这三个东西怎么串起来的?我先把基础讲清楚。

RAW 文件:仪器直接吐出来的原始数据

RAW 文件是质谱仪采集结束后直接保存的二进制文件。每家厂商都有自己的格式:Thermo 是 .raw,Bruker 是 .d 文件夹加一堆二进制,SCIEX 是 .wiff。timsTOF 和 Orbitrap 联用后,数据存储其实还是各自管各自的,你需要用厂商提供的 SDK 或转换工具才能读取。

避坑指南: 我曾经因为直接拿 Thermo RAW 文件扔给 Bruker 的软件解析,结果程序崩溃。跨平台合并前,先把所有 RAW 文件转成统一格式(比如 mzML)是最稳妥的做法。

RAW 里存的是什么呢?简单说就是连续扫描得到的离子信号:时间、电压、电流。这部分数据量大得惊人,一个 1 小时梯度能生成 10GB 以上。所以实际分析时没人直接操作 RAW,都是先做峰值检测,提取出峰值列表。

峰值列表:从连续信号到离散峰

峰值列表(peak list)是把 RAW 中每个时间点上的质谱信号压缩成一个个峰。常用的格式有 .mgf、.mzXML、.mzML。每个峰记录三个核心信息:质荷比(m/z)、强度(intensity)、保留时间(retention time)。如果你的仪器是 timsTOF,还会多一个 离子迁移率(ion mobility, 1/K₀)。

格式特点典型应用
.mgf纯文本,每张谱图分段,易读但无保留时间列蛋白质鉴定(MASCOT、Comet)
.mzXMLXML 结构,支持保留时间、谱图索引跨平台交换、可视化(如 TOPPView)
.mzMLHUPO-PSI 标准,兼容性好质谱数据处理流水线(OpenMS、ProteoWizard)
我个人习惯: 只要不是旧项目,一律用 mzML。ProteoWizard 的 msconvert 可以把几乎所有厂商 RAW 转成 mzML,而且保留离子迁移率信息。命令很简单:
msconvert input.raw --mzML --filter "peakPicking true 1-" --filter "msLevel 1-2"

峰值列表已经能做一些定量分析了,但批次校正需要把不同文件里的同一个离子对齐,这时候就得用特征矩阵。

特征矩阵:把离散峰组织成表格

特征(feature)指的是在保留时间、m/z、迁移率三个维度上重复出现的离子峰。特征矩阵就是把所有鉴定到的特征整理成一张大表:每一行是一个特征,每一列是一个样本,单元格里是该特征在对应样本中的强度。

典型的特征矩阵包含以下列:

  • feature_id:唯一标识符,比如 FT_00001
  • mz:平均质荷比
  • rt:保留时间(分钟或秒)
  • ion_mobility:离子迁移率(仅 timsTOF 数据有)
  • Sample_01 到 Sample_N:每个样本的强度

有了特征矩阵才能做批次归一化、缺失值填补、差异分析。跨平台合并批次校正就是在多个特征矩阵之间做对齐和校正。

关键点: 特征矩阵的生成质量直接决定下游校正效果。我见过一个项目因为峰值检测阈值设得太低,特征矩阵里混了大量噪声峰,校正后反而引入了偏差。所以拿到 RAW 后,峰值检测的参数要针对仪器平台单独调优。

下面这张图帮你理清从 RAW 到特征矩阵的完整流程:

质谱数据从 RAW 到特征矩阵的处理流程 RAW 文件 峰值列表 特征矩阵 校正后数据 流程说明: 1. 仪器采集原始信号,存储为厂商专属 RAW 格式。 2. 通过峰值检测算法(如 centroiding)提取离散峰,生成峰值列表。 3. 跨样本对齐和特征检测(基于 m/z、RT、IMS),构建特征矩阵。

常见格式解析:mzML 与 mzXML 的异同

你可能会问:既然 mzML 是标准,那是不是全用 mzML 就行了?实际上 mzXML 在早期蛋白质组学社区里用得很广,很多旧工具只支持 mzXML。两者的主要区别:

  • mzML:基于 XML,能存谱图、色谱图、源内信息、仪器配置,结构更完整。ProteoWizard 和 OpenMS 都优先支持。
  • mzXML:比 mzML 更紧凑,读写速度稍快,但扩展性差。如果你只用峰值列表做定量,mzXML 也够用。

我建议做跨平台合并项目时,统一转成 mzML,因为它在迁移率维度上的支持更好。尤其是 timsTOF 的四维数据(m/z、RT、IMS、intensity),mzML 的 <cvParam> 节点可以完整保留。

一个小技巧: 用 msconvert 转换时加上 --zlib 压缩,能把文件体积缩小 30%-50%。虽然读取时会解压,但现代磁盘 IO 足够快,不差这点开销。
msconvert input.raw --mzML --zlib --filter "peakPicking true 1-"

特征矩阵生成时的常见陷阱

我在实战中踩过几个坑,列出来你参考:

  1. 保留时间漂移: 不同批次色谱柱老化导致保留时间偏移,直接合并特征矩阵会把同一个特征当作两个不同特征。必须先做 RT 对齐。
  2. 灵敏度差异: Orbitrap 和 timsTOF 的离子传输效率不同,同一个肽段在两个平台上的信号强度可能差 10 倍。批次校正时必须考虑全局强度缩放。
  3. 缺失值处理: 跨平台的特征矩阵里缺失值比例可能高达 40%-60%。如果直接用 0 填充,统计分析会严重偏差。我习惯用 KNN 或随机森林插补,但前提是特征对齐准确。
再说一个教训: 别信“自动特征检测”结果。我曾经用默认参数跑 OpenMS 的 FeatureFinder,出来的特征矩阵里有大量同位素峰和加合离子峰。手动检查后发现这些伪特征把校正模型搞乱了。建议在特征检测后做一轮过滤:保留单同位素峰、去除加合离子(比如 +2、+3 等)。