第2章 质谱数据基础
2.1 质谱原理:从分子到信号
做蛋白质组学建模,第一关就是搞懂质谱怎么工作的。说白了,质谱就是个“称重器”——但它称的不是大胖子,而是带着电荷的分子。我刚开始学的时候,总觉得这东西跟化学分析离得很远,直到亲手处理过几TB的raw数据,才明白原理决定了模型能学到什么。
质谱的核心流程分三步:电离 → 质量分析 → 检测。你想想看,一个中性蛋白质分子没法直接飞进质量分析器,先得给它带上电荷。常用的电离方式有电喷雾电离(ESI)和基质辅助激光解吸电离(MALDI)。ESI在液相色谱串联质谱(LC-MS/MS)里用得最多,它能产生多电荷离子,比如一个+2的肽段比+1的好测,因为m/z变低了。
质量分析器负责把不同m/z的离子分开。常见的有四极杆(Quadrupole)、离子阱(Ion Trap)、飞行时间(TOF)和轨道阱(Orbitrap)。Orbitrap现在很流行——分辨率高,质量准确度能到ppm级。我记得有一次分析一个磷酸化肽段,Orbitrap把两个质量差只有0.02 Da的峰分开了,换台低分辨仪器根本不可能。
2.2 MS/MS谱图类型:碎片是怎么来的
只做一级质谱(MS1)只能知道肽段的质量,想要知道序列,得把肽段打碎再做二级质谱(MS/MS)。我习惯把MS/MS谱图想象成“分子拼图”——每一根碎片峰告诉你一部分序列信息。
根据碎裂方式不同,MS/MS谱图分成几大类:
| 碎裂方式 | 特点 | 常见仪器 |
|---|---|---|
| CID(碰撞诱导解离) | 用惰性气体碰撞,能量较低,主要产生b/y离子 | 离子阱、四极杆-TOF |
| HCD(高能碰撞解离) | 在碰撞室中高能碎裂,b/y离子更丰富,也可见immonium离子 | Orbitrap |
| ETD(电子转移解离) | 通过电子转移,保留翻译后修饰,产生c/z离子 | 离子阱、Orbitrap |
| EThcD(ETD+HCD组合) | 先ETD再HCD,同时得到c/z和b/y | 高精度Orbitrap |
我做磷酸化蛋白质组学项目时,遇到过一个大坑:CID会把磷酸基团打掉,导致根本看不到修饰位点。后来换成ETD,c/z离子完整保留了磷酸化,说实话好处理多了。你想想看,如果模型只见过CID碎片,它对修饰肽段的预测能力会大打折扣——这直接影响下游建模的泛化性能。
2.3 Raw数据格式与转换:摆脱厂商锁死的苦
质谱仪器厂商会给自家格式起名字——Thermo的.raw、Sciex的.wiff、Bruker的.d、Agilent的.d。这些二进制格式直接读不了,必须用特定SDK。我记得第一次接触.raw,想用Python的pyteomics读,结果报错提示“MSFileReader未注册”,折腾了俩小时才发现要装Thermo的MSFileReader包。
开源社区搞出了通用格式:mzML(基于XML,最推荐)、mzXML(较老)、mzMLb(二进制压缩版)。转换工具也很成熟:
# 使用MSConvert(ProteoWizard)批量转换
msconvert --mzML --filter "peakPicking true 1-" --zlib my_data.raw
# 或者用Python调用pymzml写自定义转换
from pymzml import run
for spectrum in run.MSRun("my_data.mzML"):
print(spectrum.mz, spectrum.i)
转换时要注意几个点:
- 峰拾取:原始数据是轮廓模式(profile),需要转换成中心模式(centroid),否则文件巨大且无法直接做数据库搜索。
- 压缩:建议开启zlib或numpress压缩,mzML文件能缩小到原来的1/5。
- 元数据保留:仪器设置、扫描参数、极性、碰撞能量这些信息对建模很重要别丢了。
下面这张图把质谱数据从样品到谱图的全流程串起来了——你跟着箭头走,就知道每个环节对应什么数据,模型训练时该拿哪些量当输入。
再说说raw格式转换时的常见坑。我见过不少同事直接拿原始.raw跑机器学习——嗯,这绝对不行。因为里面不仅包含谱图数据,还有仪器状态、自动增益控制(AGC)目标值、碰撞能量设定等“噪音”。模型只吃m/z和强度就行,其他东西你得自己判断哪些能当额外特征。
好了,这一章就这么多。记住:把raw转成干净、标准化的mzML,并且记录好每个谱图的碎裂方式、仪器类型和扫描参数——这些元数据会在你构建模型时派上大用场。