跳转至

Pore-C 多路染色体构象捕获


一句话说明

Pore-C 是 Hi-C 的升级版,用 Nanopore 长读测序代替短读,一条读段能同时捕获多个(3个以上)基因组位点的空间互作,比 Hi-C 的"两两配对"信息更丰富。


核心知识点

1. Pore-C vs Hi-C 的区别

  • Hi-C:每个读段只能捕获两个位点的互作(pairwise,白话:每次只能拍两个人的合照)
  • Pore-C:一条长读段可以包含多个互作片段(multi-way contact,白话:一张照片能拍到一桌人)
  • 信息量:Pore-C 一条读段 = Hi-C 的多个配对,揭示多体互作(higher-order contacts)

2. 实验原理

  • 甲醛交联 → 限制性内切酶消化 → 不做近端连接 → 直接 Nanopore 测序
  • 长读段会包含多个来自不同基因组位置的片段(被交联在一起的)
  • 每条读段通过虚拟消化(virtual digest)分成多个 segment,各自比对到基因组

3. 数据分析流程

  • basecalling比对虚拟消化contact 提取矩阵构建下游分析
  • 专用工具:pore-c-py(ONT 官方)、Pairtools
  • 可以转换为 Hi-C 格式的 pairwise contact,兼容所有 Hi-C 下游工具

4. 独特应用

  • 多体互作检测:发现 3 个或更多基因组区域同时靠近的事件(如增强子-启动子-绝缘子三方互作)
  • 单分子单倍型 phasing:一条超长读段跨越多个杂合 SNP,直接确定单倍型
  • 辅助基因组组装:比 Hi-C 更少的数据量即可达到相似的 scaffolding 效果

实战代码

# === Pore-C 数据分析流程 ===

# 1. Basecalling(使用 Dorado)
dorado basecaller sup pod5_dir/ > pore_c.bam  # 超高精度模型识别碱基

# 2. 使用 pore-c-py 进行虚拟消化和比对
# 安装 pore-c-py
pip install pore-c-py                  # ONT官方Pore-C分析工具

# 3. 创建酶切片段参考(virtual digest)
pore_c_py refgenome virtual-digest \   # 虚拟消化参考基因组
  --enzyme NlaIII \                    # 使用的限制性内切酶
  ref.fa \                             # 参考基因组
  ref_NlaIII.bed                       # 输出酶切片段BED

# 4. 比对并提取 contact
pore_c_py reads map \                  # 比对读段
  ref.fa \                             # 参考基因组
  pore_c.bam \                         # 输入读段
  mapped_output/                       # 输出目录

# 5. 提取 pairwise contacts(兼容Hi-C工具)
pore_c_py alignments to-pairs \        # 转换为pairs格式
  mapped_output/aligned.bam \          # 比对结果
  contacts.pairs                       # 输出pairs文件

# 6. 转为 cooler 格式(Hi-C标准分析)
cooler cload pairs \                   # 从pairs文件构建矩阵
  -c1 2 -p1 3 -c2 4 -p2 5 \          # 列定义
  chrom.sizes:10000 \                  # 10kb分辨率
  contacts.pairs \                     # 输入pairs
  pore_c.cool                          # 输出cool文件

# 7. 矩阵归一化
cooler balance pore_c.cool             # ICE归一化

# 8. 生成多分辨率文件
cooler zoomify pore_c.cool             # 自动生成多分辨率mcool
# 分析 Pore-C 多体互作(multi-way contacts)
import pysam                           # BAM文件处理
from collections import Counter        # 计数器

bam = pysam.AlignmentFile("mapped_output/aligned.bam", "rb")

# 按读段ID分组,提取每条读段涉及的染色体
read_contacts = {}                     # 存储每条读段的contact信息
for read in bam:                       # 遍历比对结果
    if read.mapping_quality >= 10:     # 过滤低质量比对
        qname = read.query_name        # 读段名称
        chrom = read.reference_name    # 比对到的染色体
        pos = read.reference_start     # 比对起始位置
        if qname not in read_contacts: # 初始化
            read_contacts[qname] = []
        read_contacts[qname].append((chrom, pos))  # 记录位置

# 统计多体互作
multiway = {k: v for k, v in read_contacts.items() if len(v) >= 3}
print(f"总读段数: {len(read_contacts)}")           # 所有读段
print(f"多体互作读段 (>=3 contacts): {len(multiway)}")  # 多体互作

# 统计互作涉及的染色体组合
chrom_combos = Counter()               # 染色体组合计数
for contacts in multiway.values():     # 遍历多体互作
    chroms = tuple(sorted(set(c[0] for c in contacts)))  # 去重排序
    chrom_combos[chroms] += 1          # 计数

# 打印最常见的多体互作模式
for combo, count in chrom_combos.most_common(10):  # 前10
    print(f"  {' - '.join(combo)}: {count}")        # 打印

面试常问点

★ Pore-C 比 Hi-C 好在哪里?

参考答案:Pore-C 最大优势是能检测多体互作(multi-way contacts),一条读段同时捕获 3 个以上基因组位点的空间接触,而 Hi-C 只能看到两两配对。这对理解复杂的基因调控网络(比如一个增强子同时和多个启动子互作)非常重要。另外,Pore-C 还能直接利用长读段做单倍型分型,并且用于基因组组装时数据效率更高。

★ Pore-C 数据能用 Hi-C 的分析工具吗?

参考答案:可以。Pore-C 的多体互作可以分解为所有可能的 pairwise 组合(比如 3 个位点 A/B/C 可以分解为 A-B, A-C, B-C 三对),转换为标准的 pairs 格式后,就能用 cooler、Juicer 等所有 Hi-C 分析工具。但这样做会丢失多体互作的独特信息,想充分利用 Pore-C 数据需要用专门的多体分析方法。


速查卡片

问题答案
Pore-C 平台Oxford Nanopore
与 Hi-C 核心区别多体互作 vs 仅 pairwise
一条读段能捕获3-20+ 个基因组位点
分析工具pore-c-py (ONT官方)
数据格式可转 .pairs → .cool
兼容 Hi-C 工具是(转 pairwise 后)
独特应用多体互作、单分子phasing
组装辅助比 Hi-C 数据效率更高
常用酶NlaIII, DpnII
数据量需求比 Hi-C 少即可达到相似效果