medaka
は、ナノポアシーケンスデータからコンセンサスシーケンスとバリアントコールを作成するためのツールです。このタスクは、参照シーケンスに対して個々のシーケンス読み取りの杭を適用したニューラルネットワークを使用して実行されます。これは、主にドラフトアセンブリまたはデータベース参照シーケンスのいずれかです。シーケンスグラフベースの方法と信号ベースの方法を上回る最先端の結果を提供しますが、高速です。
©2018- Oxford Nanopore Technologies Ltd.
.fasta
または.fastq
)ドラフトアセンブリを作成するには、Flyeをお勧めします。
Medakaは、いくつかの方法のいずれかでインストールできます。
PIPでのインストール
Medakaの公式バイナリリリースはPypiで利用でき、PIPを使用してインストールできます。
pip install medaka
Contemporaray LinuxおよびMacOSプラットフォームでは、これにより事前コンパイルされたバイナリがインストールされます。他のプラットフォームでは、ソース分布がフェッチおよびコンパイルされる場合があります。
仮想環境でMedakaを使用することをお勧めします。つまり、
python3 -m venv medaka
. ./medaka/bin/activate
pip install --upgrade pip
pip install medaka
この方法を使用するには、ユーザーが複数のバイナリを提供する必要があります。
これらをPATH
内に置きます。 samtools/bgzip/tabix
バージョン> = 1.14およびminimap2
バージョン> = 2.17は、メダカの開発で使用されるものであるため、2.17が推奨されます。
デフォルトのインストールには、GPUで実行する能力があります(以下のGPUの使用を参照)、またはCPUで。 CPUのみでmedaka
使用していて、GPUで実行する機能が必要ない場合は、次のようなCPUのみのバージョンをインストールすることをお勧めします。
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
コンドラとのインストール
Bioconda Medakaパッケージは、オックスフォードナノポアテクノロジーによってサポートされていません。
Conda Package Managerを好む人のために、MedakaはAnaconda.orgチャンネルから入手できます。
conda create -n medaka -c conda-forge -c nanoporetech -c bioconda medaka
この方法を使用したインストールでは、エンドツーエンドの補正ワークフローを実行するために必要な追加のツールがバンドルされます。
ソースからのインストール
この方法は、さまざまな依存関係の構築に役立つため、上記の方法が失敗した場合にのみ役立ちます。この方法を使用してインストールすると、開発者が特定の状況でさらなる支援を提供できる可能性は低いです。
Medakaは、ほとんどのシステムでソースから非常に簡単にインストールできます。
Medakaをインストールする前に、パッケージマネージャーが最適にインストールする前提条件ライブラリをインストールする必要がある場合があります。 Ubuntuのこれらは次のとおりです。
bzip2 g++ zlib1g-dev libbz2-dev liblzma-dev libffi-dev libncurses5-dev libcurl4-gnutls-dev libssl-dev curl make cmake wget python3-all-dev python-virtualenv
さらに、リポジトリをクローニングする前に、Git LFSをインストールおよびセットアップする必要があります。
MakeFileは、すべての直接的な依存関係をPython仮想環境にフェッチ、コンパイル、インストールするために提供されます。環境をセットアップするには:
# Note: certain files are stored in git-lfs, https://git-lfs.github.com/,
# which must therefore be installed first.
git clone https://github.com/nanoporetech/medaka.git
cd medaka
make install
. ./venv/bin/activate
この方法を使用して、 samtools
とminimap2
両方がソースから構築されており、ユーザーが提供する必要はありません。
ソースから構築する場合、GPUで実行する能力なしでCPUのみのバージョンをインストールする場合、上記を次のように変更します。
MEDAKA_CPU=1 make install
GPUを使用します
バージョン2.0以来、 medaka
Pytorchを使用しています。以前のバージョン(V1.x)はTensorflowを使用しました。
ソースからの構築時またはpip
介してインストールするときにインストールされているPytorchのデフォルトバージョンは、Nvidia Cudaを介してGPUを即座に使用できます。ただし、 torch
パッケージは、CUDAおよびCUDNNライブラリの特定のバージョンに対してコンパイルされていることに注意してください。ユーザーは、詳細については、トーチインストールページに表示されます。 cudnnは、cudnnアーカイブから取得できますが、Cuda Toolkit ArchiveのCudaは取得できます。
Condaでのインストールは少し違っています。 [conda-forge] https://conda-forge.org/docs/user/tipsandtricks/#installing-cuda-enabled-packages-like-tensorflow-and-pytorch)ドキュメントを参照してください。要約すると、Condaパッケージは、インストールされているコンピューターに賢明な特注を行う必要があります。
上記のように、GPUで実行する機能が不要な場合、 medaka-cpu
、次のように、CUDAライブラリに依存しないPytorchのCPUのみのバージョンでインストールできます。
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
事前に作成されたパッケージを使用する場合、または
MEDAKA_CPU=1 make install
ソースから構築する場合。
GPUの使用メモ
GPUに応じて、 medaka
実行時にメモリエラーを示す場合があります。これらを回避するために、 medaka_consensus
実行するときに-b
オプションを設定することにより、推論バッチサイズをデフォルト値から削減できます。値-b 100
は、11GB GPUに適しています。
medaka
、 medaka_consensus
プログラムを通じてデフォルト設定を使用して実行できます。 .fasta
形式のアセンブリと.fasta
または.fastq
形式のベースコールが必要です。このプログラムは、 samtools
とminimap2
両方を使用しています。 Medakaがソースからの方法を使用してインストールされている場合、これらはMedaka環境内に存在します。そうしないと、ユーザーが提供する必要があります。
source ${MEDAKA} # i.e. medaka/venv/bin/activate
NPROC=$(nproc)
BASECALLS=basecalls.fa
DRAFT=draft_assm/assm_final.fa
OUTDIR=medaka_consensus
medaka_consensus -i ${BASECALLS} -d ${DRAFT} -o ${OUTDIR} -t ${NPROC}
上記のBASECALLS
、 DRAFT
、およびOUTDIR
適切に設定する必要があります。 -t
オプションは、使用するCPUスレッドの数を指定します。
medaka_consensus
実行を終了したとき、コンセンサスは${OUTDIR}/consensus.fasta
に保存されます。
半数体のバリアント呼び出し
半数体サンプルを呼び出すバリアントは、 medaka_variant
ワークフローを通じて有効になります。
medaka_variant -i <reads.fastq> -r <ref.fasta>
これには、 .fasta
または.fastq
としての読み取り、および参照シーケンスが.fasta
ファイルとして必要です。
二倍体バリアント呼び出し
Medakaパッケージ内で歴史的に実装されていたDiploidバリアントの呼び出しワークフローは、他の方法によって精度と計算パフォーマンスを上回っているため、廃止されました。このタスクを実行するための現在の推奨事項は、CLAIR3を直接またはEPI2MEラボを通じて利用できるNextFlow実装を提供するOxford Nanopore Technologiesを介して使用することです。
最良の結果を得るには、使用されているベースカラーによると、正しい推論モデルを指定することが重要です。許可された値はmedaka tools list_models
実行することで見つけることができます。
最近のbasecallers
最近のBaseCallerバージョンは、モデルバージョンで出力を注釈にします。そのような場合、Medakaはファイルを検査し、それ自体に適したモデルを選択しようとすることができます。これは通常、ベースカラーからのBAM出力の場合に最適に機能します。また、FASTQ入力に対しても機能します。FASTQが以下を使用してBaseCaller出力から作成されている場合は、
samtools fastq -T '*' dorado.bam | gzip -c > dorado.fastq.gz
コマンドmedaka inference
BAM入力ファイルを検査することにより、正しいモデルを自動的に決定しようとします。ヘルパースクリプトmedaka_consensus
とmedaka_variant
FastQ入力から同様の試みを行います。
自分でファイルを検査するには、コマンド:
medaka tools resolve_model --auto_model <consensus/variant> <input.bam/input.fastq>
自動モデルの選択が使用するモデルを印刷します。
細菌およびプラスミドシーケンス
細菌で発現した細菌分離株、メタゲノムサンプル、またはプラスミドなどの細菌修飾を伴うネイティブデータには、コンセンサスの精度が向上する研究モデルがあります。このモデルは、R10化学のいくつかのベースカラーバージョンと互換性があります。フラグを追加することにより--bacteria
バクテリアは、入力ベースカラーと互換性がある場合、細菌モデルが選択されます。
medaka_consensus -i ${BASECALLS} -d ${DRAFT} -o ${OUTDIR} -t ${NPROC} --bacteria
細菌モデルが入力ファイルと互換性がない場合、レガシーデフォルトモデルが使用されます。モデルの選択は、実行することで確認できます。
medaka tools resolve_model --auto_model consensus_bacteria <input.bam/input.fastq>
モデルr1041_e82_400bps_bacterial_methylation
は、互換性のあるモデル名またはデフォルトのモデル名を表示します。
自動選択が失敗した場合、古いベースカラー
使用されているベースカラーモデルの名前が既知であるが、入力ファイルから失われた場合、ベースカラーモデルはMedakaに直接提供できます。ただし、 :consensus
または:variant
のいずれかで追加する必要があります。例えば:
medaka inference input.bam output.hdf
--model [email protected]:variant
[email protected]
という名前のベースカラーモデルでの使用に適したMedakaバリアント呼び出しモデルを使用します。
歴史的に、メダカモデルは、化学バージョンとベースカラーバージョンの両方を説明する命名法に従いました。これらの古いモデルは現在廃止されており、ユーザーはMedakaを使用する前に、より最近のベースカラーバージョンでデータを再検討することをお勧めします。
medaka_consensus
プログラムは、単純なデータセットに適していますが、大規模な大規模なデータセットを実行するのに最適ではありません。 medaka_consensus
のコンポーネントステップを独立して実行することで、より高いレベルの並列性を実現できます。プログラムは3つのタスクを実行します。
minimap2
上の薄いベールであるmini_align
を介して)medaka inference
)medaka sequence
) 3つのステップは個別であり、分割して独立して実行できます。ほとんどの場合、ステップ2はボトルネックであり、簡単に平行化できます。 medaka consensus
プログラムは、ステップ1の.bam
ファイル出力から特定のアセンブリシーケンスへのアクションを制限する--regions
引数を提供できます。したがって、アセンブリシーケンスのバッチに対して同時に個別のジョブを実行できます。最後のステップでは、 medaka stitch
、ステップ2までに.hdf
ファイルの出力の1つ以上を入力することができます。
要約すると、このようなものが可能です:
# align reads to assembly
mini_align -i basecalls.fasta -r assembly.fasta -P -m
-p calls_to_draft.bam -t <threads>
# run lots of jobs like this:
mkdir results
medaka inference calls_to_draft.bam results/contigs1-4.hdf
--region contig1 contig2 contig3 contig4
...
# wait for jobs, then collate results
medaka sequence results/*.hdf polished.assembly.fasta
計算スケーリング効率はこれを超えて貧弱であるため、 medaka inference
には2を超える--threads
を指定することはお勧めしません。また、 medaka inference
入力データの読み取りと準備に追加の4つのスレッドが使用されるため、 <threads> + 4
に相当するリソースを使用することが見られる場合があることに注意してください。
Medakaは、Flyeアセンブラーからのドラフトシーケンス出力を修正するように訓練されています。
代替ソース(例:CANUまたはWTDBG2の出力など)からドラフトシーケンスを処理すると、異なる結果が生じる可能性があります。
Medakaの履歴修正モデルは、Canuアセンブラーからのドラフトシーケンス出力を修正するように訓練されました。現代のモデルの場合、これは事実ではなく、MedakaはFlyeの出力で直接使用する必要があります。
Joanna PinedaとJared Simpsonは、最適化された機能生成コードの大いに開発を支援したHTSLIBコードサンプルを提供し、バージョン0.4リリース候補をテストしてくれたことに感謝します。
RTX 2080 GPUでmedaka
を使用して作業してくれたDevin Drwownに感謝します。
ライセンスと著作権
©2018- Oxford Nanopore Technologies Ltd.
medaka
、Oxford Nanopore Technologies Plcの条件の下で配布されています。パブリックライセンスバージョン1.0
研究リリース
研究リリースは、機能への早期アクセスを提供したり、ツールのコミュニティ開発を刺激するためのテクノロジーデモ参加者として提供されています。このソフトウェアのサポートは最小限であり、開発者によって直接のみ提供されます。機能のリクエスト、改善、ディスカッションは歓迎され、フォーキングとプルリクエストによって実装できます。すべての問題とフィードバックユーザーが持つフィードバックを修正したいと考えていますが、開発者はこのソフトウェアのサポートのためのリソースを制限している可能性があります。研究のリリースは不安定であり、オックスフォードナノポアテクノロジーによる迅速な反復の影響を受ける可能性があります。