
很多做蛋白组学数据分析的同学第一次拿到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的跨样本匹配MBRMatch Between Runs也做得比较成熟。它先把不同样本的定量信号对齐再把低丰度样本里有信号、但在其他样本中信号更高的肽段信息迁移过去从而减少缺失值。这对临床大队列这种样本间差异大的数据特别重要。1.3 适合什么场景从我接触的项目来看DIA-NN最值得用在这么几种场景多中心队列的血清、血浆蛋白组数据需要统一流程、稳定定量组织或细胞样本只做了DIA采集没有DDA建库希望直接无库分析需要输出基因或蛋白级别的定量矩阵继续喂给Perseus、R或Python做差异分析课题组想把分析流程标准化让不同人、不同批次的结果可以横向比较。当然DIA-NN也不是万能的。如果你的样本已经做了非常成熟的DDA谱图库那么用“有库模式”结合DIA数据提高鉴定可靠性也是常见的做法。后面我会把这两种模式的选择逻辑说清楚。2. 动手装好DIA-NN2.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.GroupDIA-NN给蛋白组分配的唯一编号Protein.Ids候选蛋白ID列表Genes对应的基因名Quantity这个前体在当前样本中的定量值Q.Value和Global.Q.Value局部和全局FDR估计值越小越可靠一般筛选阈值就是0.01Potential.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.namesFALSE蛋白矩阵大量缺失低丰度蛋白、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跑出来的那个谱图库文件不是因为它有多特殊而是它让我意识到好的分析工具不是替你做实验而是把实验信息翻译成你能理解的语言。希望这篇分享能帮你在蛋白组学数据分析里少走一段弯路。