跳转至

超长片段测序 UltraLong


一句话说明

超长片段测序就像用一根超长的绳子量布,一次能测出几十甚至上百kb的DNA片段,专门用来解决普通测序搞不定的复杂重复区域和结构变异。


核心知识点

1. UltraLong 测序是什么

  • 定义:读长超过 100 kb 的 Nanopore 测序模式(白话:一条读段能覆盖十万个碱基以上)
  • 平台:Oxford Nanopore Technologies (ONT) 的 PromethION / MinION
  • 与 HiFi 的区别:HiFi 读长 ~15-20 kb 但准确率高 (>99%);UltraLong 读长可达 >1 Mb 但原始准确率较低 (~95-98%)
  • 关键指标:N50 读长(白话:一半的数据由这个长度以上的读段贡献)

2. 文库制备要点

  • 高分子量 DNA 提取:用酚氯仿或 Nanobind 磁珠法,避免涡旋震荡(白话:DNA 太长容易断,要轻拿轻放)
  • LSK114 建库试剂盒:ONT 官方超长建库方案
  • 无 PCR 扩增:避免 PCR 引入的片段偏好
  • 质控指标:Qubit 定量 + 脉冲场电泳检查完整性

3. 核心应用场景

  • 端粒到端粒 (T2T) 组装:填补着丝粒、端粒等高度重复区域的 gap
  • 大型结构变异检测:检测 >50 kb 的倒位、易位、大片段插入/缺失
  • 单倍型 phasing:一条超长读段跨越多个杂合位点,直接确定单倍型
  • 重复序列解析:卫星 DNA、rDNA 串联重复、节段重复 (segmental duplication)

4. 数据分析流程

# 1. basecalling(碱基识别)—— 用 Dorado 模型
dorado basecaller sup input_pod5/ > calls.bam  # sup = 超高精度模型

# 2. 质控统计
NanoPlot --bam calls.bam -o nanoplot_out  # 查看读长分布和质量

# 3. 过滤超长读段(只保留 >100 kb 的)
samtools view -h calls.bam | \
  awk 'length($10) > 100000 || $1 ~ /^@/' | \  # 筛选序列长度>100kb
  samtools view -bS - > ultralong.bam           # 输出为BAM

# 4. 比对到参考基因组
minimap2 -ax map-ont ref.fa ultralong.bam | \  # map-ont 模式适配ONT数据
  samtools sort -o aligned.bam                  # 排序输出

# 5. 结构变异检测
sniffles --input aligned.bam --vcf sv.vcf \    # Sniffles检测SV
  --minsvlen 50                                 # 最小SV长度50bp

实战代码

# 统计 UltraLong 读段长度分布(Python + pysam)
import pysam                          # BAM文件处理库
import numpy as np                    # 数值计算

bam = pysam.AlignmentFile("calls.bam", "rb")  # 打开BAM文件
lengths = []                          # 存储读段长度

for read in bam:                      # 遍历每条读段
    if not read.is_secondary:         # 跳过次要比对
        lengths.append(read.query_length)  # 记录读段长度

lengths = np.array(lengths)           # 转为numpy数组
print(f"总读段数: {len(lengths)}")     # 打印总数
print(f"N50: {calculate_n50(lengths)}")  # 打印N50
print(f">100kb读段数: {np.sum(lengths > 100000)}")  # 超长读段计数
print(f"最长读段: {np.max(lengths)/1e6:.2f} Mb")     # 最长的那条

def calculate_n50(lengths):           # 计算N50的函数
    sorted_lens = np.sort(lengths)[::-1]  # 从大到小排序
    cumsum = np.cumsum(sorted_lens)   # 累积和
    total = cumsum[-1]                # 总碱基数
    return sorted_lens[cumsum >= total/2][0]  # 累积到一半时的长度

面试常问点

★ UltraLong 测序和 HiFi 测序怎么选?

参考答案:看需求。HiFi 读长 ~15-20 kb,准确率 >99.9%,适合常规基因组组装和小变异检测。UltraLong 读长可达百 kb 甚至 Mb 级别,但准确率稍低(~98%),专门用来解决高度重复区域、着丝粒/端粒组装、大型 SV 检测。实际项目中常常两者结合:HiFi 提供准确骨架,UltraLong 跨越重复区搭桥。

★ 为什么 UltraLong 能解决重复区域?

参考答案:因为读段够长。假设一个重复区域有 50 kb,普通短读测序(150 bp)完全跨不过去,但一条 200 kb 的超长读段可以从重复区两端的唯一序列一直穿过去,直接确定重复区的拷贝数和排列顺序。

★ UltraLong 数据的常见问题?

参考答案:(1) DNA 提取难度大,需要超高分子量 DNA;(2) 产量相对低,单次测序数据量有限;(3) 原始错误率较高,需要配合纠错或 HiFi 数据 polish;(4) 计算资源消耗大,长读段比对和组装都很吃内存。


速查卡片

问题答案
UltraLong 定义ONT 读长 >100 kb 的测序模式
典型读长100 kb - 1 Mb+
原始准确率~95-98%(sup 模型可达 ~99%)
建库方法LSK114 无 PCR 建库
DNA 提取要求高分子量,避免机械剪切
主要比对工具minimap2 (map-ont)
SV 检测工具Sniffles, SVIM, cuteSV
与 HiFi 互补HiFi 做骨架 + UltraLong 跨重复区
T2T 组装意义填补着丝粒/端粒 gap
basecalling 工具Dorado (2025 主流)