跳到主要内容

表观组学实践教程

表观组学关注的不是基因本身的序列,而是基因表达能不能被"打开":染色质开放程度、转录因子结合位置、组蛋白修饰、DNA 甲基化。同一个基因组在不同细胞里呈现不同的表观图谱,这些图谱决定了细胞状态和对环境的反应。

本专栏会围绕最常用的三类实验展开:ATAC-seq(染色质开放区域)、ChIP-seq(蛋白-DNA 结合)、WGBS/RRBS(DNA 甲基化)。思路和 bulk RNA-seq 类似:先搞清楚每步产物是什么,再决定用什么工具把它们跑出来。

表观组要回答的核心问题

转录组告诉你"这个基因表达了多少",表观组告诉你"为什么它能表达 / 不能表达":

问题转录组表观组
哪些基因被打开看 mRNA 量看启动子开放 + TF 结合 + 组蛋白活化标记
这个 TF 在哪里发挥作用找下游差异基因(间接)ChIP-seq 直接看 TF 结合位点
这个增强子调控哪个基因看不到ATAC + Hi-C / 4C 配套
这个表型为什么稳定遗传看不到甲基化(可遗传)
治疗为什么没起效看不到响应基因变化看染色质是否压缩、TF 还能否结合

表观组适合的项目:发育、分化、肿瘤进展(耐药机制)、神经精神疾病、细胞身份建立。不适合:单纯比较两个稳态条件的差异(直接做转录组就行,表观组只是补充证据)。

一个项目大致是什么样子

ATAC-seq 和 ChIP-seq 的分析主线非常像。从一批样本的 FASTQ 出发,到"差异开放区域"或"差异结合位点"表,大致要经过:

步骤典型产物常用工具
接头剪切与质控清洗后的 FASTQfastp、FastQC、MultiQC
比对到参考基因组sorted.bamBowtie2、BWA-MEM
过滤线粒体 / 重复清洁 BAMsamtools、Picard
peak callingnarrowPeak / broadPeakMACS2、MACS3
peak 注释基因附近 peak 映射表ChIPseeker、HOMER
motif 分析显著富集的 motifHOMER、MEME Suite
差异分析差异 peak 列表DiffBind、DESeq2 on peak counts
与表达整合peak ↔ 基因关联自定义脚本 + ggplot2

WGBS/RRBS 的流程不同:比对要用 bisulfite-aware 工具(Bismark、BWA-Meth),输出是每个 CpG 的甲基化率,差异分析常用 methylKit 或 DSS。

常见工具栈

下面是 BioF3 例子里会优先使用的组合:

阶段工具说明
ATAC/ChIP 比对Bowtie2、BWA-MEM两者都行,Bowtie2 对 ATAC 友好
BAM 处理samtools、Picard去重、过滤 MAPQ、去线粒体
peak callingMACS2ATAC 和 ChIP 都支持,参数略不同
peak 注释ChIPseekerR 包,输出表格和图
motifHOMER、MEMEHOMER 一条命令出 motif 报告
差异 peakDiffBind、DESeq2样本数少时 DiffBind 更便捷
可视化deepTools、IGV、pygenometracks覆盖度曲线、heatmap、基因浏览器图
甲基化Bismark、methylKit标准 WGBS/RRBS 流水线

推荐公开数据集

表观组教学比较依赖公开数据,下面几份是常用参照:

数据集类型适合入口
ENCODE K562 ATAC-seqATAC-seq,细胞系ATAC 流程练习ENCODE
ENCODE H3K27ac ChIP-seqChIP-seq + inputChIP 流程、peak 注释ENCODE
10x Genomics PBMC scATAC 10kscATAC单细胞方向的过渡10x Genomics
TCGA / GDC 甲基化450K / EPIC 芯片差异甲基化入门GDC

ENCODE 的好处是样本类型全、质量稳定、每个实验都有对应的 input 或 control,新手跟着跑最不容易出问题。

最小可跑的例子

下面用 R 的 ChIPseeker 包做一次最简单的 peak 注释,它自带一个 Nature Neuroscience 论文发布的真实 narrowPeak 文件。数据很小,跑完只需要几秒:

# 一次性安装依赖(如果还没装)
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install(c("ChIPseeker", "TxDb.Hsapiens.UCSC.hg19.knownGene"))

library(ChIPseeker)
library(TxDb.Hsapiens.UCSC.hg19.knownGene)

# ChIPseeker 自带的示例 peak 文件
peak_files <- getSampleFiles()
peak_files

# 载入其中一个样本的 peak
peak <- readPeakFile(peak_files[[1]])
peak

# 注释到最近的基因
txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene
anno <- annotatePeak(peak, TxDb = txdb, tssRegion = c(-3000, 3000))

# 看每个 peak 落在什么类型的区域
head(as.data.frame(anno))

# 基因组区域饼图
plotAnnoPie(anno)

plotAnnoPie 会画出 peak 主要落在哪些基因组区域(启动子、内含子、基因间等),这也是 ChIP/ATAC 文章里最常见的一张配图。把这个例子读懂,再去跑真实数据的 peak calling、motif 分析就会顺很多。

专栏模块规划

模块主题状态
01实验类型与数据格式已上线
02Peak 注释与多样本比较已上线
03DiffBind 差异结合分析已上线
04Peak 可视化与多样本比较已上线
05Motif 富集与 HOMER已上线
06ATAC-seq 分析要点已上线
07DNA 甲基化分析入门已上线
08表观组与转录组的整合已上线

目前 01-08 全部上线。01-04 带可跑脚本,05-08 为理论 + 代码示例。

推荐前置知识

常见误区

新手做表观组项目最容易的几个判断错误:

误区 1:peak 数量等于实验质量

样本 A 出 50000 个 peak,样本 B 只出 30000 个 — 不一定是 A 测得"更深更好"。peak 数量受测序深度、过滤阈值、call peak 参数严苛程度影响很大。看 FRiP(reads in peaks 比例)、TSS enrichment 这些标准化指标比 peak 数量更可靠。

误区 2:只做 peak 数量比较,不做 peak 强度分析

A 样本和 B 样本 peak 列表 90% 重叠,但同一个 peak 在 A 里可能 reads 数 100,在 B 里只有 10 — 这才是真差异用 DiffBind 做基于 reads 强度的差异分析,光比较 peak 集合 overlap 信息量不足。

误区 3:把 ChIP-seq 当 RNA-seq 思路做差异

ChIP / ATAC 不能用全转录组的 DESeq2 直接套。peak 是按位置定义的,不同样本的 peak 不一致 — 要先建 consensus peak set,再在 consensus 上数 reads,DiffBind 把这套封装好了。

误区 4:把启动子 peak 当成调控 peak

很多 ChIP / ATAC 的 peak 落在启动子,但真正决定细胞身份的往往是远端增强子(TSS 几十 kb 之外)。注释 peak 时要区分 promoter / enhancer / gene body,不要全归到 "最近基因" 就完事。

误区 5:忽略 input / IgG 对照

ChIP-seq 没有 input 是没法做正经分析的 — peak caller 没办法区分"真信号"和"基因组开放区域的非特异背景"。项目设计阶段必须每个 condition 至少配一个 input。ATAC-seq 不强制要 input,但 IgG 对照能区分非特异 Tn5 切割。

参考资源

AI 组学实践

让 AI 带我实战这一篇

AI 会读这篇文章后给你 3-5 步学习计划, 逐步带你学完,最后出 1-3 道题验证你掌握得怎么样。 登录后 AI 才能记住你的进度。

静态文件

离线资料下载

手册 HTML / PDF 已在后台预生成,点击后直接下载网站静态资源。