4. 原始数据格式:RAW文件结构、谱图类型、峰列表与元信息查看
搞定量蛋白质组学,大部分时间都在跟 RAW 文件打交道。你问问任何一个做质谱的,他们电脑里最多的东西是什么?十有八九是 .raw。这一章咱们就把这个玩意儿扒开看看,它到底是个什么结构,藏着哪些关键信息。
4.1 RAW 文件到底是个什么结构?
RAW 文件是 Thermo Fisher 家的专有格式。说白了,它是一个二进制容器,里面的数据不是你能用记事本打开的。它的核心逻辑是把质谱仪采集到的所有信号,按照“扫描”为单位组织起来。
我个人习惯把 RAW 文件想象成一卷老式电影胶片:
- 一帧帧画面:就是一个个“扫描(Scan)”。
- 画面内容:就是每个扫描时刻的质谱图。
- 画面的元数据:比如拍这张时用的什么镜头(扫描类型)、什么光圈(碰撞能量)、什么时间(保留时间)。
结构上主要分三大块:
| 模块 | 内容 | 备注 |
|---|---|---|
| Instrument Method | 仪器方法参数(扫描范围、分辨率、AGC Target等) | 这部分决定了数据怎么采集 |
| Scan Data | 所有的谱图数据(m/z, 强度) | 核心内容,体积最大 |
| Trailer Extra | 每个扫描的附加信息(离子注入时间、AGC充填量等) | 对质量控制非常关键 |
4.2 谱图类型:全扫描、SIM 和 MS/MS
为什么要区分谱图类型?因为不同级别的扫描在Pipeline里干的事不一样。MaxQuant在读取RAW时,依赖这些谱图类型标签来分配任务。常见的有三种:
- MS1 (Full Scan):全扫描谱图。范围宽、分辨率高,用来定量母离子。在MaxQuant里,提取色谱峰(XIC)用的就是这里面的数据。
- SIM (Selected Ion Monitoring):选择性离子监测。窄窗口扫描,灵敏度高,常用于靶向定量。在非靶向流程中不太常见。
- MS/MS (MS2):二级质谱图。把选定的母离子打碎,得到碎片离子信息,用于肽段鉴定。
有时候你还会看到一种叫“FAIMS”或“DDA/DIA”的控制方式。DDA里,一次MS1扫描之后,跟着几个依赖性的MS/MS扫描;DIA里则是固定的宽窗口非依赖碎裂。了解这些,能帮你判断Pipeline里的一些参数该不该开。
4.3 峰列表:Centroid vs. Profile
质谱仪采集到的原始信号是连续波峰——这叫Profile数据。但Profile文件太大,不利于运算和存储。你可以把Profile想象成一张模糊的铅笔素描,而Centroid(也叫Peak Picking)就是把素描里所有线条的交叉点提炼成一个点。
两者区别如下:
| 类型 | 形式 | 优点 | 缺点 |
|---|---|---|---|
| Profile | 连续点对 (m/z, Intensity) | 保存完整峰形,适合可视化 | 文件巨大,运算慢 |
| Centroid | 单点对 (m/z, Intensity) | 文件小,运算快,搜索引擎喜欢 | 丢失峰形信息 |
你想想看,一个4小时DDA实验的RAW文件可能到2GB。如果是Profile模式,这个数字至少翻一倍。MaxQuant内部在处理时,会自动把Profile转换成Centroid再去做匹配和定量。但如果你的RAW文件本身就是Centroid的,那就省去了这步转换。
这里有个坑:有些老仪器或特定采集模式(比如某些FAIMS方法),输出的RAW里可能混合了Profile和Centroid数据。我曾经碰到过一次,某个样本里所有MS2都是Profile格式,MaxQuant直接报错跳过,最后鉴定数只有旁边样本的一半。排查了俩小时才发现是仪器设置里那个“Save Profile MS2”的选项被勾上了。
4.4 如何查看元信息?
元信息是RAW文件的“身份证”。你不需要把它全背下来,但得知道去哪里查。我常用的工具有几个:
- Thermo RawFileReader:官方给的.NET库,可以用C#或Python调用。
- ThermoRawFileParser:这个我强烈推荐。它是跨平台的,能直接把RAW文件转成可读的MGF、mzML甚至列出所有元信息的TXT。
命令行用法很简单:
mono ThermoRawFileParser.exe -i=C:\test.raw -o=C:\output -f=0 -m=0
参数含义:
-i:输入RAW文件路径-o:输出目录-f=0:输出格式为MGF(0=MGF, 1=mzML, 2=Indexed mzML, 3=Parquet)-m=0:元信息输出格式(0=标准日志, 1=JSON)
-m=1打开,输出JSON。这样我可以把它直接拉进Python或Jupyter里解析,不需要手写正则。你们可以试试。
提取出的元信息JSON大概长这样(部分字段):
{
"sourceFile": "C:\\\\test.raw",
"sourceFileChecksum": "A1B2C3D4E5F6...",
"instrument": {
"model": "Orbitrap Eclipse",
"serialNumber": "SN01234",
"firmwareVersion": "3.5.2.1"
},
"runStartTime": "2024-01-15T14:30:00Z",
"msMethod": {
"polarity": "Positive",
"scanRange": "375-1500 m/z",
"resolution": "120000"
},
"scanCount": 245012,
"msOrderStatistics": {
"ms1": 30780,
"ms2": 214232
}
}
这里面的msOrderStatistics特别有用——能一眼看出你MS1和MS2的扫描比例。我一般要求这个比例在1:6左右,太高说明MS/MS跳数不够深,太低说明浪费了扫描时间。
4.5 本章核心逻辑图
下面这张图表展示了从RAW文件到MaxQuant可理解数据流的完整路径:
这张图的核心信息就是:原始RAW经过解析后,有三条并行的信息流——谱图类型、峰列表格式、元信息。它们各自经过处理后,汇聚成MaxQuant可以理解的内部数据结构,最终生成定量和鉴定结果。
多说一句,实际操作中很多问题出在“峰列表格式检测”这一步。如果你的RAW里Profile数据过多,MaxQuant在转换时会消耗大量内存和CPU。这时候最好的办法不是去改RAW(改不了),而是先在ThermoRawFileParser里做一次profile-to-centroid的批处理,把中间文件导出来再跑MaxQuant,速度能快30%以上。