Dorado は、オックスフォード ナノポア読み取り用の高性能で使いやすいオープンソース ベースコーラーです。
賢明なデフォルト、自動ハードウェア検出および構成を備えた 1 つの実行可能ファイル。
Apple シリコン (M1/2 ファミリ) および線形スケーリングを備えたマルチ GPU を含む Nvidia GPU で実行します (「プラットフォーム」を参照)。
ベースコールを変更しました。
Duplex ベースコール (Duplex の概要については、次のビデオをご覧ください)。
シンプレックスバーコード分類。
SAM/BAM でのアラインされた読み取り出力のサポート。
ポリ(A)テール推定の初期サポート。
シングルリードエラー訂正のサポート。
POD5 のサポートにより、最高のベースコール パフォーマンスが実現します。
pytorch 用の C++ API である libtorch に基づいています。
推論パフォーマンスを最大化するための CUDA および Metal の複数のカスタム最適化。
Dorado の構築または実行で問題が発生した場合は、問題を報告してください。
まず、お使いのプラットフォームに関連するインストーラーをダウンロードします。
ドラド-0.8.2-linux-x64
ドラド-0.8.2-linux-arm64
ドラド-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 は広範囲にテストされており、次のシステムでサポートされています。
プラットフォーム | GPU/CPU | ソフトウェアの最小要件 |
---|---|---|
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) |
上記にリストされていないが、8 GB 以上の VRAM と Pascal 以降のアーキテクチャ (P100/GP100 を除く) を備えた Nvidia GPU を搭載した 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 ファイルのディレクトリに自動的にダウンロードされたhac
モデルを使用します(.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
からのすべての読み取りと新しい Basecall が含まれます( incomplete.bam
Basecall の完了後に破棄できます) 。
注: --resume-from
使用する場合は、書き込み先の BAM ファイルに別のファイル名を選択することが重要です。同じファイル名を使用すると、中断された BAM ファイルは既存のベースコールを失い、ベースコールは最初から再開されます。
Dorado は、DNA 読み取りの最初と最後からアダプターおよび/またはプライマー配列を検出して削除できます。後でリードを逆多重化する場合、アダプターとプライマーをトリミングすると、バーコードの隣接領域の一部が削除され、正しい逆多重化が妨げられる可能性があることに注意してください。
デフォルトでは、 dorado basecaller
読み取りの開始時と終了時にアダプターまたはプライマー シーケンスを検出し、出力シーケンスからそれらを削除しようとします。
この機能はdorado basecaller
で--trim
または--no-trim
オプションを使用することで変更できます。 --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) などの修飾塩基も検出できます。これらの修飾された塩基は、エピジェネティックな制御において重要な役割を果たします。
変更を呼び出すには、コンマ区切りの変更リストを使用してモデル引数を拡張します。
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
上の例では、CG コンテキストで 5mC/5hmC とすべてのコンテキストで 6mA の両方を検出してベースコールが実行されます。
--modified-bases
オプションで呼び出すことができる利用可能な修飾を確認するには、DNA モデル テーブルの互換性のある修飾の列を参照してください。
変更されたベースコーリングは、ヘミメチル化コールを生成する Duplex ベースコーリングでもサポートされます。
Duplex ベースコールを実行するには、次のコマンドを実行します。
$ dorado duplex sup pod5s/ > duplex.bam
duplex
コマンドを使用すると、「シンプレックス」と「デュプレックス」の 2 種類の DNA シーケンス結果が生成されます。二重鎖リードにある DNA 内の特定の位置は、2 つの単一鎖 (鋳型と相補鎖) にも見られます。 したがって、二重鎖配列された各 DNA 位置は、出力内の少なくとも 3 つの個別の読み取りによってカバーされます。
各読み取りの BAM レコード内のdx
タグを使用して、片面読み取りと二重読み取りを区別できます。
二重読み取りの場合はdx:i:1
。
dx:i:0
二重の子孫を持たない単一読み取りの場合です。
dx:i:-1
(二重の子を持つ単一読み取りの場合)。
Dorado は、二重ベースコールのヌクレオチド数を 2 倍し、単一ベースコールのヌクレオチドの総数で割ったものとして二重鎖レートを報告します。この値は、二重鎖ベースコールに関与したヌクレオチドの割合の近似値です。
二重ベースコーリングは、変更された塩基検出を使用して実行でき、二重リードのヘミメチル化コールを生成します。
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
ヘミメチル化コールがどのように表現されるかについての詳細は、SAM 仕様文書 (バージョン aa7440d) および Modkit 文書の 7 ページに記載されています。
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
プリセットが使用されます。これは、「-x」オプションや-k
や-w
などの個別のオプションを使用して、ミニマップ オプション文字列--mm2-opts
を渡して 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 ファイルからのベースコールの読み取りは、summary コマンドと互換性がありません。
Dorado は、分類されたベースコールを直接生成するだけでなく、既存のベースコールのバーコード分類もサポートしています。
このモードでは、同じコマンドの一部としてベースコール中に読み取りがバーコード グループに分類されます。これを有効にするには、次を実行します。
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
これにより、分類された読み取りを含む単一の出力ストリームが生成されます。分類は、読み取りグループ名および出力レコードのBC
タグに反映されます。
デフォルトでは、Dorado は読み取りからバーコードをトリミングするように設定されています。トリミングを無効にするには、コマンドラインに--no-trim
追加します。
両端バーコードのデフォルトのヒューリスティックでは、読み取りのどちらかの端でバーコードを検索します。これにより、分類率が高くなりますが、誤検知数も増加する可能性があります。これに対処するために、 dorado basecaller
は、分類前に両端で両端のバーコードが検出されるようにする--barcode-both-ends
オプションも用意されています。これにより、誤検知が大幅に減少しますが、全体的な分類率も低下します。
dorado basecaller
からの出力は、 dorado demux
使用してバーコードごとの BAM に逆多重化できます。例えば
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
これにより、バーコードごとに BAM ファイルがoutput-dir
に出力されます。
バーコード情報は BAM RG
ヘッダーにも反映されます。したがって、逆多重化はsamtools split
介して行うことも可能です。例えば
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
ただし、 samtools split
ファイル名のサフィックスとして完全なRG
文字列が使用されるため、ファイル名が非常に長くなる可能性があります。バーコード化された BAM を分割するには、 dorado demux
使用することをお勧めします。
dorado
のスタンドアロンdemux
コマンドを使用すると、既存のベースコール データセットを分類したり、バーコードごとの BAM に逆多重化したりできます。これを使用するには、実行します
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
、フォルダー、HTS 形式ファイル (FASTQ、BAM など) の単一ファイル、または HTS 形式のストリーム (dorado ベースコールの出力など) のいずれかです。
これにより、出力フォルダーに複数の BAM ファイルが生成されます。バーコードごとに 1 つ ( KITNAME_BARCODEXX.bam
としてフォーマット)、未分類の読み取りすべてに 1 つが生成されます。インライン モードと同様に、追加オプションとして--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
オプションも使用する必要があります。インデックス ファイル (拡張子 .bai) は、マップされた読み取りを含み、ソートされた BAM ファイルに対してのみ作成されます。大規模なデータセットの場合、出力ファイルの並べ替えには数分かかる場合があることに注意してください。
Dorado はサンプル シートを使用して、バーコード分類を存在するもののみに制限し、検出された分類にエイリアスを適用できます。これは、 basecaller
またはdemux
コマンドを使用するときに、サンプル シートへのパスを--sample-sheet
引数に渡すことで有効になります。詳細については、こちらを参照してください。
Oxford Nanopore の標準バーコード キットのサポートに加えて、Dorado はカスタム バーコード キットの配置とシーケンスの指定もサポートします。これは、 --barcode-arrangement
引数を介してバーコード配置ファイルを渡すことによって行われます ( dorado demux
またはdorado basecaller
のいずれかに)。カスタム バーコード シーケンスは、オプションで--barcode-sequences
オプションを使用して指定できます。詳細については、こちらを参照してください。
Dorado は、cDNA (PCS および PCB キット) および RNA のポリ (A) テール長を推定するための初期サポートを備えています。 Oxford Nanopore cDNA リードは 2 つの異なる方向で配列決定されており、Dorado ポリ (A) テール長の推定では両方 (A ホモポリマーと T ホモポリマー) が処理されることに注意してください。この機能は、 basecaller
コマンドに--estimate-poly-a
渡すことで有効にできます。デフォルトでは無効になっています。推定された末尾の長さは、出力レコードのpt:i
タグに保存されます。テールの長さを推定できなかったリードにはpt:i
タグがありません。カスタム プライマー シーケンスと中断されたテールの推定は、 --poly-a-config
オプションを通じて構成できます。詳細については、こちらを参照してください。
Dorado は、HERRO アルゴリズムの統合によるシングルリードエラー修正をサポートしています。 HERRO は、全対全アライメントとそれに続く深層学習モデルを使用したハプロタイプ認識補正を使用して、より高いシングルリード精度を達成します。修正されたリードは主に、二倍体生物のde novoアセンブリを生成するのに役立ちます。
読み取りを修正するには、次を実行します。
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado は、入力として FASTQ(.gz) のみをサポートし、出力として FASTA ファイルを生成します。入力は非圧縮またはbgz
で圧縮できます。インデックス ファイルが既に存在しない限り、入力 FASTQ ファイルに対して同じフォルダーにインデックス ファイルが生成されます。入力ファイルが含まれるフォルダーがdorado
プロセスによって書き込み可能であり、十分なディスク容量があることを確認してください。
エラー修正ツールは、計算量とメモリの両方を大量に消費します。そのため、複数の高性能 CPU コア (64 コア以上)、大容量システム メモリ (256 GB 以上)、および大容量 VRAM (32 GB 以上) を備えた最新の 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
Gzip 圧縮された PAF は現在--from-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
機能の入力ファイル形式は、空白で区切られた最初の列 (または完全な行) がスキップするシーケンス名 (行ごとに 1 つ) で構成される任意のプレーン テキスト ファイルです。
プロセスがシステムのメモリを大量に消費している場合は、より小さいインデックス サイズでプロセスを実行してみてください。例えば:
$ 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
として表されます。 Direct RNA Sequencing Kit を使用している場合、これはキットに応じてrna002
またはrna004
になります。
ポア タイプ ( r10.4.1
) : このセクションは、使用されるフローセルのタイプに対応します。たとえば、FLO-MIN114/FLO-FLG114 はr10.4.1
で示され、FLO-MIN106D/FLO-FLG001 はr9.4.1
で示されます。
Chemistry Type ( e8.2
) : これは、シーケンスに使用されるキットに対応する化学タイプを表します。たとえば、Kit 14 の化学反応はe8.2
で示され、Kit 10 または Kit 9 はe8
で示されます。
転位速度 ( 400bps
) : このパラメータは、MinKNOW の実行設定で選択され、転座の速度を指します。実行を開始する前に、260 bps または 400 bps のどちらで実行するかを尋ねるプロンプトが表示されます。前者の場合、より正確な結果が得られますが、提供されるデータは少なくなります。 MinKNOW バージョン 23.04 以降、260 bps オプションは非推奨になりました。
モデル タイプ ( hac
) : これはモデルのサイズを表します。モデルが大きいほど、より正確なベースコールが生成されますが、時間がかかります。モデルの 3 種類は、 fast
、 hac
、およびsup
です。 fast
モデルが最も速く、 sup
最も正確です。hac 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 6mA | v2 v2 v2 v2 | 5kHz |
[email protected] | 4mC〜5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2.0.1 v2.0.1 v2 | 5kHz |
[email protected] | 5kHz | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5mC 6mA | 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 ベースコールを実行している場合、結果の出力ファイルにはU
の代わりにT
含まれます。これは、出力ファイルの種類全体で一貫しています。
ベースコーリングモデル | 互換性がある 修正 | 修正 モデル バージョン | データ サンプリング 頻度 |
---|---|---|---|
[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] | m6A m6A_DRACH 疑似 | v1 v1 v1 | 4kHz |
[email protected] | m6A 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シンプレックス ベースコーリング モデル |
[email protected] | バージョンv4.2.0 のシンプレックス ベースコールHACモデル |
[email protected] | バージョンv3.5.0 のシンプレックス ベースコールHACモデル |
hac,5mCG_5hmCG | 選択したベースコール モデルの最新の互換性のあるHACシンプレックス モデルと最新の5mCG_5hmCG変更モデル |
hac,5mCG_5hmCG@v2 | 最新の互換性のあるHACシンプレックス モデルおよびバージョンv2.0.0 の5mCG_5hmCG修正モデル |
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
などのさまざまなエラーが発生する可能性があります。
この問題を解決するには、Dorado のライブラリを指すようにLD_LIBRARY_PATH
を設定する必要があります。 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
を作成し、そこに一意のチャネルごとに 1 つの pod5 ファイルを書き込みます。 これらの分割読み取りの二重ベースコールが大幅に高速化されます。
分散方式で二重ベースコールを実行する場合 (SLURM または Kubernetes クラスターなど)、上記のように POD5 ファイルを分割することが重要です。その理由は、二重ベースコールではシーケンス実行全体からの読み取りの集約が必要であり、それが複数の POD5 ファイルに分散されるためです。上で説明した分割戦略により、集約する必要があるすべての読み取りが同じ POD5 ファイル内に存在することが保証されます。分割が実行されると、POD5 のより小さなサブセットに対して複数のジョブを実行できます (たとえば、100 チャネルごとに 1 つのジョブ)。これにより、ベースコールをクラスター上のノード間で分散できるようになります。これにより、マージ可能な複数の BAM が生成されます。このアプローチは、ジョブが失敗した場合でも、データセット全体に対してベースコールを再実行することなく再開できるため、ある程度の回復力も提供します。
Dorado は幅広い GPU で動作しますが、主に Nvidia A100/H100 および Apple Silicon 向けに開発されています。 Dorado は、ベースコールに最適なバッチ サイズを見つけようとします。それにもかかわらず、一部の低 RAM GPU では、ユーザーがメモリ不足によるクラッシュに直面する可能性があります。
この問題に対する潜在的な解決策は、次のコマンドを使用して手動でバッチ サイズを設定することです。
dorado basecaller --batchsize 64 ...
注: chunksize
パラメータを変更してメモリ消費量を削減することは、ベースコールの結果に影響するため、お勧めできません。
GPU 使用率が低いと、ベースコール速度が低下する可能性があります。この問題は、 nvidia-smi
やnvtop
などのツールを使用して特定できます。 GPU 使用率が低い場合は、ベースコールの I/O ボトルネックが原因であることがよくあります。状況を改善するために実行できる手順は次のとおりです。
.fast5 の代わりに POD5 を選択する: POD5 は優れた I/O パフォーマンスを備えており、I/O に制約のある環境でのベースコール速度を向上させます。
ベースコールの前にデータをローカル ディスクに転送します。ネットワーク ディスクが Dorado に適切な速度を供給できないため、ベースコールが遅くなることがよくあります。これを軽減するには、データをできるだけホスト マシンの近くに配置するようにしてください。
HDD ではなく SSD を選択する: 特に二重ベースコーリングの場合、ローカル 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 Oxford Nanopore Technologies PLC。
Dorado は、Oxford Nanopore Technologies PLC の条件に基づいて配布されています。 パブリック ライセンス、v. 1.0。 ライセンスのコピーがこのファイルとともに配布されていない場合は、http://nanoporetech.com で入手できます。