Dorado
Dorado 是一个用于 Oxford Nanopore 读取的高性能、易于使用的开源基序识别器。
特性
- 一个可执行文件,具有合理的默认设置,自动硬件检测和配置。
- 支持在 Apple 硅片(M1/2 系列)和 Nvidia GPU 上运行,包括多 GPU 线性扩展(见平台)。
- 改进的基序识别。
- 双链基序识别(观看以下视频了解双链的介绍)。
- 简单条形码分类。
- 支持对齐读取输出的 SAM/BAM 格式。
- 初始支持 poly(A) 尾部估计。
- POD5 支持最高基序识别性能。
- 基于 libtorch,即 Pytorch 的 C++ API。
- 在 CUDA 和 Metal 中进行了多项自定义优化,以最大化推理性能。
- 如果您在构建或运行 Dorado 时遇到任何问题,请报告问题。
安装
- dorado-0.6.1-linux-x64
- dorado-0.6.1-linux-arm64
- dorado-0.6.1-osx-arm64
- dorado-0.6.1-win64
平台
Dorado 针对 Nvidia A100 和 H100 GPU 进行了大量优化,并将在这些 GPU 系统上提供最大性能。
Dorado 已在以下系统上进行了广泛测试和支持:
平台 | GPU/CPU | 最低软件要求 |
---|---|---|
Linux x86_64 | (G)V100, A100 | CUDA 驱动 ≥450.80.02 |
H100 | CUDA 驱动 ≥520 | |
Linux arm64 | Jetson Orin | Linux for Tegra ≥34.1.1 |
Windows x86_64 | (G)V100, A100 | CUDA 驱动 ≥452.39 |
H100 | CUDA 驱动 ≥520 | |
Apple | Apple 硅片 (M1/M2) |
未在上述列表中列出的 Linux 或 Windows 系统,但具有 Nvidia GPU 且具有 ≥8 GB VRAM 以及从 Pascal 起的架构(除 P100/GP100)尚未广泛测试,但预计可以工作。在使用 Apple 设备进行基序识别时,我们建议使用具有 ≥16 GB 统一内存的系统。
如果您在使用系统时遇到问题,请报告问题。
Dorado 0.3.0 在 Nvidia GPU 上的 AWS 基准测试可以在此处获得。请注意:Dorado 的基序识别速度正在持续改进,因此这些基准测试可能不反映最新版本的表现。
性能提示
为了获得最佳性能,Dorado 需要 POD5 文件输入。请在基序识别之前转换您的 .fast5 文件。
Dorado 将自动检测您的 GPU 的空闲内存,并选择适当的批次大小。
Dorado 将自动在多 GPU cuda:all 模式下运行。如果您有一系列异构 GPU,请使用 --device 标志选择更快的 GPU(例如 --device cuda:0,2)。不这样做将对性能产生不利影响。
运行
以下是一些有助于开始使用 Dorado 的命令。
要查看所有选项及其默认值,请运行 dorado -h 和 dorado <子命令> -h。
模型选择前言
Dorado 可以自动使用模型速度(fast, hac, sup)和 pod5 数据选择一个基序识别模型。此功能不支持 fast5 数据。如果本地不存在模型,则 Dorado 将自动下载模型并在完成后删除它。要重复使用下载的模型,请使用 dorado download 手动下载模型。
Dorado 继续支持模型路径。
有关详细信息,请阅读 自动模型选择复杂。
简单基序识别
要运行 Dorado 基序识别,请使用自动下载的 hac 模型对一个 POD5 文件目录或单个 POD5 文件进行基序识别(支持 .fast5 文件,但性能不会那么好)。
$ dorado basecaller hac pod5s/ > calls.bam
要对单个文件进行基序识别,只需将目录 pod5s/ 替换为您的数据文件路径。
如果基序识别被中断,可以恢复基序识别,从 BAM 文件开始。为此,请使用 --resume-from 标志指定不完整的 BAM 文件的路径。例如:
$ dorado basecaller hac pod5s/ --resume-from incomplete.bam > calls.bam
calls.bam 将包含 incomplete.bam 中的所有读取加上新的基序识别(完成基序识别后可以丢弃 incomplete.bam)。
注意:在使用 --resume-from 时,选择一个不同的 BAM 文件名来写入非常重要。如果您使用相同的文件名,中断的 BAM 文件将丢失现有的基序识别,并且将从一开始就重新开始基序识别。
DNA 适配器和引物修剪
Dorado 可以检测并移除 DNA 读取的开头和结尾的任何适配器和/或引物序列。请注意,如果您打算在某个时候对读取进行去多重化,修剪适配器和引物可能会导致条形码的某些部分被移除,这可能会干扰正确的去多重化。
与基序识别内联
默认情况下,dorado basecaller 将尝试检测读取开头和结尾的任何适配器或引物序列,并将其从输出序列中移除。
此功能可以通过使用 dorado basecaller 的 --trim 或 --no-trim 选项来更改。–no-trim 选项将防止检测到的条形码序列以及适配器和引物序列的修剪。
–tr