印记基因与等位基因特异性甲基化¶
一句话说明¶
印记基因是一类"偏心"的基因——父母各给了一份,但只有一份在工作(另一份被甲基化沉默了),哪份工作取决于它来自爸爸还是妈妈,这就是等位基因特异性甲基化。
核心知识点¶
要点1:基因组印记是什么¶
- 正常情况:父源和母源等位基因都表达(双等位基因表达)
- 印记基因:只表达父源或母源中的一个(单等位基因表达)
- 被沉默的等位基因通过 DNA 甲基化标记
- 人类约有 100-200 个印记基因
- 白话类比:一对双胞胎(两个等位基因),但家里规定只让老大(比如来自妈妈的)说话,老二(来自爸爸的)必须闭嘴
要点2:印记控制区 ICR¶
- ICR = Imprinting Control Region(印记控制区)
- 一段富含 CpG 的调控序列,在精子或卵子发育时被甲基化
- 甲基化标记在受精后保持,不受全基因组去甲基化的影响
- 经典例子:
- IGF2/H19:ICR 在父源甲基化 → IGF2 表达(来自父亲)
- SNRPN:母源甲基化 → 只表达父源 → 缺失导致 Prader-Willi 综合征
要点3:等位基因特异性甲基化(ASM)分析¶
- ASM = Allele-Specific Methylation
- 需要 SNP 信息区分父源和母源等位基因
- 同一个 CpG 位点,一条染色体甲基化、另一条不甲基化
- 分析步骤:
- 亚硫酸盐测序获得甲基化信息
- 利用杂合 SNP 区分两条等位基因
- 分别计算两条等位基因的甲基化水平
- 检验两条等位基因甲基化是否显著不同
要点4:印记异常与疾病¶
| 疾病 | 涉及基因 | 印记异常 |
|---|---|---|
| Beckwith-Wiedemann | IGF2/H19 | ICR 甲基化异常 → IGF2 过表达 |
| Prader-Willi | 15q11-13 | 父源缺失/母源单亲二倍体 |
| Angelman | UBE3A | 母源缺失/父源单亲二倍体 |
| Silver-Russell | IGF2/H19 | H19 ICR 低甲基化 |
实战代码¶
# ===== 等位基因特异性甲基化分析流程 =====
# 1. 亚硫酸盐测序比对(已完成,使用 Bismark)
# 2. 获取杂合 SNP 信息(从 WGS/WES 数据或公共数据库)
# 3. 用 SNPsplit 按等位基因分割 BAM 文件
# SNPsplit 根据杂合 SNP 将 reads 分配到父源或母源
SNPsplit --snp_file sample_snps.txt \
--bisulfite \
sample.deduplicated.bam
# 输出:
# sample.deduplicated.genome1.bam → 等位基因1(如父源)
# sample.deduplicated.genome2.bam → 等位基因2(如母源)
# sample.deduplicated.unassigned.bam → 无法分配的 reads
# 4. 分别提取两个等位基因的甲基化信息
for allele in genome1 genome2; do
bismark_methylation_extractor --paired-end \
--comprehensive --cytosine_report \
--genome_folder /ref/hg38/ \
-o methylation/${allele}/ \
sample.deduplicated.${allele}.bam
done
# ===== R: 等位基因特异性甲基化检测 =====
library(data.table)
# 读取两个等位基因的 CpG 报告
allele1 <- fread("methylation/genome1/CpG_report.txt",
col.names = c("chr","pos","strand","meth","unmeth","ctx","tri"))
allele2 <- fread("methylation/genome2/CpG_report.txt",
col.names = c("chr","pos","strand","meth","unmeth","ctx","tri"))
# 合并两个等位基因的数据
merged <- merge(
allele1[, .(chr, pos, m1 = meth, u1 = unmeth)],
allele2[, .(chr, pos, m2 = meth, u2 = unmeth)],
by = c("chr", "pos"))
# 过滤低覆盖位点(两个等位基因都至少 5x)
merged <- merged[(m1 + u1) >= 5 & (m2 + u2) >= 5]
# 计算各等位基因甲基化率
merged$rate1 <- merged$m1 / (merged$m1 + merged$u1)
merged$rate2 <- merged$m2 / (merged$m2 + merged$u2)
# Fisher 精确检验:检测等位基因间甲基化差异
merged$pval <- apply(merged[, .(m1, u1, m2, u2)], 1, function(row) {
mat <- matrix(as.numeric(row), nrow = 2, byrow = TRUE)
fisher.test(mat)$p.value
})
# 校正多重检验
merged$padj <- p.adjust(merged$pval, method = "BH")
# 筛选显著的 ASM 位点
# 两个等位基因甲基化差异 > 30%,校正 p 值 < 0.05
asm_sites <- merged[
padj < 0.05 &
abs(rate1 - rate2) > 0.3
]
cat("检测到的 ASM 位点数:", nrow(asm_sites), "\n")
# 与已知印记区域比较
known_icr <- fread("known_imprinted_regions_hg38.bed",
col.names = c("chr", "start", "end", "gene"))
# 检查 ASM 位点是否落在已知印记区域
library(GenomicRanges)
asm_gr <- GRanges(seqnames = asm_sites$chr,
ranges = IRanges(start = asm_sites$pos, width = 1))
icr_gr <- GRanges(seqnames = known_icr$chr,
ranges = IRanges(start = known_icr$start, end = known_icr$end))
overlaps <- findOverlaps(asm_gr, icr_gr)
cat("落在已知印记区域的 ASM 位点:",
length(unique(queryHits(overlaps))), "\n")
面试常问点¶
★ 印记基因的甲基化是怎么建立的?¶
参考答案:印记建立发生在配子发育期。在精原细胞或卵母细胞中,DNMT3A(以及辅助因子 DNMT3L)在特定的 ICR 上建立从头甲基化。受精后,虽然全基因组发生大规模去甲基化重编程,但 ICR 上的甲基化被 DNMT1 和 UHRF1 维持,不受影响。这就是为什么印记标记能"记住"它来自精子还是卵子。
★ 怎么区分印记性 ASM 和序列依赖性 ASM?¶
参考答案:印记性 ASM 是亲本来源决定的(parent-of-origin),在所有个体中一致——比如 ICR 总是在父源甲基化。序列依赖性 ASM 是由顺式调控变异(如 SNP)导致的,取决于具体的基因型,不同个体可能不同。区分方法:如果某个 ASM 位点在多个不相关个体中都表现为同一等位基因甲基化,很可能是印记;如果只在特定基因型的个体中出现,可能是序列依赖性的。
速查卡片¶
| 问题 | 一句话答案 |
|---|---|
| 印记基因数量 | 人类约 100-200 个 |
| ICR 全称 | Imprinting Control Region |
| 印记建立时期 | 配子发育期(精/卵细胞) |
| 建立印记的酶 | DNMT3A + DNMT3L |
| 维持印记的酶 | DNMT1 + UHRF1 |
| 经典印记基因 | IGF2/H19、SNRPN |
| ASM 分析工具 | SNPsplit + Bismark |
| ASM 检验方法 | Fisher 精确检验 |