跳转至

三代测序数据处理(Nanopore/PacBio)

一句话概述

三代测序(长读长测序)数据处理涵盖Nanopore的basecalling(Dorado)、PacBio的CCS生成、质控(NanoPlot/NanoQC)和比对(minimap2),能产生数kb至Mb级读长,极大提升基因组组装连续性和结构变异检测能力。


核心知识点表格

知识点说明
Nanopore测序电流信号检测DNA通过纳米孔时的碱基序列(Oxford Nanopore)
PacBio测序荧光脉冲检测聚合酶合成过程中的碱基(Pacific Biosciences)
Basecalling将原始信号(电流/荧光)转换为碱基序列
DoradoONT最新官方basecaller(替代Guppy)
CCS/HiFiPacBio通过多次环形测序同一分子获得高准确度读长(>Q20)
NanoPlotNanopore数据质控和统计可视化工具
minimap2长读长序列的标准比对工具(也支持短reads)
POD5/FAST5Nanopore原始信号文件格式
Phred质量分数Q10=90%准确度, Q20=99%, Q30=99.9%
N50至少50%数据由长度≥N50的reads组成

各步骤详解

第一步:理解两大平台技术差异

白话解释: Nanopore像把DNA穿过一个超小的孔,通过电流变化读碱基——读长可以非常长(甚至>1Mb),但单次准确度偏低(~95-99%)。PacBio让聚合酶在一个小坑里反复读同一段DNA(环形模板),通过多次读取平均提升准确度——HiFi读长~15-20kb,准确度>99%。

技术对比:

特性Nanopore (R10.4.1)PacBio HiFiPacBio CLR
读长超长(N50 > 10kb,max > 1Mb)15-20kb30-60kb
准确度Q15-Q25 (96-99.7%)Q20-Q40 (>99%)Q10 (~90%)
通量PromethION: ~100GbRevio: ~90Gb-
修饰检测直接(5mC, 6mA等)间接(kinetics)-
文库准备简单(可无PCR)需SMRTbell文库同HiFi
设备成本低(MinION $1000)高(Revio $600k)
实时分析支持不支持不支持

第二步:Nanopore Basecalling(Dorado)

白话解释: 测序仪记录的是电流信号(存在POD5/FAST5文件中),需要用AI模型(神经网络)把信号翻译成ACGT碱基序列。Dorado是ONT最新的basecaller,替代了之前的Guppy,速度更快且支持最新化学。

技术细节: - Dorado使用深度学习模型架构(具体实现随版本迭代优化) - 模型选择:fast(速度快,精度低)、hac(平衡,推荐日常使用)、sup(最高精度,最慢) - 支持GPU加速(CUDA),CPU也能跑但极慢 - 输出格式:BAM(推荐)或FASTQ - 支持修饰碱基检测(5mC, 5hmC, 6mA) - 支持duplex calling(配对互补链进一步提升准确度)

代码示例:

# === Dorado basecalling ===
# 新版Dorado(v0.7+)支持简化的"模型复合体"语法,自动根据数据选择匹配模型
# 推荐使用简化语法:fast / hac / sup,Dorado自动检测化学版本

# 基本basecalling(推荐方式:简化模型选择)
dorado basecaller sup \
  /data/pod5_files/ \
  --device cuda:all \
  > basecalled.bam

# 输出FASTQ格式
dorado basecaller sup \
  /data/pod5_files/ \
  --device cuda:all \
  --emit-fastq \
  > basecalled.fastq

# 输出BAM + 同时比对到参考基因组
dorado basecaller sup \
  /data/pod5_files/ \
  --device cuda:0 \
  --reference /ref/GRCh38.fa \
  > basecalled_aligned.bam

# 带修饰碱基检测(在模型复合体中用逗号添加修饰类型)
dorado basecaller sup,5mCG_5hmCG \
  /data/pod5_files/ \
  --device cuda:all \
  > basecalled_mods.bam

# Duplex calling(超高准确度)
dorado duplex sup \
  /data/pod5_files/ \
  --device cuda:all \
  > duplex.bam

# 也可使用完整模型名称(适合指定特定版本)
# dorado basecaller dna_r10.4.1_e8.2_400bps_sup@v5.2.0 /data/pod5_files/

# 从BAM提取FASTQ
samtools fastq basecalled.bam > basecalled.fastq

# === 旧版Guppy(已停止更新,仅供参考)===
# 注意:Guppy已被Dorado完全替代,R9.4.1和RNA002模型在Dorado v1.0.0中已弃用
# 新项目请统一使用Dorado
# guppy_basecaller \
#   -i /data/fast5_files/ \
#   -s /output/basecalled/ \
#   -c dna_r10.4.1_e8.2_400bps_sup.cfg \
#   --device cuda:0 \
#   --records_per_fastq 0 \
#   --compress_fastq

第三步:PacBio CCS/HiFi数据生成

白话解释: PacBio的SMRTbell文库是环形的,聚合酶会绕着模板反复读(subreads)。CCS(Circular Consensus Sequencing)把同一分子的多次读取合并,取一致序列,大幅提升准确度。现在都叫HiFi reads。

技术细节: - 输入:subreads.bam(PacBio仪器直接输出) - 工具:ccs(pbccs)生成HiFi reads - 质量要求:通常保留Q20+(准确度>99%) - HiFi reads平均长度15-20kb - 现代流程(Revio/Sequel IIe)在仪器上实时生成HiFi(Revio直接输出HiFi,无需手动运行ccs)

代码示例:

# === 生成CCS/HiFi reads ===
# 从subreads.bam生成HiFi reads
ccs subreads.bam hifi_reads.bam \
  --min-rq 0.99 \          # 最低准确度(Q20)
  --min-passes 3 \         # 最少通过次数
  --num-threads 32 \
  --log-level INFO \
  --report-file ccs_report.txt

# 查看CCS报告
cat ccs_report.txt

# 提取FASTQ
samtools fastq hifi_reads.bam > hifi_reads.fastq.gz

# 统计
samtools stats hifi_reads.bam > hifi_stats.txt

# === 使用pbmm2比对(PacBio推荐)===
pbmm2 align /ref/GRCh38.fa hifi_reads.bam aligned.bam \
  --sort \
  --preset HiFi \
  --sample sample1 \
  -j 16

# === 使用actc生成HiFi(新版本仪器)===
# Revio/Sequel IIe直接输出HiFi,无需手动CCS
# 输出:*.hifi_reads.bam

第四步:数据质控(NanoPlot/NanoQC)

白话解释: 和二代测序一样,三代测序数据也需要质控——看看读长分布、质量分布、总数据量是否满足项目要求。NanoPlot是Nanopore/长读长数据质控的标准工具。

技术细节: - NanoPlot:全面的质控统计和可视化 - NanoQC:碱基位置级质量分析 - PycoQC:实时质控(从sequencing_summary) - 关注指标:N50、平均读长、中位质量、总碱基数

代码示例:

# === NanoPlot ===
# 从FASTQ质控
NanoPlot --fastq basecalled.fastq.gz \
  -o nanoplot_output/ \
  -t 8 \
  --title "Sample1 Nanopore QC" \
  --plots hex dot \
  --N50 \
  --loglength

# 从BAM质控
NanoPlot --bam basecalled_aligned.bam \
  -o nanoplot_bam/ \
  -t 8 \
  --title "Sample1 Aligned" \
  --plots hex dot

# 从sequencing_summary质控(更快)
NanoPlot --summary sequencing_summary.txt \
  -o nanoplot_summary/ \
  -t 8

# === NanoQC(位置级质量)===
nanoQC -o nanoqc_output/ basecalled.fastq.gz

# === NanoStat(纯数字统计)===
NanoStat --fastq basecalled.fastq.gz \
  -t 8 \
  -n nanostats_results.txt

# === chopper(质量过滤+长度过滤)===
# 替代NanoFilt(更快)
gunzip -c basecalled.fastq.gz | \
  chopper --quality 10 \
          --minlength 1000 \
          --maxlength 100000 \
          --threads 8 | \
  gzip > filtered.fastq.gz

# === PacBio HiFi QC ===
# 使用samtools stats
samtools stats hifi_reads.bam > hifi_stats.txt

# 或使用NanoPlot(也支持PacBio)
NanoPlot --fastq hifi_reads.fastq.gz \
  -o nanoplot_hifi/ \
  -t 8 \
  --title "PacBio HiFi QC"

# 基本统计
echo "Total reads: $(samtools view -c hifi_reads.bam)"
echo "Total bases: $(samtools stats hifi_reads.bam | grep 'bases mapped' | cut -f3)"

第五步:序列比对(minimap2)

白话解释: minimap2是长读长数据比对的"瑞士军刀"——支持Nanopore、PacBio HiFi、PacBio CLR、以及长读长到长读长的overlap比对。核心优势是速度快(基于minimizer索引)且对高错误率长读长有很好的容错性。

技术细节: - 预设模式(preset):map-ont(Nanopore), map-hifi(PacBio HiFi), map-pb(PacBio CLR) - 基于minimizer的种子-扩展策略 - 支持剪接比对(-ax splice,RNA测序) - 输出PAF(轻量)或SAM/BAM格式 - 支持supplementary alignments(用于SV检测)

代码示例:

# === Nanopore数据比对 ===
minimap2 -ax map-ont \
  -t 16 \
  --secondary=no \
  --MD \
  /ref/GRCh38.fa \
  filtered.fastq.gz | \
  samtools sort -@ 8 -o sample_ont_sorted.bam -

samtools index sample_ont_sorted.bam

# === PacBio HiFi比对 ===
minimap2 -ax map-hifi \
  -t 16 \
  --secondary=no \
  --MD \
  /ref/GRCh38.fa \
  hifi_reads.fastq.gz | \
  samtools sort -@ 8 -o sample_hifi_sorted.bam -

samtools index sample_hifi_sorted.bam

# === PacBio CLR比对 ===
minimap2 -ax map-pb \
  -t 16 \
  /ref/GRCh38.fa \
  clr_reads.fastq.gz | \
  samtools sort -@ 8 -o sample_clr_sorted.bam -

# === 长读长RNA比对(如Nanopore direct RNA)===
minimap2 -ax splice \
  -t 16 \
  --junc-bed /ref/known_junctions.bed \
  /ref/GRCh38.fa \
  direct_rna.fastq.gz | \
  samtools sort -@ 8 -o rna_sorted.bam -

# === 比对质量统计 ===
samtools flagstat sample_ont_sorted.bam
samtools coverage sample_ont_sorted.bam > coverage.txt

# 查看比对率和平均覆盖度
echo "Mapping rate:"
samtools flagstat sample_ont_sorted.bam | grep "mapped ("

# 深度统计
mosdepth -t 8 --by 1000 sample_depth sample_ont_sorted.bam

第六步:基因组组装(概述)

白话解释: 三代长读长最大的优势就是能组装出高连续性甚至完整的基因组。不同类型数据有不同的最佳组装工具。

技术细节: - Nanopore:Flye(推荐)、NextDenovo、Shasta - PacBio HiFi:hifiasm(T2T级组装)、Flye - 混合组装:短读长校正长读长(如pilon、NextPolish) - HiFi数据通常无需polish(准确度已足够)

代码示例:

# === Flye(Nanopore/PacBio通用)===
flye --nano-hq filtered.fastq.gz \    # Nanopore Q20+
  --out-dir flye_assembly/ \
  --threads 32 \
  --genome-size 5m                     # 预估基因组大小

# PacBio HiFi
flye --pacbio-hifi hifi_reads.fastq.gz \
  --out-dir flye_hifi/ \
  --threads 32 \
  --genome-size 3g

# === hifiasm(PacBio HiFi最佳选择,v0.25+支持ONT组装)===
hifiasm -o sample_asm \
  -t 32 \
  hifi_reads.fastq.gz

# 转换GFA到FASTA
awk '/^S/{print ">"$2"\n"$3}' sample_asm.bp.p_ctg.gfa > assembly.fa

# HiFi + ultralong ONT联合组装(T2T级)
# hifiasm -o asm_hybrid -t 32 --ul ont_ultralong.fastq.gz hifi_reads.fastq.gz

# Trio模式(需父母短reads,先用yak计k-mer)
# yak count -k31 -b37 -t16 -o pat.yak paternal.fq.gz
# yak count -k31 -b37 -t16 -o mat.yak maternal.fq.gz
# hifiasm -o asm_trio -t 32 -1 pat.yak -2 mat.yak hifi_reads.fastq.gz

# === 组装校正(Nanopore数据可能需要)===
# 使用Medaka(Nanopore自校正)
medaka_consensus \
  -i filtered.fastq.gz \
  -d flye_assembly/assembly.fasta \
  -o medaka_output/ \
  -t 16 \
  -m r1041_e82_400bps_sup_v4.3.0

# === 组装质量评估 ===
# QUAST
quast assembly.fa \
  -r /ref/reference.fa \
  -o quast_results/ \
  -t 16

# BUSCO完整性
busco -i assembly.fa \
  -m genome \
  -l bacteria_odb10 \
  -c 16 \
  -o busco_results

第七步:结构变异检测

白话解释: 长读长最擅长检测结构变异(SV)——大的插入、缺失、倒位、重复。因为一条read就能跨越整个SV断点,不像短reads那样容易"断"在SV里面。

代码示例:

# === Sniffles2(Nanopore/PacBio SV检测)===
sniffles --input sample_ont_sorted.bam \
  --vcf sv_calls.vcf \
  --reference /ref/GRCh38.fa \
  --threads 16 \
  --minsvlen 50 \
  --mapq 20

# === cuteSV(另一个SV caller)===
cuteSV sample_ont_sorted.bam \
  /ref/GRCh38.fa \
  cutesv_output.vcf \
  ./cutesv_work_dir/ \
  --threads 16 \
  --sample sample1 \
  --genotype \
  --min_size 50 \
  --max_size 100000

# === PBSV(PacBio官方SV工具)===
pbsv discover sample_hifi_sorted.bam sample.svsig.gz
pbsv call /ref/GRCh38.fa sample.svsig.gz sv_output.vcf \
  --ccs --num-threads 16

实战命令(可复制)

# ===== 完整Nanopore数据处理流水线 =====

SAMPLE="sample1"
REF="/ref/GRCh38.fa"
THREADS=32

# 1. Basecalling(使用简化模型选择,Dorado自动检测化学版本)
dorado basecaller sup \
  /data/pod5/${SAMPLE}/ \
  --device cuda:all \
  > ${SAMPLE}_basecalled.bam

# 转FASTQ
samtools fastq ${SAMPLE}_basecalled.bam | gzip > ${SAMPLE}.fastq.gz

# 2. 质控
NanoPlot --fastq ${SAMPLE}.fastq.gz -o ${SAMPLE}_qc/ -t ${THREADS} --N50

# 3. 过滤
gunzip -c ${SAMPLE}.fastq.gz | \
  chopper -q 10 --minlength 1000 -t ${THREADS} | \
  gzip > ${SAMPLE}_filtered.fastq.gz

# 4. 比对
minimap2 -ax map-ont -t ${THREADS} --MD ${REF} ${SAMPLE}_filtered.fastq.gz | \
  samtools sort -@ 8 -o ${SAMPLE}_sorted.bam -
samtools index ${SAMPLE}_sorted.bam

# 5. 比对统计
samtools flagstat ${SAMPLE}_sorted.bam
mosdepth -t 8 ${SAMPLE}_depth ${SAMPLE}_sorted.bam

# 6. 组装(可选)
flye --nano-hq ${SAMPLE}_filtered.fastq.gz \
  --out-dir ${SAMPLE}_assembly/ \
  --threads ${THREADS} \
  --genome-size 5m

# 7. SV检测(可选)
sniffles --input ${SAMPLE}_sorted.bam --vcf ${SAMPLE}_sv.vcf \
  --reference ${REF} --threads ${THREADS}

# ===== 完整PacBio HiFi流水线 =====
# 1. CCS(如果仪器未自动生成HiFi)
ccs subreads.bam hifi.bam --min-rq 0.99 --num-threads ${THREADS}

# 2. 比对
minimap2 -ax map-hifi -t ${THREADS} ${REF} hifi.fastq.gz | \
  samtools sort -@ 8 -o hifi_sorted.bam -
samtools index hifi_sorted.bam

# 3. 组装
hifiasm -o asm -t ${THREADS} hifi.fastq.gz

面试常问点

Q1: Nanopore和PacBio的核心技术原理区别?

A: Nanopore:DNA单链穿过纳米蛋白孔(如CsgG),不同碱基组合导致不同电流阻塞模式,通过电流信号解码序列。PacBio:DNA聚合酶固定在ZMW(zero-mode waveguide)底部,合成互补链时掺入荧光标记的核苷酸,通过荧光脉冲的颜色和持续时间判断碱基。

Q2: 什么是PacBio HiFi,为什么准确度这么高?

A: HiFi(High Fidelity)是PacBio的环形一致性测序(CCS)的商品名。SMRTbell文库是环形的,聚合酶绕模板多次测序(通常3-10次pass),对同一位置的多次观测取一致序列,错误率以指数方式下降。3次pass即可达Q20(99%),更多pass可达Q30-Q40(99.9-99.99%)。

Q3: Dorado相比Guppy有什么改进?

A: (1) 开源(Guppy是闭源的);(2) 更新的深度学习模型架构,准确度更高(尤其sup模式);(3) 原生支持POD5格式(比FAST5更高效);(4) 更好的修饰碱基检测集成(支持5mC、5hmC、6mA等10+种修饰);(5) 支持duplex calling;(6) 简化的模型选择(自动检测化学版本);(7) 活跃维护(Guppy已停止更新,R9.4.1和RNA002模型已在Dorado中弃用);(8) 最新版本(v5.2+)还集成了变异检测功能。

Q4: minimap2的preset模式有什么区别?

A: map-ont:针对Nanopore较高错误率优化,容错性强,比对时允许更多mismatch/indel。map-hifi:针对PacBio HiFi的高准确度优化,更严格的比对参数。map-pb:针对PacBio CLR(较高错误率)。asm5/asm20:基因组间比对(5%/20%差异)。splice:RNA剪接比对。各preset本质是不同的gap penalty、minimizer window size等参数组合。

Q5: 长读长数据对基因组组装有什么优势?

A: (1) 能跨越重复序列(短reads无法解决的组装难点);(2) N50从Mb级提升到染色体臂级别;(3) HiFi数据可实现T2T(telomere-to-telomere)完整组装;(4) 直接定相(phasing)单倍型;(5) 准确解析复杂结构区域(着丝粒、端粒、segmental duplication)。

Q6: 如何选择Nanopore的basecalling模型?

A: fast:实时分析或快速预览用,准确度最低(~Q10);hac(high accuracy):日常分析平衡选择(~Q15-18);sup(super accuracy):最终分析或需要最高质量时使用(~Q20-25),GPU计算量约为hac的5-10倍。如果有GPU资源,推荐直接用sup。

Q7: Nanopore数据是否需要质量修剪(trimming)?

A: 与短读长不同,Nanopore长读长一般不做严格的末端修剪(因为错误不集中在末端)。主要做:(1) 接头去除(Dorado现在自动处理);(2) 最低质量过滤(Q>7-10);(3) 最低长度过滤(>500-1000bp去除碎片);(4) 如果是全长cDNA(如PCR-cDNA),需去除引物序列。

Q8: 三代测序在哪些应用场景是必需的?

A: (1) 完整基因组组装(T2T);(2) 结构变异检测(尤其大SV>50bp);(3) 重复序列和转座子解析;(4) 全长转录本测序(不需拼接,直接获得全长isoform);(5) 甲基化直接检测(无需亚硫酸盐处理);(6) 单倍型定相(haplotype phasing);(7) 16S/ITS全长测序(物种鉴定到种/株水平)。


易错点

1. Basecalling模型与测序化学版本不匹配

问题: 使用R9.4.1化学的数据用R10.4.1的模型calling,或反之,导致垃圾结果。 正确做法: 确认流通池/kit化学版本,选择对应模型。推荐使用简化模型复合体语法(如dorado basecaller sup pod5_dir/),Dorado会自动从POD5文件中检测化学版本并选择匹配模型。

2. 忽略Nanopore数据的系统偏差

问题: Nanopore对同聚物(homopolymer,如AAAA)估计不准,导致InDel假阳性。 正确做法: (1) 使用最新化学R10.4.1(双通道,homopolymer准确度大幅提升);(2) 必要时用短读长polish(如pilon/NextPolish);(3) SNV检测时过滤同聚物区域。

3. minimap2输出中supplementary alignment未正确处理

问题: SV检测需要supplementary alignments(SA tag),但某些下游工具会错误过滤。 正确做法: 不要加--secondary=no如果要做SV检测(需要split alignments)。对于变异检测加--secondary=no是正确的。

4. PacBio CCS过滤过于严格

问题: 设置min-passes=5或min-rq=0.999导致大量数据丢失。 正确做法: 标准设置min-rq=0.99(Q20)和min-passes=3即可。现代Revio数据通常直接输出HiFi,无需手动CCS。

5. 对Nanopore数据不做质量过滤直接组装

问题: 包含大量低质量短reads(如失败reads),影响组装质量。 正确做法: 组装前过滤:Q>10且长度>1000bp。Flye对输入质量有一定容错但仍建议预过滤。

6. 覆盖度估计不考虑读长分布

问题: 用"总碱基数/基因组大小"估计覆盖度,忽略了长reads不均匀覆盖。 正确做法: 使用mosdepth或samtools depth评估实际覆盖均匀性(变异系数CV<0.5为佳)。

7. 混淆Nanopore的simplex和duplex reads

问题: Duplex reads(Q30+)和simplex reads(Q20)混在一起分析,质量指标不一致。 正确做法: Dorado会标记duplex reads(dx:i:1 tag),可根据需要分开处理或统一使用。


补充知识

工具生态概览

用途Nanopore工具PacBio工具通用工具
BasecallingDorado仪器自动-
QCNanoPlot, PycoQCpbtoolsLongQC
过滤chopper, Filtlong-seqkit
比对minimap2, winnowmappbmm2, minimap2minimap2
组装Flye, NextDenovohifiasm, Flye-
PolishMedaka-Pilon(短reads)
SVSniffles, cuteSVPBSVSVIM, Delly
甲基化modkit, Doradopb-CpG-tools-
变异Clair3, PEPPERDeepVariant-

数据量需求参考

应用场景建议覆盖度数据量(人基因组3Gb)
基因组组装30-50x90-150 Gb
SV检测10-20x30-60 Gb
甲基化检测30x+90+ Gb
T2T完整组装50-60x HiFi + 100x ONT ultralong混合
细菌完整基因组50-100x250-500 Mb

趋势与最新进展

  1. Nanopore R10.4.1 + Duplex → Q30+准确度逼近HiFi
  2. PacBio Revio → HiFi通量大幅提升(90Gb/cell)
  3. hifiasm ONT组装 → v0.21+支持ONT simplex R10读长的单倍型解析组装
  4. Dorado集成变异检测 → 最新Dorado版本内置高性能变异检测器
  5. 直接RNA测序 → 无需反转录,保留RNA修饰信息
  6. adaptive sampling → Nanopore实时选择性测序(目标富集无需文库)

本教程系统覆盖了Nanopore和PacBio三代测序数据的处理全流程,从原始信号到比对和下游应用,适合长读长测序分析入门和进阶参考。