第二章:质谱样本处理概述

在开始用 Docker 批量处理质谱样本之前,咱们得先搞清楚几个基本问题。质谱数据长什么样?分析流程有哪些步骤?为什么要费劲搞批量处理?

别急,我一个一个讲。我在实验室里折腾了几年质谱数据,踩过不少坑,吃过不少亏。今天把这些经验掰开揉碎,让你少走弯路。

核心一句话:这一章不是讲理论,而是给你一张“地图”,知道数据从哪里来、到哪里去、中间要过几道关。那我们就开始吧。

2.1 质谱数据格式 —— 五花八门,各有脾气

质谱仪器厂商很多,不同仪器产出的原始数据格式完全不同。你想想看,Thermo 的 .RAW、Bruker 的 .d、Waters 的 .raw(注意大小写不同)、AB Sciex 的 .wiff……光名字就够晕的。

我个人习惯把格式分成三类:

  • 厂商私有二进制格式:比如 .RAW、.d、.wiff。这些格式只有厂商自己的软件才能直接打开,跨平台极差。我曾经在 Mac 上想分析 Thermo 的 .RAW 文件,折腾了三天才找到转换工具。
  • 开放交换格式:最主流的是 mzML(HUPO PSI 标准),还有 mzXML(Sashimi 项目)、mgf(Mascot Generic Format)、mzTab 等。这些格式是纯文本或压缩的 XML/JSON,可读性好,各种开源工具都支持。
  • 中间处理格式:比如 pepXML、protXML、MaxQuant 的 evidence.txt。它们通常是分析流程中的产物,不是原始数据。

那么问题来了,我们做 Docker 批量处理的最终目标,通常是把原始数据转成开放格式(mzML)再走后续流程。所以我强烈建议你在项目初期就统一成 mzML,用 ProteoWizard 的 msconvert 完成转换。

小技巧:msconvert 可以在 Docker 里跑,一句命令搞定转换和压缩。后面章节我会详细讲。

常见质谱数据格式对比
格式类型典型场景开放度
.RAW厂商二进制Thermo Q-Exactive、Orbitrap低
.d厂商二进制Bruker timsTOF低
.wiff厂商二进制SCIEX TripleTOF低
mzML开放XML通用处理高
mzXML开放XML早期工具兼容高
mgf开放文本数据库搜索输入高

2.2 常见分析流程 —— 从质谱图到生物学意义

质谱数据分析可以拆成三大块:预处理、鉴定、定量。说白了就是:

  • 预处理:从原始信号中找出真正的肽段峰,去掉噪音,把不同样本的保留时间对齐(如果需要)。
  • 鉴定:把每一个碎片谱图跟理论谱图比对,确定肽段序列和蛋白质身份。
  • 定量:计算每个蛋白质在不同样本里的丰度变化,比如标记定量(TMT、iTRAQ)或无标记定量(LFQ)。

我记得有一次帮朋友分析一批时间梯度样本,预处理阶段没有做保留时间对齐,结果鉴定出来的肽段数量少了将近一半。后来加了一步峰值对齐,翻了一倍多。你想想看,这一步有多重要。

注意:很多商业化软件把这三大步打包成“一键分析”,但你如果用 Docker 搭建 pipeline,每一步都要单独考虑输入输出格式和参数灵活性。

那这些步骤对批量处理来说意味着什么呢?

  • 预处理通常是最消耗 CPU/内存的一步,尤其峰值检测和去卷积。
  • 鉴定依赖数据库搜索,搜索时间跟谱图数量和数据库大小成正比。如果处理 1000 个 RAW 文件,单线程跑可能要跑一个星期。这里就需要并行和调度。
  • 定量中的标准化步骤需要跨样本统计,不能完全独立跑每个样本。

2.3 批量处理需求 —— 为什么要上 Docker?

单个样本手动用 GUI 软件跑,没问题。但现实是:

  • 一个项目可能有 200 个 RAW 文件,来自 4 个条件、5 个生物学重复、10 个时间点。
  • 需要统一参数、统一版本、统一环境。
  • 你无法保证另一台机器装了一样版本的 ProteoWizard 和 SearchGUI。
  • 甚至你换了个操作系统,某些库就不兼容了。

我曾经在 Linux 服务器上部署了一次经典的“OpenMS + Comet”流程,因为系统库版本问题,编译 OpenMS 花了两个整天,最后还跑不起来。用 Docker 之后,一个 docker pull 搞定了所有依赖。

批量处理需求的核心:可重复、可扩展、可自动化。Docker 恰好能解决环境一致性和并行调度问题。这也正是这门课的主题。

下面这张图把这一章的核心知识串了一下。看完你应该能大概理解:原始数据格式、分析步骤、批量处理需求三者之间是什么关系。

质谱样本处理知识体系 原始数据格式 .RAW / .d / .wiff → mzML / mzXML 预处理 峰检测 / 去噪 保留时间对齐 鉴定 数据库搜索 de novo 测序 定量 标记 / 无标记 归一化与统计 批量处理需求 环境一致 · 并行调度 · 可重复 · 自动编排 Docker 的作用:统一环境、简化部署、支持并行,让批量处理变得可靠而高效。

我自己的一点体会:不要一上来就想着把整套流程都塞进一个 Docker 容器里。先拆开成独立模块(格式转换、预处理、鉴定、定量),每个模块一个容器,再用编排工具(比如 Docker Compose 或 Nextflow)串起来。这样改一个模块不会影响其他模块,排查问题也方便得多。

本章小结