跳转至

Hi-C 数据分析与 3D 基因组


一句话说明

Hi-C 是一种捕获染色体三维空间折叠结构的技术,能告诉你基因组上哪些远距离的区域在细胞核里其实"贴在一起",从而揭示基因调控的空间逻辑。


核心知识点

1. Hi-C 原理

  • 核心思想:在细胞核内,空间上靠近的 DNA 片段被交联(甲醛固定)→ 酶切 → 连接 → 测序(白话:把空间上挨着的 DNA 用胶水粘住,切碎后重新连起来,测序看谁和谁连在一起了)
  • 关键步骤:固定 → 酶切(DpnII/MboI)→ 末端补平+生物素标记 → 近端连接 → 纯化 → 测序
  • 数据特征:配对读段(read pair),两端分别来自空间接近的不同基因组位置

2. 3D 基因组层级结构

层级尺度含义
A/B compartmentMb 级活跃(A)/沉默(B)染色质区室
TAD数百 kb - 几 Mb拓扑关联结构域,内部互作频率高
Loop10 kb - 几 MbCTCF/Cohesin 介导的染色质环
Stripe可变单侧延伸的互作条带

白话类比:A/B 区室像城市的商业区和住宅区;TAD 像小区围墙内的独立社区;Loop 像两栋楼之间的天桥。

3. 核心分析工具

  • 比对:BWA-MEM / Chromap(快速 Hi-C 比对)
  • 矩阵构建:HiC-Pro, Juicer, cooler
  • 可视化:HiGlass, Juicebox, cooler + matplotlib
  • TAD 识别:TopDom, Arrowhead, HiTAD
  • Loop 识别:HiCCUPS, Mustache
  • A/B compartment:PCA 分析(eigenvector)

4. Hi-C 辅助基因组组装

  • Hi-C 数据可以用来做 scaffolding(白话:把碎片化的 contig 按正确顺序串起来)
  • 工具:SALSA2, YaHS, 3D-DNA
  • 原理:同一条染色体上的 contig 互作频率高,不同染色体间互作频率低

实战代码

# === Hi-C 数据分析标准流程(使用 HiC-Pro) ===

# 1. 创建配置文件(关键参数)
cat > config.txt << 'EOF'
BOWTIE2_IDX_PATH = /path/to/bowtie2_index   # 基因组索引路径
REFERENCE_GENOME = hg38                       # 参考基因组
GENOME_SIZE = /path/to/chrom_sizes.txt       # 染色体大小文件
LIGATION_SITE = GATCGATC                      # DpnII酶切+连接后的序列
MIN_MAPQ = 10                                 # 最小比对质量
EOF

# 2. 运行 HiC-Pro(从FASTQ到接触矩阵)
HiC-Pro -i rawdata/ \                  # 输入FASTQ目录
  -o hicpro_out \                      # 输出目录
  -c config.txt                        # 配置文件

# === 使用 cooler 生成多分辨率矩阵 ===

# 3. 将 pairs 文件转为 cooler 格式
cooler cload pairs \                   # 从pairs文件加载
  -c1 2 -p1 3 -c2 4 -p2 5 \          # 指定列号(chr1,pos1,chr2,pos2)
  chrom_sizes.txt:1000 \              # 分辨率1kb
  valid_pairs.txt \                    # 有效配对文件
  output.cool                          # 输出cool文件

# 4. 生成多分辨率 mcool 文件
cooler zoomify output.cool \           # 输入cool文件
  -r 1000,5000,10000,25000,50000,100000,500000,1000000  # 多种分辨率

# 5. 矩阵平衡(ICE 归一化)
cooler balance output.cool             # ICE归一化消除偏差

# === A/B Compartment 分析 ===
# 6. 使用 cooltools 计算 eigenvector
cooltools eigs-cis \                   # 计算顺式特征向量
  output.mcool::resolutions/100000 \   # 100kb分辨率
  --phasing-track gene_density.bw \    # 用基因密度校正方向
  -o compartments                       # 输出前缀

# === TAD 识别 ===
# 7. 使用 cooltools 计算绝缘分数
cooltools insulation \                 # 计算绝缘分数
  output.mcool::resolutions/25000 \    # 25kb分辨率
  25000 50000 100000 \                 # 窗口大小
  -o insulation.tsv                    # 输出文件
# 用 Python 可视化 Hi-C 接触矩阵
import cooler                          # Hi-C数据格式库
import matplotlib.pyplot as plt        # 绑图库
import numpy as np                     # 数值计算

# 加载 cool 文件
clr = cooler.Cooler("output.mcool::resolutions/25000")  # 25kb分辨率

# 提取某个区域的接触矩阵
region = "chr1:50000000-55000000"      # 感兴趣的区域
matrix = clr.matrix(balance=True).fetch(region)  # 提取归一化矩阵

# 绘制热图
plt.figure(figsize=(8, 8))            # 设置图形大小
plt.imshow(
    np.log1p(matrix),                  # 对数变换使信号更明显
    cmap="YlOrRd",                     # 黄-橙-红配色
    interpolation="none"               # 不插值
)
plt.colorbar(label="log(contact)")     # 添加颜色条
plt.title(f"Hi-C Contact Map: {region}")  # 标题
plt.savefig("hic_heatmap.png", dpi=150)   # 保存图片

面试常问点

★ 什么是 TAD?为什么重要?

参考答案:TAD(拓扑关联结构域)是基因组在三维空间中的结构单元,大小从数百 kb 到几 Mb。TAD 内部的 DNA 区域互作频率远高于 TAD 之间。TAD 的重要性在于它限制了增强子的作用范围——增强子通常只能调控同一个 TAD 内的基因。如果 TAD 边界被破坏(比如结构变异),可能导致增强子"越界"激活错误基因,引发疾病。

★ Hi-C 数据的 ICE 归一化是做什么的?

参考答案:ICE(Iterative Correction and Eigenvector decomposition)归一化是消除 Hi-C 数据中的系统偏差,包括 GC 含量偏差、酶切位点密度差异、mappability 差异等。原理是假设所有基因组区域的总互作频率应该相等,通过迭代校正使每行每列的和趋于一致。没做归一化的 Hi-C 矩阵会有很多噪音,分析结果不可靠。

★ Hi-C 数据需要多少测序深度?

参考答案:取决于分析目的。A/B compartment 分析最省,约 50-100M 有效配对即可(~1 Mb 分辨率);TAD 分析需要 200-500M 配对(~25-50 kb 分辨率);Loop 检测最费,需要 1B+ 配对(~5-10 kb 分辨率)。人类基因组做完整分析通常需要 2-3B 配对读段。


速查卡片

问题答案
Hi-C 原理交联+酶切+连接+测序,捕获空间互作
数据格式.cool / .mcool / .hic
A/B compartmentMb级活跃/沉默区室,PCA鉴定
TAD拓扑关联域,绝缘分数鉴定
LoopCTCF/Cohesin介导的染色质环
归一化方法ICE (迭代校正)
分析工具cooler, cooltools, HiC-Pro, Juicer
可视化HiGlass, Juicebox
辅助组装工具YaHS, SALSA2, 3D-DNA
典型分辨率1kb-1Mb(取决于测序深度)