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版
研究版本
提供了研究版本作为技术演示者,以提供早期访问功能或刺激工具的社区开发。对该软件的支持将是最小的,并且仅由开发人员直接提供。欢迎功能请求,改进和讨论,可以通过分叉和拉请求来实现。无论我们想纠正用户可能会有的每个问题,开发人员可能拥有有限的资源来支持该软件,但是我们想纠正所有问题。研究发布可能是不稳定的,并且受牛津纳米孔技术的快速迭代。