SuperAPI AI 工具集

bio-differential-expression-deseq2-basics

数据与分析

查看项目

更新于 10-15 21:55

技能介绍

本技能用于对批量 RNA-seq 计数数据做差异表达分析,核心是用 DESeq2 的负二项 GLM 逐基因拟合、共享离散度收缩,再检验目标系数(Wald)或某因子的联合效应(LRT),并给出收缩后的效应量用于排序。

主要能力与要点:1)单系数假设用 Wald,多水平因子“是否有任何变化”、交互项多于 1 自由度等联合假设必须用 LRT(test='LRT', reduced=);LRT 报告的 LFC 只是 resultsNames 中最后一个系数,不是整体效应。2)LFC 收缩默认用 apeglm(仅接受 coef=);需要任意对比时用 ashr(接受 contrast=);normal 自 v1.16 起准弃用,仅在需要收缩后 p 值时使用。注意收缩不改变 p 值,lfcShrink() 沿用 results() 的未收缩 Wald p 值;若要在过滤后声称 FDR 控制,应使用 lfcThreshold= 或 TREAT。3)设计公式中把关注变量放最后便于阅读,但 results(dds) 默认取最后一个系数,务必显式传 name= 或 contrast=;交互设计中 results(dds, name='treatment_drug_vs_vehicle') 只给出参照基因型下的效应,不是边际平均。配对设计把配对变量放前面(~ patient + tissue)。

必要用法示例(保持原样): library(DESeq2) library(apeglm) dds <- DESeqDataSetFromMatrix(countData = counts, colData = coldata, design = ~ condition) dds$condition <- relevel(dds$condition, ref = 'control') keep <- rowSums(counts(dds)) >= 10 dds <- dds[keep, ] dds <- DESeq(dds) resultsNames(dds) res <- results(dds, name = 'condition_treated_vs_control', alpha = 0.05) res_shrunk <- lfcShrink(dds, coef = 'condition_treated_vs_control', type = 'apeglm')

Salmon/kallisto/RSEM 输入用 tximport() 配合 DESeqDataSetFromTximport(),可自动携带长度偏移。可视化用 vst()(默认,blind 需显式传;n<30 且大小因子相差 >4 倍时考虑 rlog()),不要用 normTransform() 做距离类图,也不要把 VST/rlog 值输入 DE。

已知限制与陷阱:预过滤(rowSums >= 10)只省内存与时间,不等于独立过滤;padj=NA 有独立过滤、Cook 离群、组内全零三种原因;连续协变量不计算 Cook 距离;n>=7 每组时 DESeq() 会替换离群并重拟合(minReplicatesForReplace=7)。apeglm 不支持 contrast=,遇到“KO 中药物效应”这类线性组合会报错,可改用 ~ 0 + group 组合因子并 relevel,或改用 ashr。LRT 的 LFC 容易被误当作总效应,应逐水平提取 Wald 系数。离散度趋势不匹配时可用 DESeq(dds, fitType='local')。大小因子默认 median-of-ratios,零多时用 type='poscounts',单细胞 pseudobulk 常需 poscounts。多数量的差异基因场景需改用 controlGenes 或 spike-in。其他细节(如 de-results、counts-ingest)资料中指向了另行说明,具体版本兼容与更多边界情况请以实际安装包内帮助为准。