跳转至

印记基因与等位基因特异性甲基化


一句话说明

印记基因是一类"偏心"的基因——父母各给了一份,但只有一份在工作(另一份被甲基化沉默了),哪份工作取决于它来自爸爸还是妈妈,这就是等位基因特异性甲基化。


核心知识点

要点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-WiedemannIGF2/H19ICR 甲基化异常 → IGF2 过表达
Prader-Willi15q11-13父源缺失/母源单亲二倍体
AngelmanUBE3A母源缺失/父源单亲二倍体
Silver-RussellIGF2/H19H19 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 精确检验