跳转至

蛋白质组DIA分析

一句话概述:DIA(数据非依赖采集)蛋白质组学通过对所有前体离子同时碎裂实现高通量、高重复性的蛋白定量,DIA-NN和Spectronaut是两大主流分析软件,2026年Benchmark显示两者在>7600个蛋白中有>7000个重叠。

核心知识点速览

概念白话解释
DIA数据非依赖采集,把所有m/z范围分窗口同时碎裂
DDA数据依赖采集(传统方法),只选Top N强度的前体碎裂
MS1一级质谱,测量前体离子(完整肽段)的m/z
MS2二级质谱,碎裂后测量碎片离子的m/z
谱库已知肽段的碎裂模式参考库(spectral library)
library-free不需要预先建谱库,用AI预测碎裂模式
DIA-NN开源DIA分析软件,支持library-free模式
Spectronaut商业DIA分析软件,GUI友好
FragPipe开源蛋白质组学流水线,支持DIA
FDR假发现率,蛋白/肽段鉴定的统计阈值
LFQ无标记定量,不用同位素标记的蛋白定量方法

一、DIA vs DDA基础

1.1 DDA的局限性

传统DDA采集方式:
  MS1扫描 → 选择强度最高的Top10-20个前体离子
  → 逐个碎裂做MS2 → 回到MS1 → 重复

DDA的问题:
  1. "有钱人效应"——只选最强的离子,低丰度蛋白被忽略
  2. 随机性——不同样本选到不同的离子,重复性差
  3. 缺失值多——50%以上的蛋白可能在部分样本中检测不到
  4. 动态范围有限——高丰度蛋白占用大量采集时间

1.2 DIA的原理

DIA采集方式:
  把整个m/z范围(如400-1200 m/z)分成若干窗口(如25 Da一个窗口)
  每个窗口内所有前体离子同时碎裂
  → 结果是每个窗口的混合MS2谱

DIA的优势:
  1. 全覆盖——不遗漏任何前体离子
  2. 高重复性——每次采集相同的m/z范围
  3. 缺失值少——蛋白在不同样本中都能定量
  4. 定量准确——因为采集全面且一致

DIA的挑战:
  每个窗口的MS2谱是多个肽段的混合谱
  → 需要强大的算法"解卷积"(deconvolution)
  → 这就是DIA-NN和Spectronaut的核心任务

DIA窗口示意:
  窗口1: 400-425 m/z  → 混合MS2
  窗口2: 425-450 m/z  → 混合MS2
  窗口3: 450-475 m/z  → 混合MS2
  ...
  窗口32: 1175-1200 m/z → 混合MS2

二、DIA-NN分析流程

2.1 安装和基本使用

# DIA-NN 2.5.1(2025-2026最新版)
# 下载地址:https://github.com/vdemichev/DiaNN/releases

# Linux安装
wget https://github.com/vdemichev/DiaNN/releases/download/2.5.1/diann-2.5.1.tar.gz  # 下载
tar -xzf diann-2.5.1.tar.gz  # 解压
./diann --help                # 测试安装

# DIA-NN有两种版本:
# Academia版:有限功能,免费用于非营利学术研究
# Enterprise版:全功能,通过Aptila Biotech或Thermo Fisher获取

2.2 谱库生成(Library Generation)

# ===== 方法1:从FASTA预测谱库(library-free,推荐) =====
# DIA-NN内置深度学习模型预测肽段碎裂模式
diann \
  --fasta uniprot_human.fasta \    # UniProt蛋白序列库
  --fasta-search \                 # 从FASTA搜索
  --lib \                          # 生成谱库
  --threads 8 \                    # 线程数
  --predictor \                    # 使用深度学习预测碎裂
  --out-lib predicted_lib.tsv      # 输出预测谱库

# ===== 方法2:从DDA数据建谱库(经验谱库) =====
# 如果有DDA采集的原始数据
diann \
  --f DDA_file1.raw \              # DDA原始数据
  --f DDA_file2.raw \
  --fasta uniprot_human.fasta \
  --lib \
  --threads 8 \
  --out-lib empirical_lib.tsv      # 输出经验谱库

# library-free方法已经足够好
# 只有追求最大深度或靶向分析时才需要建经验谱库

2.3 DIA数据分析

# 使用DIA-NN分析DIA原始数据
diann \
  --f sample1.raw \                # DIA原始数据文件1
  --f sample2.raw \                # DIA原始数据文件2
  --f sample3.raw \                # DIA原始数据文件3
  --lib predicted_lib.tsv \        # 谱库(或用--fasta直接搜索)
  --fasta uniprot_human.fasta \    # 蛋白序列库
  --threads 16 \                   # 线程数
  --out report.tsv \               # 主输出报告
  --out-lib refined_lib.tsv \      # 精炼后的谱库
  --qvalue 0.01 \                  # FDR阈值1%
  --matrices \                     # 输出定量矩阵
  --smart-profiling \              # 智能谱图分析
  --met-excision \                 # 考虑N端甲硫氨酸切除
  --cut K*,R* \                    # 胰蛋白酶切割规则
  --missed-cleavages 1 \           # 允许1个漏切位点
  --min-pep-len 7 \                # 最小肽段长度7
  --max-pep-len 30 \               # 最大肽段长度30
  --min-pr-charge 2 \              # 最小前体电荷2+
  --max-pr-charge 4 \              # 最大前体电荷4+
  --var-mods 1 \                   # 可变修饰数
  --var-mod UniMod:35,15.994915,M  # 甲硫氨酸氧化修饰

# DIA-NN输出文件说明:
# report.tsv — 所有鉴定的肽段和蛋白
# report.pg_matrix.tsv — 蛋白组定量矩阵
# report.pr_matrix.tsv — 前体离子定量矩阵
# report.gg_matrix.tsv — 基因组定量矩阵
# report.stats.tsv — 运行统计信息

2.4 Library-free直接搜索

# 完全不需要预先建库,直接从FASTA搜索
# 2025-2026年推荐的方法

diann \
  --f sample1.raw \
  --f sample2.raw \
  --fasta uniprot_human.fasta \    # 直接用FASTA
  --fasta-search \                 # 启用FASTA搜索模式
  --threads 16 \
  --out report.tsv \
  --qvalue 0.01 \
  --matrices \
  --smart-profiling \
  --predictor                      # 用深度学习预测碎裂

# Library-free模式的优势:
# 1. 不需要DDA数据建库
# 2. 不需要购买谱库数据库
# 3. 结果通常和经验谱库相当
# 4. 更适合非模式生物

三、Spectronaut分析

3.1 Spectronaut概述

Spectronaut是Biognosys公司的商业DIA分析软件

特点:
  - GUI界面友好,适合不会命令行的用户
  - 自动参数优化
  - 内置统计分析和可视化
  - 标准化的报告输出
  - 支持directDIA(library-free)模式

价格:需要购买License,学术版约$2000-5000/年

Spectronaut vs DIA-NN对比(2026年Benchmark):
  - 两者在肺腺癌样本中都鉴定>7600个蛋白
  - 共同鉴定7180个蛋白(重叠率>94%)
  - Spectronaut差异蛋白:1250上调/266下调
  - DIA-NN差异蛋白:1819上调/174下调
  - Top50差异蛋白中34个重叠

3.2 Spectronaut后处理(R语言)

# 使用SpectroPipeR处理Spectronaut输出
# install.packages("SpectroPipeR")  # 2025年Bioinformatics发表
library(SpectroPipeR)

# 读取Spectronaut导出的报告
data <- read_spectronaut("spectronaut_report.tsv")  # 读取报告

# 自动化分析流水线
result <- spectropiper(
  data = data,
  condition_col = "Condition",     # 条件列名
  comparison = c("Tumor", "Normal"),  # 比较组
  fdr_threshold = 0.01,           # FDR阈值
  log2fc_threshold = 1            # log2FC阈值
)

# 输出包括:
# - 标准化的蛋白定量矩阵
# - 差异蛋白列表
# - 火山图和热图
# - 功能富集结果

四、R语言下游分析

# DIA-NN输出的下游统计分析
library(tidyverse)

# 1. 读取DIA-NN蛋白定量矩阵
protein_matrix <- read.delim("report.pg_matrix.tsv")  # 读取蛋白矩阵
rownames(protein_matrix) <- protein_matrix$Protein.Group  # 设置行名

# 2. 数据预处理
# 移除反库和污染物蛋白
protein_clean <- protein_matrix %>%
  filter(!grepl("^REV_", Protein.Group)) %>%   # 去除反库蛋白
  filter(!grepl("^CON_", Protein.Group))        # 去除污染物

# log2转换
quant_cols <- grep("raw$", colnames(protein_clean))  # 定量列
protein_log2 <- protein_clean
protein_log2[, quant_cols] <- log2(protein_clean[, quant_cols])  # log2转换

# 缺失值处理
missing_pct <- rowMeans(is.na(protein_log2[, quant_cols]))  # 缺失比例
protein_filtered <- protein_log2[missing_pct < 0.5, ]  # 保留<50%缺失的蛋白
cat("过滤后蛋白数:", nrow(protein_filtered), "\n")

# 3. 差异蛋白分析(limma)
library(limma)

# 设计矩阵
group <- factor(c(rep("Tumor", 3), rep("Normal", 3)))  # 分组
design <- model.matrix(~ 0 + group)                      # 设计矩阵
colnames(design) <- levels(group)

# limma分析
fit <- lmFit(protein_filtered[, quant_cols], design)   # 拟合
contrast <- makeContrasts(Tumor - Normal, levels = design)  # 对比
fit2 <- contrasts.fit(fit, contrast)                   # 对比拟合
fit3 <- eBayes(fit2)                                   # 贝叶斯估计

# 提取结果
dep_results <- topTable(fit3, number = Inf)            # 所有结果
sig_proteins <- dep_results %>%
  filter(adj.P.Val < 0.05 & abs(logFC) > 1)            # 显著差异蛋白
cat("显著差异蛋白数:", nrow(sig_proteins), "\n")

# 4. 火山图
library(EnhancedVolcano)
EnhancedVolcano(dep_results,
  lab = rownames(dep_results),     # 蛋白名标签
  x = "logFC",                     # X轴:log2FC
  y = "adj.P.Val",                 # Y轴:调整后P值
  pCutoff = 0.05,                  # P值阈值线
  FCcutoff = 1,                    # FC阈值线
  title = "Tumor vs Normal")       # 标题

# 5. 功能富集
library(clusterProfiler)
library(org.Hs.eg.db)

# 上调蛋白的GO富集
up_proteins <- sig_proteins %>% filter(logFC > 0)  # 上调蛋白
ego <- enrichGO(
  gene = rownames(up_proteins),
  OrgDb = org.Hs.eg.db,
  keyType = "UNIPROT",            # UniProt ID
  ont = "BP",
  pvalueCutoff = 0.05
)
dotplot(ego, showCategory = 15)   # 气泡图

五、方法选择指南

# DIA分析工具选择决策树

┌─ 预算充足 + GUI偏好?
│  └─ 是 → Spectronaut
│  └─ 否 → DIA-NN(免费开源)
├─ 有DDA数据建库?
│  └─ 是 → 经验谱库 + DIA-NN/Spectronaut
│  └─ 否 → Library-free模式(推荐)
├─ 需要自动化流水线?
│  └─ 是 → FragPipe(开源,CI友好)
│  └─ 否 → DIA-NN命令行足够
├─ 磷酸化蛋白组?
│  └─ Spectronaut覆盖最高
│  └─ DIA-NN变异性最低
└─ 临床大队列(>100个样本)?
   └─ DIA-NN(速度快,library-free)

常见报错与解决

报错信息原因解决方案
DIA-NN: raw file not found文件路径错误或格式不支持检查路径,确认支持的格式(.raw/.mzML/.d)
Too few identifications谱库不匹配或参数错误检查物种是否正确,用library-free模式
FDR: all filteredFDR阈值太严格放宽到0.05或检查数据质量
Memory error样本太多或谱库太大分批处理或增加内存
Spectronaut: license expired许可证过期续费或转用DIA-NN
Missing values >80%样本间定量一致性差检查样本制备质量,使用MBR

速查表

# DIA分析流程
原始数据(.raw/.mzML) → DIA-NN/Spectronaut搜索
→ 蛋白定量矩阵 → 标准化 → 缺失值处理
→ 差异分析(limma) → 功能富集(clusterProfiler)

# DIA-NN关键参数
--fasta-search: library-free模式
--qvalue 0.01: 1% FDR
--matrices: 输出定量矩阵
--smart-profiling: 智能谱图分析
--predictor: 深度学习碎裂预测
--threads: 线程数(建议≥8)

# FDR控制标准
肽段FDR: ≤1%
蛋白FDR: ≤1%
推荐同时使用target-decoy策略

# 工具对比
DIA-NN: 免费,命令行,library-free优秀
Spectronaut: 商业,GUI友好,报告完善
FragPipe: 免费,流水线,适合自动化
SpectroPipeR: R包,后处理Spectronaut数据

# 典型鉴定数量(人类细胞系)
DIA-NN library-free: 6000-8000蛋白
Spectronaut directDIA: 6000-8000蛋白
DDA+谱库方法: 7000-9000蛋白

面试高频问题

Q1:DIA和DDA的核心区别是什么?

:DDA(数据依赖采集)在每个MS1扫描后只选择信号最强的Top-N个前体离子做MS2碎裂,导致低丰度蛋白被遗漏且重复性差。DIA(数据非依赖采集)把整个m/z范围分成固定窗口,每个窗口内所有前体离子同时碎裂,实现全覆盖。DIA的缺失值少、重复性高、定量更准确,但MS2是混合谱需要复杂算法解析。目前DIA已经成为蛋白质组学的主流采集方式。

Q2:DIA-NN的library-free模式原理是什么?

:Library-free模式不需要预先从DDA实验建谱库。DIA-NN内置的深度学习模型可以从蛋白序列(FASTA文件)直接预测每个肽段的碎裂模式(MS2谱图)和保留时间。分析时,DIA-NN用预测的碎裂模式去匹配实际DIA数据中的MS2信号,通过比对色谱峰形和碎片离子比例来鉴定和定量肽段。2025-2026年的评估显示library-free的结果已经接近甚至达到经验谱库的水平。

Q3:DIA-NN和Spectronaut怎么选?

:2026年ACS Omega的Benchmark显示两者性能非常接近——在肺腺癌样本中都鉴定>7600个蛋白,共同蛋白>7000个。选择主要看需求:①预算有限或需要命令行自动化→DIA-NN(免费开源);②偏好GUI操作和标准化报告→Spectronaut(商业软件);③磷酸化蛋白组→Spectronaut覆盖略高,DIA-NN变异性略低;④大队列临床研究→DIA-NN(速度快,library-free)。

Q4:DIA数据的缺失值怎么处理?

:DIA的缺失值比DDA少很多,但仍然存在。处理策略:①Match Between Runs(MBR)——利用不同样本间的保留时间对齐,从一个样本的鉴定结果去匹配另一个样本的信号,减少缺失值;②过滤——移除在>50%样本中缺失的蛋白;③填补——对于随机缺失用KNN/最小值/中位数填补;④统计方法——使用能处理缺失值的统计方法(如Perseus的imputation或DAPAR/ProStaR)。

Q5:蛋白质组差异分析为什么用limma而不是DESeq2?

:DESeq2是为测序计数数据(离散分布)设计的,蛋白质组的定量数据是连续强度值(log2转换后近似正态分布),不适合用DESeq2的负二项分布模型。limma基于线性模型+经验贝叶斯,适合小样本、连续型定量数据,是蛋白质组差异分析的标准方法。对于大样本量(>20个),也可以用t检验或方差分析,但limma通过借用跨蛋白的方差信息,在小样本时表现更稳健。