拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DIA-NN实战指南:从参数设置到结果解读的蛋白组学分析全流程

DIA-NN实战指南:从参数设置到结果解读的蛋白组学分析全流程

很多做蛋白组学数据分析的同学,第一次拿到DIA数据时,心情往往比较复杂。数据量大、二级谱重叠严重,拿传统的MaxQuant去跑,要么内存直接爆炸,要么鉴定结果惨不忍睹。这时候,DIA-NN基本就是我给所有人的推荐答案。

DIA-NN是一款专门面向DIA(数据非依赖采集)质谱蛋白质组学数据的免费搜索软件。它用深度学习模型在无谱图库的情况下直接从DIA原始数据中挖掘肽段信号,速度快、定量稳定、自带跨样本匹配能力,这几年在蛋白组学实验室里几乎成了标配。我见过很多课题组用Orbitrap采集完DIA数据,默认流程就是打开DIA-NN跑一轮,再配合Perseus或R做下游统计。

这篇文章适合两类人:一类是刚接手DIA项目、需要一个靠谱分析工具的新手;另一类是已经在跑DIA-NN,但总觉得鉴定数不稳定、参数不敢动的进阶用户。我会把DIA-NN从安装准备、参数配置、结果解读到问题排查整个流程的关键经验讲清楚,尽量把每个参数背后的“为什么”也说透。

1. DIA-NN是什么

1.1 DIA数据长什么样

要理解DIA-NN,先得知道DIA这种采集方式和其他采集方式的区别。传统的DDA(数据依赖采集)是质谱仪先扫一张一级质谱,挑出丰度最高的几十个前体离子,逐个碎裂采集二级谱。这种方式采集效率高,但存在明显偏见——丰度低的肽段很难被选中,而且同一个样本重复进样时,挑选到的肽段不稳定,定量重现性差。

DIA的做法完全不同:它把整个质荷比范围划分成一系列固定窗口(比如400到1000 m/z分成49个窗口),每个窗口内所有离子一起碎裂,再采集二级谱。这样循环一遍下来,理论上所有能被离子化的肽段都有机会被检测到,偏差小、覆盖率高、定量稳定。

但代价是二级谱变得极其复杂:一个窗口里可能有几十上百种肽段同时碎裂,碎片离子全部叠在一张谱图里,传统搜索引擎很难从中分辨出谁是谁。这就是为什么DIA数据不能直接套用DDA那套搜索逻辑。

1.2 DIA-NN为什么又快又准

DIA-NN把深度学习用在了肽段识别上。传统搜索是对每一张谱图计算理论碎片的匹配度,而DIA-NN会先根据样本的液相色谱条件和离子淌度信息,训练神经网络来预测肽段的保留时间、离子迁移率等参数,再结合精确质量数,在复杂的DIA谱图中定位并量化信号。

很多同学刚打开DIA-NN时会发现,它允许只给一个FASTA蛋白序列库,连谱图库都不用准备。这是因为DIA-NN会先用FASTA生成理论肽段列表,再结合DIA数据本身优化这个候选库。这种“无库分析”模式对没有DDA建库条件、或者样本量很大的团队来说,省下的时间和成本非常可观。

另外,DIA-NN的跨样本匹配(MBR,Match Between Runs)也做得比较成熟。它先把不同样本的定量信号对齐,再把低丰度样本里有信号、但在其他样本中信号更高的肽段信息迁移过去,从而减少缺失值。这对临床大队列这种样本间差异大的数据特别重要。

1.3 适合什么场景

从我接触的项目来看,DIA-NN最值得用在这么几种场景:

  • 多中心队列的血清、血浆蛋白组数据,需要统一流程、稳定定量;
  • 组织或细胞样本只做了DIA采集,没有DDA建库,希望直接无库分析;
  • 需要输出基因或蛋白级别的定量矩阵,继续喂给Perseus、R或Python做差异分析;
  • 课题组想把分析流程标准化,让不同人、不同批次的结果可以横向比较。

当然,DIA-NN也不是万能的。如果你的样本已经做了非常成熟的DDA谱图库,那么用“有库模式”结合DIA数据提高鉴定可靠性,也是常见的做法。后面我会把这两种模式的选择逻辑说清楚。

2. 动手装好DIA-NN

2.1 下载与安装的细节

DIA-NN主要在Windows下使用,官方提供的是Windows图形界面版本,下载解压后直接双击DIA-NN.exe就能运行。不需要License,也不用激活码,对实验室用户相当友好。

有三个容易踩的坑,我提前说一下:

  • 安装目录千万别放在带中文或空格的路径里,否则读取raw文件时容易出莫名其妙的问题;
  • 运行需要电脑有.NET相关组件,Windows 10/11基本都自带,但偶尔会有老版本系统报缺文件,去微软官网补装一次就行;
  • 内存建议32GB起步。如果你要跑100个以上样本,做无库分析加MBR内存最好到64GB以上。

我见过有同事把DIA-NN放在桌面上的“新建文件夹(2)”里跑,结果每次读raw都报错。换到D盘根目录下的英文路径后,问题立刻消失。这类环境问题最让人抓狂,但排查起来其实很简单。

2.2 输入文件准备

DIA-NN的输入可以简化为三类。

第一类是DIA质谱原始文件,比如Thermo的.raw、Bruker的.d、SCIEX的.wiff。DIA-NN可以直接读取大多数主流格式;如果你用的是比较冷门的仪器,可以考虑先转成mzML再导入。

第二类是蛋白序列FASTA文件。一般到UniProt下载对应物种的参考蛋白组,人类就选“Reviewed (Swiss-Prot)”版本。这里有一个经验值得分享:直接下载的FASTA文件很大,里面包含大量异构体,DIA-NN搜索时会变慢,蛋白推断也容易变复杂。我通常会稍微处理一下,保留常用转录本,再加一个常见污染物库,后续定量矩阵会干净不少。

第三类是可选的谱图库文件。通过DDA方法建好的谱图库需要转换成DIA-NN支持的格式(比如.speclib)再使用。没有现成谱图库完全没关系,DIA-NN会通过FASTA生成自己的预测库,这是它的招牌功能。

2.3 三种工作模式怎么选

DIA-NN界面最显眼的用法区别,就是“无库”还是“有库”。我按实际项目需求拆成三种模式:

模式输入优点典型场景
无库模式DIA数据 + FASTA不需要额外建库,省时省力常规DIA项目、临床大队列
生成库模式DIA数据 + FASTA会输出预测谱图库,后续可复用第一批样本分析,顺便为后续批次建库
有库模式已生成的.speclib + DIA数据搜索速度更快,结果更稳定已有成熟谱图库,或做验证性分析

我自己的习惯是:同一个项目的第一批DIA数据,第一次一定用无库模式,同时勾选生成谱图库。等第一批跑完,检查鉴定数、定量质量没问题后,这个谱图库就留下来。到第二批样本进来时,再改用有库模式做快速分析。这样既保证第一批结果可靠,又让整个项目的后续效率提升明显。

3. 核心参数怎么调

3.1 质谱类型与实验设计

DIA-NN界面上方会让你设置质谱类型。Orbitrap和TOF两类仪器在碎片谱质量和离子迁移率上有差异,对应的参数模板也不同。这一步选错,保留时间预测模型和窗口划分逻辑会整体偏离。

在“Experimental design”区域,可以选择是否做内标归一化。如果用iRT肽段做了校准,可以在这里指定;没有特殊要求时一般保持默认。界面里还有一个“Fast”和“Accurate”的切换,代表快速模式和精确模式。精确模式会做更精细的信号定型和保留时间校正,时间代价更高。我的建议是:数据量少于50个样本、对结果质量要求高时选Accurate;如果只是先看个大概趋势,用Fast快速试参就够了。

3.2 酶切、修饰与肽段范围

这部分必须和实验端严格对齐。如果样本是用Trypsin酶解的,DIA-NN这里就选Trypsin/P;如果加了LysC或者别的酶,也要对应修改。漏切位点默认是1,我实测下来常规消化条件的项目用1就够了,改成2会让搜索空间变大、耗时变长,但鉴定数并不一定显著提升。

可变修饰至少要把Oxidation(M)勾上。如果样品做过TMT或者iTRAQ标记,还要按试剂盒说明书加对应标记修饰。这里常见的坑是:修饰设置和实验实际不一致。比如样本有乙酰化修饰,你却只勾了氧化,大量发生质量偏移的肽段就搜不出来,鉴定数会明显偏低。

肽段长度默认是7到30个氨基酸,一般保持默认。肽段质量我通常不加限制,让软件自动处理。还要注意“Specific”级别选的是Trypsin,不能用“Unspecific”,否则搜索空间会大得离谱,跑批时间翻几倍。

3.3 搜库、定量与跨样本匹配的关键选项

在“Search”选项卡里,几个比较关键的参数是:

  • 蛋白推断(Protein inference):选Protein Groups,它会把能够被同一组肽段支持的蛋白合并输出,结果可读性好,后续也方便做基因级别分析。
  • 定量方法:默认是Robust LC(高精度),高分辨率Orbitrap数据保持默认即可。
  • 全局FDR:一般设0.01,也就是1%。这个值控制最终报告的可靠程度,太高会带来很多假阳性,太低又损失鉴定数。
  • 质量精度容差:Orbitrap高精度数据用10 ppm左右,TOF仪器根据采集情况适当放宽。
  • MBR(跨样本匹配):建议样本数不超过50且内存充足时开启。它显著降低低丰度蛋白的缺失值,后续差异分析会好做很多。

DIA-NN里还有一个“No shared peptides”选项,勾选后会过滤掉所有共享肽段,只保留可唯一映射到单个蛋白的肽段用于定量。这对理解某个蛋白丰度更严谨,但也会损失一部分信息。我做细胞样本时通常关掉,做血浆样本时会开,因为血浆样本共享肽段干扰更大。

3.4 一套可以直接用的推荐参数

这里给出一套常规Orbitrap DIA项目的参数,场景是细胞裂解液、120分钟梯度、一共27个RAW文件:

参数项推荐值理由
质谱类型Orbitrap对应高分辨率采集模板
模式Accurate数据量不大,求质量
酶切Trypsin/P,漏切1与常规溶液内酶解一致
修饰Oxidation(M);Acetyl(Protein N-term)覆盖最常见可变修饰
肽段长度7-30默认即可
蛋白推断Protein Groups输出易读,下游友好
全局FDR0.01兼顾可靠性和鉴定数
MBR开启27个样本量不算大
定量方法Robust LC (high accuracy)匹配高分辨质谱采集
输出勾选生成谱图库后续批次复用

这套参数在我项目里,人类细胞样本一般能鉴定到9000到11000个蛋白组,具体数看样本复杂度和色谱分离度。如果鉴定数明显低于这个水平,大概率不是参数问题,而是样本制备或LC梯度的问题,这个后面会细说。

4. 跑完之后怎么看结果

4.1 输出文件到底有哪些

DIA-NN跑完后,会在输出目录里生成一批文件。新手上路最容易弄混的是各个文件的作用,我整理成一张表:

文件内容常用场景
report.tsv前体级别的全部搜索结果,包含定量值和质控列深度质控、前体定量分析
report.pr_matrix.tsv肽段定量矩阵,行为肽段,列为样本肽段级别差异分析
report.pg_matrix.tsv蛋白组定量矩阵(去掉共享肽段)蛋白级别定量、下游统计
report.unique_peptide_matrix.tsv唯一肽段定量矩阵保守定量分析
report.quantification.tsv每个样本的定量总览样本质量评估
*.speclib预测生成的谱图库后续批次搜索复用

4.2 report.tsv里的核心列怎么读

report.tsv是信息最全、也最容易让人绕晕的文件。每一行代表一个前体,也就是一个特定的肽段电荷状态。常见列包括:

  • Protein.Group:DIA-NN给蛋白组分配的唯一编号;
  • Protein.Ids:候选蛋白ID列表;
  • Genes:对应的基因名;
  • Quantity:这个前体在当前样本中的定量值;
  • Q.Value和Global.Q.Value:局部和全局FDR估计值,越小越可靠,一般筛选阈值就是0.01;
  • Potential.Contaminant:是否为潜在污染蛋白,跑完后要专门过滤掉标记为TRUE的行。

很多人拿到report.tsv后直接当蛋白表用,这是不对的。这个文件是前体级别,同一个蛋白会对应多行不同前体。要做蛋白差异分析,应该用pg_matrix.tsv,或者用report.tsv按Protein.Group聚合后再处理。

4.3 如何清洗DIA结果得到一张蛋白定量表

从DIA-NN输出到最终用于统计的蛋白定量表,我固定走三步。

第一步,过滤。把Potential.Contaminant为TRUE的条目全部删掉,同时确认没有反库(decoy)条目混在最终报告里。

第二步,决定缺失值规则。蛋白组学数据天然存在缺失值。我会把某个蛋白在至少70%以上样本中有定量值作为保留标准。后续用Perseus做分析时,缺失值通常要替换为从分布底部抽样的数值,而不是直接填0。

第三步,归一化。DIA-NN内部已经做了基本归一化,但跨批次比较时建议再用R或Perseus做一轮中位数归一化,或者用内参蛋白校正。这一步对临床样本尤其重要,能明显降低进样量不同带来的批次差异。

4.4 下游分析怎么接

清洗好的蛋白定量表可以直接导入Perseus。我常用的流程是:读入表格,按分组定义样本列,做缺失值过滤,用t检验或ANOVA找差异蛋白,最后导出火山图数据和热图数据。如果要在R里做,可以用DEP包读取DIA-NN的报告,也可以用limma处理差异分析。

有些同学喜欢在report.tsv里用Excel做筛选,小样本勉强可以,样本一多就非常容易出错。最稳妥的方法是:从DIA-NN只拿相对原始的数据,所有清洗和统计交给脚本或Perseus,整个过程可追溯,也好复现。

5. 常见报错与实战排坑速查表

5.1 运行层面的问题

先说三件大家最容易撞上的事。

程序双击打不开。常见原因是系统组件缺失或者目录权限不对。把整个文件夹换到C盘根目录下一个不带中文的路径,多数能解决;如果还不行,补装.NET组件。

软件能开,但读取raw文件失败。优先检查raw文件是不是被其他软件占用,以及文件本身是否完整。其次看格式兼容性。如果遇到旧版本文件格式或自定义采集参数,建议先用质谱厂家软件导出成mzML再导入。

跑批过程中内存溢出。无库模式加MBR是内存大户。如果电脑只有32G内存,跑40个以上样本的队列会比较吃力。我的处理办法是减少并行线程数,或者把样本分批跑,生成谱图库后再用有库模式合并。

5.2 鉴定数与定量质量异常

鉴定数太少,远低于预期,这种问题最让人头大。根据我的排坑经验,按以下优先级排查:

  • 先查FASTA。有没有选对物种?是不是只保留了参考蛋白组而不是整个泛基因组?
  • 再查修饰设置。是否遗漏了样本制备中实际发生的修饰?
  • 然后查梯度。120分钟梯度和60分钟梯度的窗口优化参数不同,DIA-NN里“Sliding window”等选项要跟液相条件匹配。
  • 最后查质量精度容差。如果采集质量偏移大,10 ppm定太严会丢信号,可以适当放宽。

定量CV高(重复样本之间偏差大),除了仪器稳定性,多半是MBR没开或者样本前处理批次差异过大。可以看report.quantification.tsv中各样本的定量总量是否在一个量级,如果差异超过几倍,进样量方面大概率有问题。

5.3 问题排查速查表

现象可能原因处理建议
软件打不开系统组件缺失、路径带中文换纯英文路径,补装.NET组件
raw读取失败文件被占用、格式不兼容关闭其他软件,必要时转mzML
跑批极慢线程配置不合理、无库模式复杂度高调整线程,先小样本试跑
内存溢出MBR+无库模式内存消耗大分批跑,减少线程,增大内存
鉴定数远低于预期FASTA不全、修饰设置错误、梯度不匹配按5.2顺序排查
定量CV高样本制备差异、MBR未开检查仪器稳定性,开启MBR
报告读入R报错列名重复、类型不一致设置check.names=FALSE
蛋白矩阵大量缺失低丰度蛋白、MBR未开启考虑开启MBR,调整过滤阈值

5.4 我实测下来的几条独门心得

第一,不要拿一个超大规模数据集直接开跑。我第一次用DIA-NN时,一次性把200个队列样本丢进去,结果跑了三天,日志里全是内存告警。后来改成先跑前5个样本,确认结果没问题后再分批跑完整队列,效率反而高很多。

第二,DIA-NN的log文件是极好的排坑入口。跑批时它会记录每个步骤耗时、跳过多少谱图、识别到多少前体。多看看log,很多异常在结果出错之前就能发现。比如某个样本采集数量异常低,log里会显示“Processed only XXX spectra”,这时候就要检查raw文件本身是否有问题。

第三,样本名称规划很重要。DIA-NN输出矩阵的列名就是raw文件名。如果你一开始命名为“sample1”“sample2”,后面做差异分析时根本分不清分组。建议上机采集前,用“组别_样本编号_重复编号”的方式命名raw文件,DIA-NN跑出来的矩阵就会一目了然。

做蛋白组学数据分析这条路,DIA-NN给了我一个很大的感触:工具选对了,很多之前觉得“不靠谱”的数据,往往只是没有用对方法。DIA数据本身是高度规则化的采集方式,只要把参数逻辑理顺,让软件的理解和实验室的操作对得上,大多数项目都能稳定地产出可用结果。我至今还保留着第一次用DIA-NN跑出来的那个谱图库文件,不是因为它有多特殊,而是它让我意识到,好的分析工具不是替你做实验,而是把实验信息翻译成你能理解的语言。希望这篇分享能帮你在蛋白组学数据分析里少走一段弯路。

返回列表