跳转至

蛋白组DIA定量分析


一句话说明

DIA(数据非依赖采集)蛋白组学是新一代蛋白质定量技术——它不像DDA那样"挑选"离子进行碎裂,而是把所有离子按m/z范围"全部扫一遍",实现更全面、更可重复的蛋白质定量,就像考试从"抽题考"变成"全考"。


核心知识点

要点1:DDA vs DIA核心区别

  • DDA(数据依赖采集):每个扫描周期只选Top N强度的前体离子碎裂——随机性大,不同样本可能选到不同的肽段
  • DIA(数据非依赖采集):把整个m/z范围分成若干窗口(如每25 Da一个),每个窗口内所有离子同时碎裂——无遗漏,可重复
  • 比喻:DDA像老师随机点名提问,每次问的学生不一样;DIA像全班一起答卷,每个人都有成绩

要点2:DIA数据分析策略

  • 谱库搜索(Library-Based):先用DDA数据建立谱库,再用谱库解析DIA数据
  • 工具:OpenSWATH、Spectronaut、DIA-NN
  • 无谱库搜索(Library-Free):直接从DIA数据中提取肽段信息
  • 工具:DIA-NN(directDIA模式)、DIA-Umpire
  • 混合策略:先library-free生成伪谱库,再做library-based搜索

要点3:DIA-NN(2024-2025最热门工具)

  • 作者:Vadim Demichev,开源免费
  • 优势:速度快、灵敏度高、支持library-free模式
  • 核心算法:基于深度学习预测肽段保留时间和碎片离子强度
  • 输出:蛋白/肽段定量矩阵、FDR控制、条件对比等

要点4:DIA数据质控要点

  • 肽段/蛋白鉴定数:好的DIA实验每次能鉴定5000-8000种蛋白(人类样本)
  • 缺失值:DIA的缺失值远少于DDA,通常<5%
  • CV值:技术重复的蛋白定量CV通常<20%
  • FDR控制:肽段和蛋白层面都要求FDR<1%

实战代码

# === DIA-NN分析流程(命令行版本) ===
# DIA-NN 1.9+ 安装:从 https://github.com/vdemichev/DiaNN 下载

# 1. Library-free模式直接分析DIA数据
diann \
  --f raw_data/sample1.raw \         # 输入原始数据(支持.raw/.mzML/.d)
  --f raw_data/sample2.raw \
  --f raw_data/sample3.raw \
  --lib "" \                          # 空字符串表示library-free模式
  --fasta human_uniprot.fasta \       # 蛋白质序列数据库
  --threads 8 \                       # 使用8个线程
  --out results/report.tsv \          # 输出报告文件
  --out-lib results/spectral_lib.tsv \# 生成的谱库(可用于后续分析)
  --qvalue 0.01 \                     # FDR阈值1%
  --matrices \                        # 输出蛋白/肽段矩阵
  --met-excision \                    # 考虑N端Met切除
  --missed-cleavages 1 \              # 允许1个漏切
  --min-pep-len 7 \                   # 最短肽段长度7个氨基酸
  --max-pep-len 30 \                  # 最长肽段长度30个氨基酸
  --min-pr-charge 2 \                 # 最小前体电荷2+
  --max-pr-charge 4                   # 最大前体电荷4+
# === DIA-NN结果下游分析 ===
import pandas as pd
import numpy as np
from scipy.stats import ttest_ind
from statsmodels.stats.multitest import multipletests

# 1. 读取DIA-NN输出的蛋白定量矩阵
protein_matrix = pd.read_csv("results/report.pg_matrix.tsv", sep="\t", index_col=0)
print(f"鉴定蛋白数: {protein_matrix.shape[0]}")  # 查看鉴定到的蛋白数量
print(f"缺失率: {protein_matrix.isnull().sum().sum() / protein_matrix.size:.2%}")

# 2. 过滤和填补
# 保留至少在70%样本中有定量值的蛋白
min_valid = int(0.7 * protein_matrix.shape[1])  # 至少70%样本有值
protein_filtered = protein_matrix.dropna(thresh=min_valid)  # 过滤

# 对数变换
protein_log = np.log2(protein_filtered)  # log2变换

# 3. 差异蛋白分析
group_disease = ["sample1", "sample2", "sample3"]  # 疾病组样本名
group_control = ["sample4", "sample5", "sample6"]   # 对照组样本名

results = []
for protein in protein_log.index:
    d = protein_log.loc[protein, group_disease].dropna()  # 疾病组数据
    c = protein_log.loc[protein, group_control].dropna()   # 对照组数据
    if len(d) >= 2 and len(c) >= 2:  # 至少2个有效值
        fc = d.mean() - c.mean()  # log2 fold change
        _, pval = ttest_ind(d, c)  # t检验
        results.append({"Protein": protein, "log2FC": fc, "pvalue": pval})

df_results = pd.DataFrame(results)
# FDR校正
df_results["padj"] = multipletests(df_results["pvalue"], method="fdr_bh")[1]
# 筛选差异蛋白
sig = df_results[(df_results["padj"] < 0.05) & (abs(df_results["log2FC"]) > 1)]
print(f"差异蛋白数: {len(sig)}")

面试常问点

Q1: DIA比DDA好在哪里?

参考答案:DIA的核心优势是"不遗漏、可重复"。DDA因为只选Top N离子碎裂,低丰度蛋白经常被遗漏,而且不同样本选到的肽段可能不同,导致缺失值多(30-50%)。DIA把整个m/z范围全部扫描,理论上不遗漏任何肽段,缺失值通常<5%,而且不同样本间的定量结果高度可重复。但DIA的数据更复杂,需要更强的计算解析能力。

Q2: DIA-NN的library-free模式和谱库模式哪个更好?

参考答案:各有优势。谱库模式如果谱库质量高(来自同类样本的DDA数据),鉴定灵敏度更高。但需要额外做DDA实验建谱库,费时费力。Library-free模式不需要谱库,用深度学习预测肽段碎裂模式,方便快捷。DIA-NN 1.8+版本的library-free模式已经非常成熟,鉴定数量接近甚至超过谱库模式,所以现在越来越多人直接用library-free。


速查卡片

问题一句话答案
DIA全称?Data-Independent Acquisition(数据非依赖采集)
DIA vs DDA缺失值?DIA <5%,DDA 30-50%
DIA-NN是什么?2024-2025最流行的DIA数据分析工具,基于深度学习
Library-free模式需要什么?只需要FASTA蛋白序列库,不需要DDA谱库
DIA FDR标准?肽段和蛋白层面都<1%
DIA适合什么场景?大队列、需要高重复性和低缺失值的定量蛋白组学