medaka
是從納米孔測序數據中創建共識序列和變體調用的工具。使用神經網絡對參考序列進行了單個測序讀數的堆積執行此任務,通常通常是草稿組件或數據庫參考序列。它提供了最先進的結果優於基於序列圖的方法和基於信號的方法,同時也更快。
©2018-Oxford Nanopore Technologies Ltd.
.fasta
或.fastq
)為了創建草稿組件,我們建議Flye。
Medaka可以以幾種方式安裝。
使用PIP安裝
Medaka的官方二進製版本可在PYPI上使用,可以使用PIP安裝:
pip install medaka
在當代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,因為這些版本是用於Medaka開發的那些。
默認安裝具有在GPU上運行的能力(請參閱下面的GPU )或CPU。如果您僅在CPU上使用medaka
,並且不需要在GPU上運行的能力,則可能希望使用以下方式安裝僅CPU的版本。
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
使用Conda安裝
牛津納米孔技術不支持Bioconda Medaka套件。
對於那些喜歡Conda軟件包經理的人,可以通過Anaconda.org頻道獲得Medaka:
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
都是從源構建的,不必由用戶提供。
從源構建時,要安裝僅CPU的版本,而無需在GPU上運行的能力,將上述內容修改為:
MEDAKA_CPU=1 make install
使用GPU
由於2.0版medaka
使用Pytorch。先前的版本(v1.x)使用張量。
從源或通過pip
安裝時安裝的Pytorch的默認版本可以通過NVIDIA CUDA立即使用GPU。但是,請注意, torch
包是根據Cuda和Cudnn庫的特定版本編譯的;用戶可以直接進入火炬安裝頁面以獲取更多信息。 Cudnn可以從Cudnn檔案館獲得,而Cuda Toolkit檔案館的Cuda。
使用Conda安裝有些不同。請參閱[conda-forge] https://conda-forge.org/docs/user/tipsandtricks/#installing-cuda-enabled-packages-like-tensorflow-and-pytorch)文檔。總而言之,Conda軟件包應對正在安裝的計算機做一些明智的定制。
如上所述,如果不需要在GPU上運行的功能,則可以使用僅CPU的Pytorch版本安裝medaka-cpu
,該版本不依賴於CUDA庫,如下:
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_consensus
程序使用其默認設置運行medaka
。需要以.fasta
格式的組件和.fasta
或.fastq
格式的basecalls。該程序同時使用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軟件包中實現的二倍體變體工作流已經超過了通過其他方法的精確性和計算性能,因此已被貶低。我們目前執行此任務的建議是直接或通過Epi2Me Labs提供的NextFlow實現的牛津納米孔技術使用Clair3。
為了獲得最佳結果,根據所用的基本符號,必須指定正確的推理模型。可以通過運行medaka tools list_models
找到允許的值。
最近的基本者
最近的BaseCaller版本通過模型版本註釋了他們的輸出。在這種情況下,Medaka可以檢查文件並嘗試為自己選擇適當的模型。對於BaseCallers的BAM輸出而言,這通常最有效。只要使用:使用:
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提供BaseCaller模型。但是,必鬚根據希望使用共識或變體呼叫Medaka模型的用戶是根據:consensus
或:variant
附加。例如:
medaka inference input.bam output.hdf
--model [email protected]:variant
將使用適用於名為[email protected]
的BaseCaller模型使用的Medaka變體呼叫模型。
從歷史上看,Medaka模型遵循描述化學和基本版本的命名法。這些舊型號現在已棄用,鼓勵用戶在使用Medaka之前使用最新的BaseCaller版本重新查找數據。
medaka_consensus
程序非常適合簡單數據集,但對於大規模運行大型數據集可能不是最佳的。通過獨立運行medaka_consensus
的組件步驟,可以實現更高水平的並行性。該程序執行三個任務:
mini_align
, minimap2
上的薄面紗)medaka inference
)medaka sequence
)的聚合這三個步驟是離散的,可以分開並獨立運行。在大多數情況下,步驟2是瓶頸,並且可以平行於寬度。可以為medaka consensus
程序提供一個--regions
參數,該程序將其操作限制在步驟1中的.bam
文件輸出中的特定彙編序列。因此,可以同時運行單個作業以進行彙編序列。在最後一步中, medaka stitch
可以作為輸入一個或多個.hdf
文件輸出的輸出。
因此,總而言之是可能的:
# 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
可以被認為使用等於<threads> + 4
的資源,因為另外4個線程用於讀取和準備輸入數據。
Medaka已受過訓練,可以糾正FLEE彙編器輸出的草稿序列。
從替代來源處理草稿序列(例如CANU或WTDBG2的輸出)可能會導致不同的結果。
對Medaka中的歷史校正模型進行了訓練,以糾正CANU彙編器的草稿序列,其中一次或四次迭代地應用了Racon。對於當代模型,情況並非如此,Medaka應直接用於Flye的輸出。
我們感謝Joanna Pineda和Jared Simpson提供的HTSLIB代碼樣本,這些樣本有助於大力開發優化的功能生成代碼,並測試了0.4版的釋放候選版本。
我們感謝Devin Drown通過medaka
與他的RTX 2080 GPU一起使用的工作。
許可證和版權
©2018-Oxford Nanopore Technologies Ltd.
medaka
根據牛津納米孔技術的條款分佈。公共許可證1.0版
研究版本
提供了研究版本作為技術演示者,以提供早期訪問功能或刺激工具的社區開發。對該軟件的支持將是最小的,並且僅由開發人員直接提供。歡迎功能請求,改進和討論,可以通過分叉和拉請求來實現。無論我們想糾正用戶可能會有的每個問題,開發人員可能擁有有限的資源來支持該軟件,但是我們想糾正所有問題。研究發布可能是不穩定的,並且受牛津納米孔技術的快速迭代。