跳到正文
百沐一下百沐一下
本节目录

生信名词扫盲

跟完这篇,您能看懂一份 GEO 数据和一张差异分析结果表里出现的绝大多数术语,不再被 GSE、TPM、padj、批次效应这些词卡住,还能用几行标准代码把编号真正变成手里的数据。

这是一份「速查」,不是从头讲原理的教材。术语按您做分析时碰到的先后顺序分成四组,每个词只给两句话:一句「它是什么」,一句「什么时候会碰到它」。看不懂的时候翻回来对一眼即可,不用背。

怎么用这份速查

  1. 第一次下载公共数据、拿到一堆编号看不懂,先看「数据与文件」。
  2. 打开表达矩阵,发现数字有的是整数、有的是小数,去看「定量单位」。
  3. 跑完差异分析、面对一张结果表里的一堆列名,去看「差异分析」。
  4. 读文献或看报告时遇到一串大写字母缩写,去「常见缩写」里查。

下面每组都用一张表:左边是术语,中间一句话讲清,右边告诉您在哪一步会遇到它。带代码的地方,照着改成自己的文件名就能跑。

数据与文件

这一组是您拿到数据、认清它长什么样时会碰到的词。

术语一句话讲清什么时候会碰到它
GEONCBI 旗下最常用的公共基因表达数据仓库,别人发文章时把数据存这里。想找一套现成的公共数据复现或验证时。
GSE一个「研究」的编号(GEO Series),对应一篇文章的一整套数据。在 GEO 里搜到一个数据集,页面标题就是 GSExxxxx
GSM一个「样本」的编号(GEO Sample),一个 GSE 下面挂着许多 GSM。想知道某个 GSE 里到底有哪些样本、分几组时。
GPL一个「平台」的编号(GEO Platform),说明数据是用哪种芯片或测序平台产出的。需要知道探针 ID 怎么对应到基因、或判断新旧平台能不能合并时。
SRANCBI 存放测序原始数据(reads)的仓库,GEO 里的测序数据原文件通常放在这。想从最原始的测序文件自己跑起,而不是用作者算好的矩阵时。
reads测序仪一次读出的一小段序列,是最原始的测序产物。看到 fastq 文件、或文章里写「共产出多少 M reads」时。
比对(alignment)把每一条 read「贴」回参考基因组或转录组上,确定它来自哪个位置、哪个基因。从原始 reads 走到「每个基因多少条」这一步的中间环节。
测序深度(depth)大致衡量一个样本测得「够不够多」,常用总 reads 数或平均覆盖倍数表示。判断数据质量、或解释某个基因为什么测不到时。
表达矩阵一张「基因 × 样本」的表:行是基因,列是样本,格子里是表达量。几乎所有下游分析的起点,差异分析、聚类都从它开始。
Ensembl ID一种稳定的基因编号,形如 ENSG00000141510,机器友好、不易重名。表达矩阵的行名常是这种 ID,画图前往往要转成好认的名字。
Symbol基因的常用名,形如 TP53,人一眼能认,但偶尔会改名或重名。做图、写文章、跟人交流时用的名字。
Entrez IDNCBI 用的一串纯数字基因编号,如 7157,很多注释工具内部认它。做富集分析时,某些工具要求先把基因转成 Entrez ID。

把这些编号变成手里的数据,最省事的是 GEOquery:给它一个 GSE 编号,它就替您把作者上传的表达矩阵和样本信息一起拉下来。

library(GEOquery)

# 用 GSE 编号拉取一套公共数据(含表达矩阵与样本信息)
gse   <- getGEO("GSE12345", GSEMatrix = TRUE)
eset  <- gse[[1]]        # 一个 GSE 可能对应多个平台,这里取第一个
expr  <- exprs(eset)     # 表达矩阵:行是探针或基因,列是样本
pheno <- pData(eset)     # 样本信息:分组、来源、批次等

拿到的 expr 行名常是探针号或 Ensembl ID,画图前一般要转成认得出的 Symbol。三种基因 ID 的互转,clusterProfiler 里有个常用函数可以做:

library(clusterProfiler)
library(org.Hs.eg.db)    # 人类的基因注释库

# 把 Ensembl ID 批量转成 Symbol 与 Entrez ID
id_map <- bitr(
  gene_ids,
  fromType = "ENSEMBL",
  toType   = c("SYMBOL", "ENTREZID"),
  OrgDb    = org.Hs.eg.db
)

提醒一句:ID 转换从来不是一一对应,总会有一部分转不出来或一对多,这属于正常现象,别指望零丢失。怎么下数据、怎么理 ID,展开可看 从 GEO 下载数据基因 ID 互转

定量单位

同一份数据,表达量可以用不同「单位」表示。先分清哪种能直接比、哪种需要归一化,能少踩很多坑。

术语一句话讲清什么时候会碰到它
counts原始读数计数:一个基因上「落」了多少条 reads,是整数。做差异分析(DESeq2、edgeR)时,它们要的正是这种原始 counts。
CPMCounts Per Million,只按测序深度做了缩放,抵消「测得多测得少」。想在样本之间粗略比较、或做低表达基因过滤时。
TPMTranscripts Per Million,同时校正了基因长度和深度,样本内不同基因也较可比。想比较「同一样本里哪个基因表达更高」、或画热图时。
FPKM / RPKM也校正了长度和深度的老单位;FPKM 对应双端测序,RPKM 对应单端。读较早的文献、或作者只提供了这种矩阵时。
normalization(归一化)去掉技术性差异(深度、文库大小等),让样本之间能公平比较。差异分析、聚类、画图前几乎都要先做,多数工具会替您做好。

一条常被忽视的原则:差异分析要喂原始 counts,别喂已经归一化过的 TPM/FPKM——像 DESeq2 这类方法会在内部自己做归一化,喂错单位会让结果不可靠。TPM/FPKM 更适合可视化和样本内比较。

# DESeq2 的输入应是原始 counts 矩阵(整数),而不是 TPM / FPKM
dds <- DESeqDataSetFromMatrix(
  countData = counts_matrix,   # 原始 counts
  colData   = sample_info,     # 每个样本属于哪一组
  design    = ~ group
)

单位怎么选、怎么互相换算,展开可以看 看懂表达量单位

差异分析

这一组是您跑完差异分析、面对结果表和下游解读时最常遇到的词。

术语一句话讲清什么时候会碰到它
DEGDifferentially Expressed Gene,差异表达基因:两组之间表达量有显著差异的基因。差异分析的核心产出,「筛出了多少个 DEG」就是在说它。
fold change(FC)倍数变化:处理组相对对照组表达量的比值,2 就是高一倍。衡量「差异有多大」时。
log2FC对 fold change 取以 2 为底的对数:+1 表示上调一倍,-1 表示下调一半。结果表里几乎必有这一列,火山图的横轴也是它。
p 值「如果两组其实没差异,出现眼前这么大差异的概率」,越小越不像是偶然。判断单个基因差异是否显著时。
多重检验问题一次同时检验上万个基因,光靠运气也会冒出一批「假显著」。解释为什么不能只看原始 p 值时。
padj / FDR校正多重检验后的 p 值;FDR(假发现率)估计「筛出的一批里有多少是假的」,常用 BH 法算出,结果列名多写作 padj筛 DEG 时该用来卡阈值的,是它,而不是原始 p 值。
批次效应(batch effect)因不同批次、不同日期、不同机器带来的系统性技术差异,会假装成生物学差异。样本分组恰好和处理时间重合、聚类时样本按批次而非分组聚在一起时。
富集分析(enrichment)看您这批 DEG 是否「扎堆」落在某些已知通路或功能类别里,把一串基因翻译成生物学含义。拿到 DEG 之后,想回答「它们到底在干什么」时。

筛 DEG 时常见的一组阈值padj < 0.05|log2FC| > 1(即倍数变化超过 2 倍)。请把它当常用惯例、不是铁律:样本量小、信号弱时可以放宽,DEG 太多时可以收紧,关键是先想清楚您要的是「宁缺毋滥」还是「不漏掉」。为什么要用 padj 而不是原始 p 值,可看 多重检验校正

一张典型的 DESeq2 结果表长这样,认得列名就够用:

# DESeq2 结果表的主要列:
#   baseMean         该基因的平均表达水平
#   log2FoldChange   两组间的 log2 倍数变化
#   pvalue           原始 p 值
#   padj             校正后的 p 值(用它来卡阈值)
res <- results(dds)

# 按常用惯例筛 DEG(阈值请按您的数据调)
deg <- subset(res, padj < 0.05 & abs(log2FoldChange) > 1)

逐列读懂这张表,可看 看懂差异分析结果表

批次效应处理有两条常规路子:能提前记录批次的,就把批次放进统计模型的设计里一起估计;只是为了可视化,则常用 limma::removeBatchEffect 之类先「扣掉」批次再画图。

# 能记录批次时,把它放进模型里,让差异估计自动扣掉批次的影响
design <- ~ batch + group

# 只为画图去批次时用这一步——别把去批次后的数据再拿去做差异检验
library(limma)
expr_for_plot <- removeBatchEffect(log_expr, batch = sample_info$batch)

要点是先识别、别硬洗——把真信号一起洗掉,比留着批次效应更糟。更细的做法见 处理批次效应

常见缩写

读文献、看报告时最常撞见的一串大写字母,集中放这儿备查。

缩写全称 / 含义什么时候会碰到它
RNA-seq转录组测序,测量样本里各基因的表达量。最常见的表达数据来源。
QCQuality Control,质量控制:上游滤掉低质量数据的一系列检查。正式分析前的第一步。
PCA主成分分析,把高维数据压到二维看样本整体分布。看分组是否分得开、有没有离群样本或批次效应时。
GOGene Ontology,一套标准化的基因功能分类体系。做富集分析、想知道 DEG 涉及哪些功能时。
KEGG一个常用的通路数据库,把基因组织成代谢与信号通路。做通路富集、想落到具体通路时。
ORAOver-Representation Analysis,看某功能类别在 DEG 里是否「超额出现」。已经筛好一批 DEG,想做富集时最常用的一种。
GSEAGene Set Enrichment Analysis,不先卡阈值,用全部基因的排序做富集。差异不强、不想硬筛 DEG 时的另一种富集思路。
FDRFalse Discovery Rate,假发现率,即校正后的错误比例。卡显著性阈值时,和 padj 常指同一件事。

ORA 与 GSEA 这两条富集路子怎么选、怎么跑,展开见 富集分析入门

在平台上跑一遍

这些名词您其实不必背下来。在百沐一下上,您只要上传数据、用大白话说清「想比哪两组、想看什么」,平台就替您把 ID 转换、归一化、批次、富集这些环节接好——遇到不认识的列名,也可以直接问它「这一列是什么意思」。第一次上手可以先看 /docs/first-run

相关