跳转至

ONT 自适应采样技术


一句话说明

自适应采样(Adaptive Sampling)是 Nanopore 测序的"智能筛选"功能——DNA 分子穿过纳米孔时,实时判断它是不是你想要的序列,不想要的直接电击弹出(reject),想要的继续读完,相当于"边测边挑"。


核心知识点

要点1:自适应采样原理

  • Nanopore 测序:DNA 穿过纳米孔时产生电流变化,实时翻译成碱基
  • 自适应采样:读取前 ~400-1000 个碱基 → 实时比对到参考序列 → 判断是否为目标区域
  • 接受(Accept):目标序列 → 继续读完整条
  • 拒绝(Reject):非目标序列 → 反转电压,把 DNA 弹出纳米孔 → 孔立刻读下一条
  • 白话类比:像图书馆管理员快速翻看每本书的第一页,不想要的直接放回书架,想要的仔细阅读

要点2:核心优势

  • 无需实验室靶向建库:不需要 PCR 引物、杂交探针等
  • 灵活性极高:在软件端设定目标区域,随时可改
  • 理论富集倍数:目标区域占基因组的比例越小,富集倍数越高
  • 保留表观修饰信息:不经过 PCR 扩增,原生 DNA 修饰保留
  • 实时反馈:测序过程中实时看到覆盖度,够了可以停

要点3:技术限制

限制说明
富集效率理论上最高 ~基因组大小/目标大小 倍,实际低于理论值
前几百碱基损失判断阶段的序列质量可能下降
计算需求需要 GPU 加速实时 basecalling + 比对
孔寿命消耗reject 操作可能略增加孔损耗
最短判断长度需要 ~400bp 做判断,对很短片段不适用

要点4:应用场景

  • 目标基因测序:如 BRCA1/2 全基因区域(含内含子)
  • 药物基因组学:CYP450 基因家族全面覆盖
  • 病原体检测:从宿主 DNA 中富集病原体序列
  • HLA 分型:富集 MHC 区域
  • 肿瘤 panel:自定义目标区域,不需要设计探针
  • 甲基化靶向分析:特定区域的甲基化检测

实战代码

# ===== ONT 自适应采样配置与分析 =====

# 方法1:使用 MinKNOW 内置的 Adaptive Sampling
# 在 MinKNOW 软件中配置(GUI 操作):
# 1. 开始新测序实验
# 2. 在 "Adaptive Sampling" 选项中上传 BED 文件
# 3. 选择 "Enrich"(富集目标)或 "Deplete"(去除非目标)
# 4. 提供参考基因组 FASTA 文件

# 准备目标区域 BED 文件(示例:BRCA1 + BRCA2 区域)
cat > target_regions.bed << 'EOF'
chr17   43044295    43170245    BRCA1
chr13   32315474    32400266    BRCA2
EOF

# 方法2:使用 Readfish 进行自适应采样(更灵活)
# Readfish 是 ONT 官方支持的自适应采样工具

# 安装 readfish
pip install readfish

# 准备 TOML 配置文件
cat > adaptive_config.toml << 'TOML'
[caller_settings]
config_name = "dna_r10.4.1_e8.2_400bps_sup.cfg"
host = "localhost"
port = 8000

[conditions.target_regions]
name = "target"
control = false
min_chunks = 1
max_chunks = 4
targets = "target_regions.bed"
single_on = "stop_receiving"    # 目标序列:继续读
single_off = "unblock"          # 非目标:弹出
multi_on = "stop_receiving"
multi_off = "unblock"
no_seq = "proceed"
no_map = "proceed"
TOML

# 运行自适应采样(需要与 MinKNOW 同时运行)
readfish targets \
    --toml adaptive_config.toml \
    --device MN12345 \    # 设备序列号
    --experiment "adaptive_brca"

# ===== 数据分析 =====

# 1. Basecalling(如果未实时完成)
dorado basecaller sup \
    pod5_input/ \
    --reference hg38.fa \
    --modified-bases 5mCG_5hmCG > calls.bam  # 同时检测甲基化

# 2. 比对到参考基因组
minimap2 -a -x map-ont -t 16 \
    hg38.fa calls.fastq.gz | \
    samtools sort -@ 8 -o aligned.bam
samtools index aligned.bam

# 3. 统计富集效果
# 计算目标区域的覆盖度
samtools depth -b target_regions.bed aligned.bam | \
    awk '{sum+=$3; n++} END {print "目标区域平均覆盖度:", sum/n, "x"}'

# 计算全基因组平均覆盖度
samtools depth aligned.bam | \
    awk '{sum+=$3; n++} END {print "全基因组平均覆盖度:", sum/n, "x"}'

# 富集倍数 = 目标区域覆盖度 / 全基因组覆盖度

# 4. 统计 accept/reject reads
# 检查 BAM 文件中的标签
python3 << 'PYEOF'
import pysam

bam = pysam.AlignmentFile("aligned.bam", "rb")
on_target = 0   # 目标区域的 reads
off_target = 0  # 非目标区域的 reads
rejected = 0    # 被弹出的短 reads(<1kb 可能是 rejected)

for read in bam:
    if read.query_length < 1000:
        rejected += 1
    elif read.reference_name in ["chr17", "chr13"]:
        # 简化判断:实际应检查精确坐标
        on_target += 1
    else:
        off_target += 1

total = on_target + off_target + rejected
print(f"目标区域 reads: {on_target} ({on_target/total*100:.1f}%)")
print(f"非目标 reads: {off_target} ({off_target/total*100:.1f}%)")
print(f"Rejected (短) reads: {rejected} ({rejected/total*100:.1f}%)")
PYEOF

面试常问点

★ 自适应采样和传统靶向测序(如杂交捕获)相比有什么优势?

参考答案:三大核心优势——第一,不需要设计探针或引物,BED 文件一改就能换目标,灵活性极高;第二,不经过 PCR 扩增,保留了原生的 DNA 修饰信息(如甲基化),杂交捕获做不到;第三,可以实时监控覆盖度,够了就停止测序,节约成本。局限是富集效率不如杂交捕获高(杂交捕获可以 >1000×,自适应采样通常 5-20×),对于极小目标区域效率有限。

★ 自适应采样在病原体检测中有什么应用?

参考答案:在临床宏基因组测序中,病原体 DNA 通常只占样本的极小比例(<1%),大部分是人类宿主 DNA。用自适应采样可以设置"去除人类序列"(deplete 模式),将人类 DNA 的 reads 实时弹出,让纳米孔集中精力读病原体序列。这样在不增加测序量的情况下,大幅提高病原体的覆盖深度,加速诊断。


速查卡片

问题一句话答案
自适应采样原理实时比对 → 决定继续读或弹出
判断所需碱基数~400-1000 bp
两种模式Enrich(富集目标)/ Deplete(去除非目标)
软件工具MinKNOW 内置 / Readfish
典型富集倍数5-20x
最大优势无需实验室建库,软件端灵活设定目标
核心限制富集效率不如杂交捕获高
计算需求需要 GPU 加速实时分析