RRBS 简化代表性亚硫酸盐测序¶
一句话说明¶
RRBS 是检测 DNA 甲基化的"经济版"方案——先用限制酶把基因组切成小段,只挑 CpG 富集的片段做亚硫酸盐处理和测序,花 WGBS 十分之一的成本覆盖大部分重要的甲基化位点。
核心知识点¶
要点1:RRBS 技术原理¶
- RRBS = Reduced Representation Bisulfite Sequencing(简化代表性亚硫酸盐测序)
- 用 MspI 限制性内切酶(识别 CCGG 序列)切割基因组
- 选取 40-220bp 片段(富含 CpG 位点的区域)
- 亚硫酸盐处理:未甲基化的 C → U(测序读为 T),甲基化的 C 不变
- 白话类比:WGBS 是给整本书每个字做标记,RRBS 是只挑有重点标记的页做检查
要点2:RRBS vs WGBS¶
| 特征 | RRBS | WGBS |
|---|---|---|
| 基因组覆盖 | ~10-15% CpG 位点 | ~90% CpG 位点 |
| 测序量 | 3-5 GB | 30-90 GB |
| 成本 | 低(约 WGBS 的 1/10) | 高 |
| CpG 岛覆盖 | 高(~85%) | 高 |
| 增强子/基因间区 | 覆盖低 | 覆盖高 |
| 起始 DNA 量 | 10-300 ng | 200 ng-5 μg |
要点3:MspI 酶切的巧妙设计¶
- MspI 识别 CCGG,切割位点固定在 CpG 二核苷酸附近
- 所有 MspI 片段的两端都包含 CpG → 天然富集 CpG 区域
- MspI 不受 CpG 甲基化影响(与 HpaII 不同),无论是否甲基化都能切
- 这保证了无偏地取样所有 CpG 状态
要点4:数据分析要点¶
- 比对工具:Bismark(支持亚硫酸盐转化后的比对)
- 甲基化水平 = 甲基化 reads / (甲基化 + 未甲基化 reads)
- 要注意端部 CpG 的偏差(MspI 切割位点处的填充碱基)
- 差异甲基化分析:methylKit / DSS
实战代码¶
# ===== RRBS 数据分析流程 =====
# 1. 质控
fastqc -t 4 sample_R1.fastq.gz sample_R2.fastq.gz
# 2. 去接头 + RRBS 专用模式
# --rrbs: 自动处理 MspI 切割位点引入的填充碱基
# 这一步会去掉端部人工引入的碱基,避免甲基化水平偏差
trim_galore --paired --rrbs -o trimmed/ \
sample_R1.fastq.gz sample_R2.fastq.gz
# 3. 准备 Bismark 参考基因组索引(只需做一次)
bismark_genome_preparation --bowtie2 /ref/hg38/
# 4. 比对:Bismark 处理亚硫酸盐转化后的序列
# Bismark 会自动考虑 C→T 转化,三种情况对应三种比对
bismark --genome /ref/hg38/ --bowtie2 -p 4 \
-1 trimmed/sample_R1_val_1.fq.gz \
-2 trimmed/sample_R2_val_2.fq.gz \
-o aligned/
# 5. 去重(RRBS 不建议用常规 PCR 去重)
# 因为 MspI 切割位点固定,同一位置的 reads 不一定是 PCR 重复
# 但如果 PCR 扩增过多,仍需去重
deduplicate_bismark --paired aligned/sample_pe.bam
# 6. 提取甲基化信息
# --comprehensive: 合并 CpG/CHG/CHH 上下文
# --cytosine_report: 生成全基因组胞嘧啶报告
bismark_methylation_extractor --paired-end --comprehensive \
--cytosine_report --genome_folder /ref/hg38/ \
-o methylation/ aligned/sample_pe.deduplicated.bam
# 7. 用 methylKit 做差异甲基化分析(R 代码)
# 以下在 R 中运行
# ===== R: methylKit 差异甲基化分析 =====
library(methylKit)
# 读取 Bismark 的 cytosine report 文件
# 每个文件对应一个样本
file_list <- list(
"sample1_CpG_report.txt", # 对照组样本1
"sample2_CpG_report.txt", # 对照组样本2
"sample3_CpG_report.txt", # 处理组样本1
"sample4_CpG_report.txt" # 处理组样本2
)
# 读取数据,设定样本 ID、处理组信息、最低覆盖度
myobj <- methRead(file_list,
sample.id = list("ctrl1", "ctrl2", "treat1", "treat2"),
treatment = c(0, 0, 1, 1), # 0=对照,1=处理
assembly = "hg38",
context = "CpG",
mincov = 10) # 至少 10x 覆盖度
# 过滤极高覆盖(可能是 PCR 偏差)
filtered <- filterByCoverage(myobj,
lo.count = 10, # 最低 10 reads
hi.perc = 99.9) # 去掉 top 0.1%
# 合并所有样本的共同 CpG 位点
meth <- unite(filtered, destrand = FALSE)
# 差异甲基化检测
diff <- calculateDiffMeth(meth)
# 筛选显著的差异甲基化位点
# 甲基化差异 > 25%,q值 < 0.01
hyper <- getMethylDiff(diff, difference = 25, qvalue = 0.01, type = "hyper")
hypo <- getMethylDiff(diff, difference = 25, qvalue = 0.01, type = "hypo")
面试常问点¶
★ RRBS 为什么选 MspI 酶?¶
参考答案:MspI 识别 CCGG 序列,切割位点天然包含 CpG 二核苷酸。这意味着酶切产生的所有片段两端都有 CpG,片段本身也富含 CpG。最关键的是 MspI 不受 CpG 甲基化状态影响,无论甲基化与否都会切割,保证了无偏取样。
★ RRBS 什么时候用,什么时候用 WGBS?¶
参考答案:RRBS 适合预算有限或样本量大的研究,能覆盖约 85% 的 CpG 岛,性价比很高。但如果需要分析增强子、基因间区等远离 CpG 岛的区域,就必须用 WGBS。另外如果研究人群的表观遗传年龄预测,很多 clock 位点在 CpG 岛外,也需要 WGBS。
速查卡片¶
| 问题 | 一句话答案 |
|---|---|
| RRBS 全称 | Reduced Representation Bisulfite Sequencing |
| 核心酶 | MspI(识别 CCGG) |
| CpG 覆盖率 | ~10-15% 全基因组 CpG,~85% CpG 岛 |
| 推荐比对工具 | Bismark |
| 差异甲基化工具 | methylKit / DSS |
| 与 WGBS 关系 | RRBS 是 WGBS 的低成本替代 |
| 去接头注意事项 | 必须用 --rrbs 模式去填充碱基 |
| 适用场景 | 大样本量、预算有限、关注 CpG 岛区域 |