跳转至

Shasta — 超快速 ONT 基因组组装工具


一句话说明

Shasta 是一个极速 ONT 长读段基因组组装工具,人类基因组仅需几小时(而 Canu 需要数天),通过将读段用 marker k-mer 表示来大幅减少计算量,适合需要快速出结果的场景。


安装与配置

# 方法1:conda 安装(推荐)
conda install -c bioconda shasta  # 从 bioconda 安装

# 方法2:直接下载预编译版本
wget https://github.com/paoloshasta/shasta/releases/download/0.12.0/shasta-Linux-0.12.0
chmod +x shasta-Linux-0.12.0     # 添加执行权限
mv shasta-Linux-0.12.0 shasta    # 重命名

# 验证安装
shasta --version  # 当前最新 0.12.0(2024年)

特点

  • 极快:人类基因组约 2-5 小时(40x ONT 数据)
  • 内存需求大:人类基因组约 128-256GB RAM
  • 需要使用内存文件系统(/dev/shm)获得最佳性能

核心用法

基本组装

# 基本 ONT 组装
shasta \
  --input ont_reads.fq.gz \      # ONT 读段(支持 FASTA/FASTQ/gz)
  --assemblyDirectory shasta_output  # 输出目录

# 使用预设配置(推荐,针对不同数据类型优化)
shasta \
  --input ont_reads.fq.gz \
  --config Nanopore-R10-Fast \    # R10 流通池快速模式
  --assemblyDirectory shasta_output

# 指定线程数
shasta \
  --input ont_reads.fq.gz \
  --config Nanopore-R10-Fast \
  --threads 32 \                  # 32 线程
  --assemblyDirectory shasta_output

进阶用法

# 使用内存文件系统加速(推荐,速度提升 2-3 倍)
shasta \
  --input ont_reads.fq.gz \
  --config Nanopore-R10-Fast \
  --assemblyDirectory shasta_output \
  --memoryMode filesystem \       # 使用文件系统存储中间数据
  --memoryBacking disk            # 用磁盘(默认用 /dev/shm 共享内存)

# 高质量 ONT 数据(Q20+)配置
shasta \
  --input ont_hq_reads.fq.gz \
  --config Nanopore-R10-Slow \    # 慢速但更准确
  --threads 32 \
  --assemblyDirectory shasta_hq_output

# 调整覆盖度参数(高覆盖度数据)
shasta \
  --input ont_reads.fq.gz \
  --config Nanopore-R10-Fast \
  --Reads.minReadLength 5000 \    # 只用 >=5kb 的读段
  --threads 32 \
  --assemblyDirectory shasta_output

# 组装后 polishing
# Shasta 组装精度不如 Flye,通常需要 polishing
# 用 Medaka(ONT 官方 polishing 工具)
medaka_polish \
  -i ont_reads.fq.gz \            # 原始 ONT 读段
  -d shasta_output/Assembly.fasta \  # Shasta 组装结果
  -o medaka_output \
  -t 16

可用预设配置

# 查看所有可用预设
shasta --listConfigurations

# 常用预设:
# Nanopore-R10-Fast     — R10 流通池快速模式(推荐日常使用)
# Nanopore-R10-Slow     — R10 流通池慢速高精度
# Nanopore-R9-Fast      — R9 流通池快速模式
# Nanopore-UL-Dec2023   — Ultra-long 读段优化

常见问题与踩坑

问题1:内存不足

原因:Shasta 默认使用共享内存(/dev/shm),需要大量 RAM
解决:用 --memoryMode filesystem --memoryBacking disk 切换到磁盘模式(牺牲速度)

问题2:组装精度不够高

原因:Shasta 追求速度,精度不如 Flye/Canu
解决:组装后必须用 Medaka polishing,必要时再用 Pilon + Illumina 二次 polish

问题3:选哪个 config 预设

建议:R10 流通池用 Nanopore-R10-Fast;追求质量用 Nanopore-R10-Slow;Ultra-long 读段用 Nanopore-UL-Dec2023

问题4:Shasta vs Flye 怎么选

Shasta 优势:速度极快(Flye 的 3-5 倍),适合快速筛选和大批量样本
Flye 优势:组装质量更高,内存需求更低
建议:需要快速初步结果用 Shasta + Medaka;追求最终质量用 Flye


速查卡片

命令/参数用途
shasta --input reads.fq --assemblyDirectory out基本组装
--config Nanopore-R10-FastR10 快速预设
--config Nanopore-R10-SlowR10 高精度预设
--threads 32线程数
--memoryBacking disk使用磁盘(省内存)
--Reads.minReadLength 5000最短读段过滤
--listConfigurations列出所有预设
Assembly.fasta主要输出文件
Assembly.gfa组装图文件
AssemblySummary.csv组装统计摘要