Dorado 是一款高性能、易于使用的开源碱基识别程序,适用于 Oxford Nanopore 读取。
一种具有合理默认值、自动硬件检测和配置的可执行文件。
在 Apple 芯片(M1/2 系列)和 Nvidia GPU 上运行,包括具有线性缩放功能的多 GPU(请参阅平台)。
修改后的碱基识别。
Duplex 碱基识别(观看以下视频以了解 Duplex 的介绍)。
单工条形码分类。
支持 SAM/BAM 中对齐的读取输出。
初步支持 Poly(A) 尾部估计。
支持单读纠错。
POD5 支持最高碱基识别性能。
基于 libtorch,pytorch 的 C++ API。
CUDA 和 Metal 中的多项自定义优化可最大限度地提高推理性能。
如果您在构建或运行 Dorado 时遇到任何问题,请报告问题。
首先,下载适合您平台的相关安装程序:
多拉多-0.8.2-linux-x64
dorado-0.8.2-linux-arm64
dorado-0.8.2-osx-arm64
多拉多-0.8.2-win64
下载相关的.tar.gz
或.zip
存档后,将存档解压到您所需的位置。
然后您可以使用完整路径调用 Dorado,例如:
$ /path/to/dorado-x.y.z-linux-x64/bin/dorado basecaller hac pod5s/ > calls.bam
或者您可以将 bin 路径添加到$PATH
环境变量中,然后使用dorado
命令运行,例如:
$ dorado basecaller hac pod5s/ > calls.bam
有关构建 Dorado 进行开发的详细信息,请参阅 DEV.md。
Dorado 针对 Nvidia A100 和 H100 GPU 进行了深度优化,并将在配备这些 GPU 的系统上提供最佳性能。
Dorado 已经过广泛测试并在以下系统上受支持:
平台 | 图形处理器/中央处理器 | 最低软件要求 |
---|---|---|
Linux x86_64 | (G)V100、A100 | CUDA 驱动程序 ≥450.80.02 |
H100 | CUDA驱动程序≥520 | |
Linux ARM64 | 杰特森·奥林 | Linux for Tegra ≥34.1.1 |
Windows x86_64 | (G)V100、A100 | CUDA驱动程序≥452.39 |
H100 | CUDA驱动程序≥520 | |
苹果 | 苹果芯片 (M1/M2) |
上面未列出但具有 Nvidia GPU、≥8 GB VRAM 和 Pascal 及以上架构(P100/GP100 除外)的 Linux 或 Windows 系统尚未经过广泛测试,但预计可以运行。使用 Apple 设备进行基地呼叫时,我们建议系统具有 ≥16 GB 的统一内存。
如果您在系统上运行时遇到问题,请报告问题。
此处提供了适用于 Dorado 0.3.0 的 Nvidia GPU 的 AWS 基准测试。请注意:Dorado 的碱基调用速度正在不断提高,因此这些基准测试可能无法反映最新版本的性能。
为了获得最佳性能,Dorado 需要 POD5 文件输入。请在碱基调用之前转换您的 .fast5 文件。
Dorado 将自动检测您的 GPU 的可用内存并选择合适的批量大小。
Dorado 将自动在多 GPU cuda:all
模式下运行。如果您有异构的 GPU 集合,请使用--device
标志(例如--device cuda:0,2
)选择更快的 GPU。不这样做将对性能产生不利影响。
以下是开始使用 Dorado 的有用命令。要查看所有选项及其默认值,请运行dorado -h
和dorado <subcommand> -h
。
Dorado 可以使用选择的模型速度( fast
、 hac
、 sup
)和 pod5 数据自动选择碱基识别模型。 fast5 数据不支持此功能。如果本地不存在模型,dorado会自动下载模型并使用。
Dorado 继续支持模型路径。
有关详细信息,请参阅自动模型选择复杂。
要运行 Dorado 碱基调用,请在 POD5 文件目录或单个 POD5 文件(支持 .fast5 文件,但性能不高)上使用自动下载的hac
模型。
$ 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 文件将丢失现有的碱基检出,并且碱基检出将从头开始重新启动。
Dorado 可以检测并删除 DNA 读数开头和结尾的任何接头和/或引物序列。请注意,如果您打算稍后对读数进行多路分离,则修剪接头和引物可能会导致条形码侧翼区域的某些部分被删除,这可能会干扰正确的多路分离。
默认情况下, dorado basecaller
将尝试检测读数开头和结尾处的任何接头或引物序列,并将其从输出序列中删除。
可以通过将--trim
或--no-trim
选项与dorado basecaller
一起使用来更改此功能。 --no-trim
选项将防止修剪检测到的条形码序列以及检测和修剪适配器和引物序列。
--trim
选项采用以下值之一作为其参数:
all
这与默认行为相同。任何检测到的接头或引物都将被修剪,如果启用了条形码,则任何检测到的条形码都将被修剪。
primers
这将导致任何检测到的接头或引物被修剪,但如果启用条形码,则不会修剪条形码序列。
这将导致任何检测到的adapters
被修剪,但引物不会被修剪,如果启用了条形码,则条形码也不会被修剪。
none
这与使用 --no-trim 选项相同。什么都不会被修剪。
如果接头/引物修剪是与碱基检出和解复用相结合进行的,则软件将自动确保接头和引物的修剪不会干扰解复用过程。但是,如果您打算稍后将解复用作为单独的步骤进行,则建议您在使用--no-trim
选项进行碱基检出时禁用接头/引物修剪,以确保任何条形码序列在读数中保持完全完整。
可以扫描现有碱基调用数据集的任一端的接头和/或引物序列,并修剪任何此类发现的序列。为此,请运行:
$ dorado trim <reads> > trimmed.bam
<reads>
可以是HTS格式文件(例如FASTQ、BAM等)或HTS格式的流(例如Dorado碱基调用的输出)。
--no-trim-primers
选项可用于防止修剪引物序列。在这种情况下,仅修剪接头序列。
如果您还打算对数据进行多路分离,则建议您在修剪任何接头和引物之前进行多路分离,因为首先修剪接头和引物可能会干扰正确的条形码分类。
无论输入是否对齐/排序, dorado trim
的输出始终是未对齐的记录。
该软件自动搜索 Oxford Nanopore 试剂盒中使用的引物序列。但是,您可以指定一组替代的引物序列,以便在与碱基调用内联修剪或与--trim
选项结合使用时进行搜索。在这两种情况下,这都是使用--primer-sequences
命令行选项完成的,后跟包含要搜索的引物序列的 FASTA 文件的完整路径和文件名。序列的记录名称并不重要。请注意,如果您使用此选项,则不会搜索 dorado 软件内置的正常引物序列。
RNA002 和 RNA004 试剂盒的接头在碱基识别过程中自动修剪。然而,与 DNA 不同,RNA 接头不能在碱基识别后进行修剪。
除了传统的 A、T、C 和 G 碱基识别之外,Dorado 还可以检测修饰碱基,例如 5-甲基胞嘧啶 (5mC)、5-羟甲基胞嘧啶 (5hmC) 和 N 6 -甲基腺苷 (6mA)。这些修饰的碱基在表观遗传调控中发挥着至关重要的作用。
要调用修改,请使用逗号分隔的修改列表扩展 models 参数:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
在上面的示例中,碱基检出是通过检测 CG 上下文中的 5mC/5hmC 和所有上下文中的 6mA 来执行的。
请参阅 DNA 模型表的兼容修饰列,查看可使用--modified-bases
选项调用的可用修饰。
双工碱基识别也支持修饰碱基识别,可产生半甲基化识别。
要运行双工碱基调用,请运行以下命令:
$ dorado duplex sup pod5s/ > duplex.bam
使用duplex
命令时,将产生两种类型的 DNA 序列结果:“simplex”和“duplex”。双链体读数中 DNA 中的任何特定位置也可以在两条单链(模板和补体)中看到。 因此,双链测序的每个 DNA 位置将被输出中至少三个单独的读数覆盖。
每次读取的 BAM 记录中的dx
标记可用于区分单工和双工读取:
dx:i:1
用于双工读取。
dx:i:0
用于没有双工后代的单工读取。
dx:i:-1
用于具有双工后代的单工读取。
Dorado 将报告双链体比率,即双链体碱基识别中的核苷酸数量乘以 2 再除以单链体碱基识别中的核苷酸总数。该值非常接近参与双链体碱基识别的核苷酸比例。
双工碱基识别可以通过修改碱基检测来执行,产生双工读取的半甲基化识别:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
有关如何表示半甲基化调用的更多信息,请参阅 SAM 规范文档(版本 aa7440d)的第 7 页和 Modkit 文档。
Dorado 支持对齐现有的碱基调用或直接生成对齐的输出。
要对齐现有的碱基调用,请运行:
$ dorado aligner <index> <reads> > aligned.bam
其中index
是要对齐的引用(FASTQ/FASTA/.mmi)格式, reads
是任何HTS格式的文件夹或文件。
从输入文件夹读取时, dorado aligner
还支持将对齐的文件发送到输出文件夹,这将保留输入的文件结构:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder>
可以使用--emit-summary
选项生成包含每次读取的对齐统计信息的对齐摘要。该文件将保存在--output-dir
文件夹中。
要使用双工或单工对齐进行碱基调用,请使用--reference
选项运行:
$ dorado basecaller <model> <reads> --reference <index> > calls.bam
对齐使用 minimap2,默认情况下使用lr:hq
预设。这可以通过传递小地图选项字符串--mm2-opts
、使用 '-x ' 选项和/或单独选项(例如-k
和-w
来分别设置 kmer 和窗口大小来覆盖。有关支持的 minimap2 选项的完整列表,请使用“--mm2-opts --help”。例如:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder> --mm2-opt "-x splice --junc-bed <annotations_file>" $ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder> --mm2-opt --help $ dorado basecaller <model> <reads> --reference <index> --mm2-opt "-k 15 -w 10" > calls.bam
dorado summary
命令输出一个制表符分隔的文件,其中包含来自碱基识别期间生成的 BAM 文件的读取级别测序信息。要创建摘要,请运行:
$ dorado summary <bam> > summary.tsv
请注意,摘要生成仅适用于从 POD5 文件读取基调用。从 .fast5 文件读取基本调用与摘要命令不兼容。
Dorado 支持现有碱基检出的条形码分类以及直接生成分类的碱基检出。
在此模式下,在碱基检出期间,读数被分类到其条形码组中,作为同一命令的一部分。要启用此功能,请运行:
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
这将产生具有分类读取的单个输出流。分类将反映在读取组名称以及输出记录的BC
标签中。
默认情况下,Dorado 设置为从读取中修剪条形码。要禁用修剪,请将--no-trim
添加到命令行。
双端条形码的默认启发式是在读取的任一端查找它们。这会导致更高的分类率,但也会导致更高的假阳性计数。为了解决这个问题, dorado basecaller
还提供了--barcode-both-ends
选项,强制在分类之前在两端检测双端条形码。这将大大减少误报,但也会降低总体分类率。
可以使用dorado demux
将dorado basecaller
的输出多路分解为每个条形码的 BAM。例如
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
这将在output-dir
中为每个条形码输出一个 BAM 文件。
条形码信息也反映在 BAM RG
标头中。因此,也可以通过samtools split
进行解复用。例如
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
但是, samtools split
使用完整的RG
字符串作为文件名后缀,这可能会导致文件名非常长。我们建议使用dorado demux
来分割条形码 BAM。
可以使用dorado
中的独立demux
命令对现有的 basecall 数据集进行分类和解复用为每个条形码的 BAM。要使用它,请运行
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
可以是HTS格式文件中的文件夹或单个文件(例如FASTQ、BAM等)或HTS格式的流(例如dorado basecalling的输出)。
这会导致在输出文件夹中生成多个 BAM 文件,每个条形码一个(格式为KITNAME_BARCODEXX.bam
),一个用于所有未分类的读取。与内联模式一样, --no-trim
和--barcode-both-ends
也可作为附加选项。
如果输入文件已对齐/排序并选择了--no-trim
,则每个输出条形码特定的 BAM 文件也将被排序和索引。但是,如果启用修剪(这是默认设置),则对齐信息将被删除,并且输出 BAM 将不对齐。这样做是因为一旦序列被改变,比对标签和位置就会失效。
这是一个示例输出文件夹
$ dorado demux --kit-name SQK-RPB004 --output-dir /tmp/demux reads.fastq $ ls -1 /tmp/demux SQK-RPB004_barcode01.bam SQK-RPB004_barcode02.bam SQK-RPB004_barcode03.bam ... unclassified.bam
可以使用dorado demux
中的--emit-summary
选项生成列出每个读取及其分类条形码的摘要文件。该文件将保存在--output-dir
文件夹中。
如果输入数据文件包含映射数据,则该信息可以保留在输出文件中。为此,您必须使用--no-trim
选项。修剪条形码将使输入文件中可能包含的任何映射信息无效,因此如果未指定--no-trim
应用程序将排除任何映射信息。
还可以让dorado demux
对包含映射读取的任何输出 bam 文件进行排序和索引。要启用此功能,请使用--sort-bam
选项。如果使用此选项,则还必须使用--no-trim
选项,因为修剪将阻止任何映射信息包含在输出文件中。只会为包含映射读取并已排序的 BAM 文件创建索引文件(.bai 扩展名)。请注意,对于大型数据集,对输出文件进行排序可能需要几分钟的时间。
Dorado 能够使用样本表将条形码分类限制为仅存在的分类,并将别名应用于检测到的分类。这是通过在使用basecaller
或demux
命令时将示例表的路径传递给--sample-sheet
参数来启用的。请参阅此处了解更多信息。
除了支持 Oxford Nanopore 的标准条形码套件外,Dorado 还支持指定自定义条形码套件排列和序列。这是通过--barcode-arrangement
参数传递条形码排列文件(传递给dorado demux
或dorado basecaller
)来完成的。可以选择通过--barcode-sequences
选项指定自定义条形码序列。请参阅此处了解更多详细信息。
Dorado 初步支持估计 cDNA(PCS 和 PCB 试剂盒)和 RNA 的 Poly(A) 尾长。请注意,Oxford Nanopore cDNA 读数以两个不同方向进行测序,Dorado poly(A) 尾长估计可处理这两种方向(A 和 T 均聚物)。可以通过将--estimate-poly-a
传递给basecaller
命令来启用此功能。默认情况下它是禁用的。估计的尾部长度存储在输出记录的pt:i
标记中。无法估计尾部长度的读取将不具有pt:i
标签。自定义引物序列和中断尾部的估计可以通过--poly-a-config
选项进行配置。请参阅此处了解更多详细信息。
Dorado 集成 HERRO 算法,支持单读纠错。 HERRO 使用全对全比对,然后使用深度学习模型进行单倍型感知校正,以实现更高的单读准确度。校正的读数主要用于生成二倍体生物体的从头组装。
要纠正读取,请运行:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado正确仅支持FASTQ(.gz)作为输入并生成FASTA文件作为输出。输入可以未压缩或使用bgz
压缩。除非已经存在,否则会在同一文件夹中为输入 FASTQ 文件生成一个索引文件。请确保包含输入文件的文件夹可由dorado
进程写入并且有足够的磁盘空间。
纠错工具是计算密集型和内存密集型的。因此,它最好在具有多个高性能 CPU 核心(>= 64 核心)、大系统内存(>= 256GB)和具有大 VRAM(>= 32GB)的现代 GPU 的系统上运行。
所有必需的模型权重均由 Dorado 自动下载。然而,在离线执行的情况下,权重也可以预先下载并通过命令行传递。为此,请运行:
$ dorado download --model herro-v1 $ dorado correct -m herro-v1 reads.fastq > corrected_reads.fasta
Dorado Correct 现在还提供了单独运行映射(仅 CPU 阶段)和推理(GPU 密集阶段)的功能。这使得 CPU 和 GPU 重型阶段能够分离为单独的步骤,甚至可以在具有适当计算特性的不同节点上运行。例子:
$ dorado correct reads.fastq --to-paf > overlaps.paf $ dorado correct reads.fastq --from-paf overlaps.paf > corrected_reads.fasta
--from-paf
选项当前不支持 Gzipped PAF。
此外,如果运行停止或失败,Dorado Correct 还提供“恢复”功能。恢复功能获取先前更正的读取列表(例如,上次运行的.fai
索引)并跳过先前处理的读取:
$ samtools faidx corrected_reads.1.fasta # Output from the previously interrupted run. $ dorado correct reads.fastq --resume-from corrected_reads.1.fasta.fai > corrected_reads.2.fasta
--resume-from
功能的输入文件格式可以是任何纯文本文件,其中第一个空格分隔的列(或整行)由要跳过的序列名称组成,每行一个。
如果该进程消耗了过多的系统内存,请尝试使用较小的索引大小来运行它。例如:
$ dorado correct reads.fastq --index-size 4G > corrected_reads.fasta
自动计算的推理批量大小对于您的系统来说可能仍然太高。如果您遇到有关可用 GPU 内存的警告/错误,请尝试减小批量大小/手动选择它。例如:
$ dorado correct reads.fastq --batch-size <number> > corrected_reads.fasta
如果您的输出 FASTA 文件与输入相比包含非常少量的校正读数,请检查以下内容:
输入数据集的平均读取长度>=10kbp
。 Dorado Correct 专为长读取而设计,不适用于短库。
输入覆盖率合理,最好>=30x
。
检查输入数据集的平均碱基质量。 Dorado Correct 期望映射和推理的输入准确。
要下载所有可用的 Dorado 模型,请运行:
$ dorado download --model all
Dorado 模型的名称是系统结构的,每个部分对应于模型的不同方面,其中包括化学和运行设置。以下是解释的示例型号名称:
分析物类型 ( dna
) :这表示正在测序的分析物的类型。对于 DNA 测序,它表示为dna
。如果您使用的是直接 RNA 测序试剂盒,则这将是rna002
或rna004
,具体取决于试剂盒。
孔类型 ( r10.4.1
) :本节对应于所使用的流通池类型。例如,FLO-MIN114/FLO-FLG114 由r10.4.1
表示,而 FLO-MIN106D/FLO-FLG001 由r9.4.1
表示。
化学类型 ( e8.2
) :这代表化学类型,对应于用于测序的试剂盒。例如,Kit 14 化学物质由e8.2
表示,而 Kit 10 或 Kit 9 由e8
表示。
易位速度( 400bps
) :此参数在 MinKNOW 中的运行设置中选择,是指易位的速度。在开始运行之前,系统会提示您是否希望以 260 bps 还是 400 bps 的速率运行。前者产生更准确的结果,但提供的数据较少。从 MinKNOW 版本 23.04 开始,260 bps 选项已被弃用。
模型类型 ( hac
) :这表示模型的大小,其中较大的模型会产生更准确的碱基检出,但需要更多时间。三种类型的模型是fast
、 hac
和sup
。 fast
模型是最快的, sup
是最准确的, hac
提供了速度和准确度之间的平衡。对于大多数用户,建议使用hac
模型。
模型版本号 ( v5.0.0
) :这表示模型的版本。模型更新会定期发布,版本号越高通常意味着准确性越高。
下表列出了可用的碱基识别模型以及可与其一起使用的修改后的碱基识别模型。粗体模型适用于最新发布的 5 kHz 数据条件。
修改模型的版本控制与碱基调用模型绑定。这意味着每个新的单纯形模型版本都会重置修改模型版本。例如,与v4.3.0
碱基调用模型兼容的6mA@v1
比与v4.2.0
碱基调用模型兼容的6mA@v2
更新。
打垒模型 | 兼容的 修改 | 修改 模型 版本 | 数据 采样 频率 |
---|---|---|---|
[email protected] | 5kHz | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6毫安 | v2 v2 v2 v2 | 5kHz |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6毫安 | v2 v2.0.1 v2.0.1 v2 | 5kHz |
[email protected] | 5kHz | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6毫安 | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6毫安 | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5毫℃ 6毫安 | v3.1 v1 v2 v3 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
注意: BAM 格式不支持U
基。因此,当 Dorado 执行 RNA 碱基识别时,生成的输出文件将包含T
而不是U
。这在不同的输出文件类型中是一致的。
打垒模型 | 兼容的 修改 | 修改 模型 版本 | 数据 采样 频率 |
---|---|---|---|
[email protected] | 4kHz | ||
[email protected] | m5C m6A_DRACH 肌苷_m6A 普塞乌 | v1 v1 v1 v1 | 4kHz |
[email protected] | m5C m6A_DRACH 肌苷_m6A 普塞乌 | v1 v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 米6A m6A_DRACH 普塞乌 | v1 v1 v1 | 4kHz |
[email protected] | 米6A m6A_DRACH 普塞乌 | v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 4kHz | ||
[email protected] | m6A_DRACH | v1 | 4kHz |
rna002_70bps_fast@v3 | 3kHz | ||
rna002_70bps_hac@v3 | 3kHz |
dorado 中的model
参数可以指定模型路径或模型复合体。模型复合体必须以单纯形模型 speed开头,并遵循以下语法:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
自动选择的修改模型将始终与基本单纯形模型版本匹配,并且将是最新的兼容版本,除非用户设置特定版本。自动修改模型选择将不允许混合绑定到不同单纯形模型版本的修改模型。
以下是模型复合体的一些示例:
模型综合体 | 描述 |
---|---|
快速地 | 最新兼容快速型号 |
哈克 | 最新兼容的hac型号 |
超级 | 最新兼容的SUP型号 |
hac@最新 | 最新兼容的hac单纯形碱基调用模型 |
[email protected] | 版本v4.2.0 的 Simplex 碱基识别hac模型 |
[email protected] | 版本v3.5.0 的 Simplex 碱基识别hac模型 |
hac,5mCG_5hmCG | 所选基本调用模型的最新兼容hac单纯形模型和最新5mCG_5hmCG修改模型 |
hac,5mCG_5hmCG@v2 | 最新兼容的hac单纯形模型和5mCG_5hmCG修改模型,版本为v2.0.0 |
sup,5mCG_5hmCG,6mA | 最新兼容的sup型号和最新兼容的5mCG_5hmCG和6mA修改型号 |
一旦自动模型选择过程根据输入数据找到合适的模型,它将搜索现有模型目录,以避免不必要地下载模型。可以按如下方式控制此搜索的行为:
设置--models-directory
CLI 参数 - --models-directory
参数可用于指定搜索模型的目录。
设置DORADO_MODELS_DIRECTORY
环境变量 - 这与设置--models-directory
相同,但优先级低于 CLI 等效项。
如果--models-directory
或DORADO_MODELS_DIRECORY
均未设置,则搜索当前工作目录。
如果设置了--models-directory
或DORADO_MODELS_DIRECTORY
,则自动下载的模型将持续存在,否则模型将被下载到本地临时目录并在dorado完成后删除。
Dorado 配备了执行所需的库(例如 CUDA)。但是,在某些操作系统上,可能会选择系统库而不是 Dorado 的库。这种差异可能会导致各种错误,例如CuBLAS error 8
。
要解决此问题,您需要将LD_LIBRARY_PATH
设置为指向 Dorado 的库。在 Linux 上使用如下命令(根据需要更改路径):
$ export LD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-linux-x64/lib:$LD_LIBRARY_PATH
在 macOS 上,等效的导出为(根据需要更改路径):
$ export DYLD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-osx-arm64/lib:$DYLD_LIBRARY_PATH
双工碱基调用是一个 IO 密集型过程,如果使用网络存储或 HDD,则性能可能会很差。这通常可以通过适当拆分 POD5 文件来改进。
首先安装POD5 python工具:
POD5 文档可以在这里找到。
$ pip install pod5
然后运行pod5 view
生成一个表,其中包含要具体拆分的信息,即“通道”信息。
$ pod5 view /path/to/your/dataset/ --include "read_id, channel" --output summary.tsv
这将创建“summary.tsv”文件,该文件应如下所示:
read_id channel 0000173c-bf67-44e7-9a9c-1ad0bc728e74 109 002fde30-9e23-4125-9eae-d112c18a81a7 463 ...
现在运行pod5 subset
将源数据中的记录复制到每个通道的输出中。这可能需要一些时间,具体取决于数据集的大小
$ pod5 subset /path/to/your/dataset/ --summary summary.tsv --columns channel --output split_by_channel
上面的命令将创建输出目录split_by_channel
并为每个唯一通道写入一个 pod5 文件。 现在,对这些分割读取进行双工碱基调用将会快得多。
如果以分布式方式运行双工碱基调用(例如在 SLURM 或 Kubernetes 集群上),如上所述拆分 POD5 文件非常重要。原因是双工碱基检出需要聚合整个测序运行中的读数,这些读数将分布在多个 POD5 文件上。上述分割策略确保所有需要聚合的读取都在同一个 POD5 文件中。一旦执行分割,就可以针对 POD5 的较小子集执行多个作业(例如,每 100 个通道一个作业)。这将允许碱基识别分布在集群上的各个节点上。这将生成多个可以合并的 BAM。该方法还提供了一定的弹性,就好像任何作业失败一样,它可以重新启动,而无需针对整个数据集重新运行碱基调用。
Dorado 可在多种 GPU 上运行,但它主要是为 Nvidia A100/H100 和 Apple Silicon 开发的。 Dorado 尝试找到碱基识别的最佳批量大小。然而,在某些低 RAM GPU 上,用户可能会面临内存不足的崩溃。
此问题的潜在解决方案可能是使用以下命令设置手动批量大小:
dorado basecaller --batchsize 64 ...
注意:不建议通过修改chunksize
参数来减少内存消耗,因为它会影响碱基调用结果。
GPU 利用率低会导致碱基识别速度降低。可以使用nvidia-smi
和nvtop
等工具来识别此问题。 GPU 利用率低通常源于碱基识别中的 I/O 瓶颈。您可以采取以下几个步骤来改善这种情况:
选择 POD5 而不是 .fast5:POD5 具有卓越的 I/O 性能,并将提高 I/O 受限环境中的基本调用速度。
在basecall之前将数据传输到本地磁盘:由于网络磁盘无法为Dorado提供足够的速度,因此经常会出现basecall缓慢的情况。为了缓解这种情况,请确保您的数据尽可能靠近主机。
选择 SSD 而不是 HDD:特别是对于双工碱基识别,使用本地 SSD 可以提供显着的速度优势。这是由于双工碱基识别算法严重依赖数据的随机访问。
在 Windows 上的 PowerShell 中运行时,必须小心,因为应用程序输出的默认编码通常为 UTF-16LE。 如果标准输出重定向到文件,这将导致文件损坏。 如果必须使用 PowerShell,建议使用--output-dir
参数来发出 BAM 文件。 例如,以下命令将创建 samtools 无法读取的损坏输出:
PS > dorado basecaller <args> > out.bam
相反,使用:
PS > dorado basecaller <args> --output-dir .
对于基于文本的输出格式(SAM 或 FASTQ),可以使用out-file
命令覆盖输出编码。 此命令将生成格式良好的 ascii SAM 文件:
PS > dorado basecaller <args> --emit-sam | out-file -encoding Ascii out.sam
请注意,使用Ascii
编码的out-file
不会生成格式正确的 BAM 文件。
在此处阅读有关 Powershell 输出编码的更多信息。
(c) 2024 牛津纳米孔技术有限公司。
Dorado 是根据 Oxford Nanopore Technologies PLC 的条款进行分发的。 公共许可证,v.1.0。 如果许可证副本未随此文件一起分发,您可以从 http://nanoporetech.com 获取一份