medaka
es una herramienta para crear secuencias de consenso y llamadas variantes a partir de datos de secuenciación de nanoporos. Esta tarea se realiza utilizando redes neuronales aplicadas una acumulación de lecturas de secuenciación individual en una secuencia de referencia, en su mayoría comúnmente un ensamblaje de borrador o una secuencia de referencia de la base de datos. Proporciona resultados de vanguardia superiores a los métodos basados en la secuencia y los métodos basados en la señal, al tiempo que también son más rápidos.
© 2018- Oxford Nanopore Technologies Ltd.
.fasta
o .fastq
)Para crear ensamblajes de borrador, recomendamos Flye.
Medaka se puede instalar de varias maneras.
Instalación con PIP
Los lanzamientos binarios oficiales de Medaka están disponibles en PYPI y se pueden instalar utilizando PIP:
pip install medaka
En las plataformas Contemporaray Linux y MacOS esto instalará un binario precompilado, en otras plataformas se puede obtener y compilar una distribución de origen.
Recomendamos usar Medaka dentro de un entorno virtual, a saber:
python3 -m venv medaka
. ./medaka/bin/activate
pip install --upgrade pip
pip install medaka
El uso de este método requiere que el usuario proporcione varios binarios:
y colocarlos dentro del PATH
. Se recomiendan versiones samtools/bgzip/tabix
> = 1.14 y minimap2
Versión> = 2.17 ya que son las que se usan en el desarrollo de Medaka.
La instalación predeterminada tiene la capacidad de ejecutarse en una GPU (ver usando una GPU a continuación) o en CPU. Si está utilizando medaka
exclusivamente en CPU, y no necesita la capacidad de ejecutarse en GPU, es posible que desee instalar la versión solo de CPU con:
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
Instalación con conda
Los paquetes Bioconda Medaka no son compatibles con Oxford Nanopore Technologies.
Para aquellos que prefieren el administrador de paquetes de conda, Medaka está disponible a través del canal Anaconda.org:
conda create -n medaka -c conda-forge -c nanoporetech -c bioconda medaka
Las instalaciones con este método agruparán las herramientas adicionales necesarias para ejecutar un flujo de trabajo de corrección de extremo a extremo.
Instalación desde la fuente
Este método es útil solo cuando los métodos anteriores han fallado, ya que ayudará a construir varias dependencias. Es poco probable que nuestros desarrolladores puedan brindar más asistencia en sus circunstancias específicas si instala usando este método.
Medaka se puede instalar desde su fuente con bastante facilidad en la mayoría de los sistemas.
Antes de instalar Medaka, es posible que se requiera instalar algunas bibliotecas de requisitos previos, mejor instalado por un administrador de paquetes. En Ubuntu, estas son:
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
Además, se requiere instalar y configurar GIT LFS antes de clonar el repositorio.
Se proporciona un makefile para obtener, compilar e instalar todas las dependencias directas en un entorno virtual de Python. Para configurar la ejecución del entorno:
# 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
Usando este método, tanto samtools
como minimap2
se construyen a partir de la fuente y el usuario no necesita ser proporcionado.
Al construir desde la fuente, para instalar una versión solo de CPU sin la capacidad de ejecutarse en GPU, modifique lo anterior a:
MEDAKA_CPU=1 make install
Usando una GPU
Dado que la versión 2.0 medaka
usa Pytorch. Las versiones anteriores (V1.X) usaron TensorFlow.
La versión predeterminada de Pytorch que se instala cuando se construye desde la fuente o cuando se instala a través de pip
puede hacer un uso inmediato de GPU a través de NVIDIA CUDA. Sin embargo, tenga en cuenta que el paquete torch
se compila contra versiones específicas de las bibliotecas CUDA y CUDNN; Los usuarios están dirigidos a las páginas de instalación de la antorcha para obtener más información. CUDNN se puede obtener del archivo Cudnn, mientras que CUDA del archivo CUDA Toolkit.
La instalación con conda es un poco diferente. Vea el [conda-forge] https://conda-forge.org/docs/user/tipsandtricks/#installing-cuda-able-packages-like-tensorflow-and-pytorch) documentación. En resumen, el paquete de conda debe hacer algo a medida sensible a la computadora en la que se está instalando.
Como se describió anteriormente, si no se requiere la capacidad de ejecutar en GPU, medaka-cpu
se puede instalar con una versión solo de CPU de Pytorch que no depende de las bibliotecas CUDA, de la siguiente manera:
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
Si usa los paquetes prebuilt, o
MEDAKA_CPU=1 make install
Si se construye desde la fuente.
Notas de uso de GPU
Dependiendo de su GPU, medaka
puede mostrar errores de memoria al ejecutar. Para evitarlos, el tamaño de lote de inferencia se puede reducir del valor predeterminado configurando la opción -b
al ejecutar medaka_consensus
. Un valor -b 100
es adecuado para GPU de 11 GB.
medaka
se puede ejecutar utilizando su configuración predeterminada a través del programa medaka_consensus
. Se requiere un ensamblaje en .fasta
.fasta
y se requieren en .fastq
. El programa utiliza tanto samtools
como minimap2
. Si se ha instalado Medaka utilizando el método desde la fuente, estos estarán presentes dentro del entorno Medaka, de lo contrario, el usuario deberá proporcionarlos.
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}
Las variables BASECALLS
, DRAFT
y OUTDIR
en lo anterior debe establecerse adecuadamente. La opción -t
especifica el número de subprocesos de CPU para usar.
Cuando medaka_consensus
ha terminado de funcionar, el consenso se ahorrará a ${OUTDIR}/consensus.fasta
.
Llamadas de variante haploides
Variante que solicita muestras haploides está habilitado a través del flujo de trabajo medaka_variant
:
medaka_variant -i <reads.fastq> -r <ref.fasta>
que requiere las lecturas como una .fasta
o .fastq
y una secuencia de referencia como un archivo .fasta
.
Clamación de variante diploides
El flujo de trabajo de llamadas de variante diploides que se implementó históricamente dentro del paquete Medaka ha sido superado en precisión y calcular el rendimiento por otros métodos, por lo tanto, se ha desapercido. Nuestra recomendación actual para realizar esta tarea es usar Clair3 directamente o a través de las tecnologías de Nanopore de Oxford proporcionó la implementación NextFlow disponible a través de EPI2ME Labs.
Para obtener los mejores resultados, es importante especificar el modelo de inferencia correcto, de acuerdo con el Basecaller utilizado. Los valores permitidos se pueden encontrar ejecutando medaka tools list_models
.
Basecallers recientes
Las versiones recientes de Basecaller anotan su salida con su versión modelo. En tales casos, Medaka puede inspeccionar los archivos e intentar seleccionar un modelo apropiado para sí mismo. Esto generalmente funciona mejor en el caso de la salida BAM de Basecallers. Funcionará también para la entrada de FastQ siempre que el FastQ se haya creado a partir de la salida de Basecaller usando:
samtools fastq -T '*' dorado.bam | gzip -c > dorado.fastq.gz
La medaka inference
intentará determinar automáticamente un modelo correcto inspeccionando su archivo de entrada BAM. El ayudante de guión medaka_consensus
y medaka_variant
hará intentos similares de su entrada FastQ.
Para inspeccionar archivos por usted mismo, el comando:
medaka tools resolve_model --auto_model <consensus/variant> <input.bam/input.fastq>
Imprimirá el modelo que utilizará la selección automática del modelo.
Secuenciación bacteriana y de plásmidos
Para los datos nativos con modificaciones bacterianas, como aislamientos bacterianos, muestras metagenómicas o plásmidos expresados en bacterias, hay un modelo de investigación que muestra una mejor precisión de consenso. Este modelo es compatible con varias versiones de Basecaller para las químicas R10. Al agregar el indicador --bacteria
se seleccionará el modelo bacteriano si es compatible con los Entradas Basecallers:
medaka_consensus -i ${BASECALLS} -d ${DRAFT} -o ${OUTDIR} -t ${NPROC} --bacteria
Se utilizará un modelo predeterminado heredado si el modelo bacteriano no es compatible con los archivos de entrada. La selección del modelo se puede confirmar ejecutando:
medaka tools resolve_model --auto_model consensus_bacteria <input.bam/input.fastq>
que mostrará el modelo r1041_e82_400bps_bacterial_methylation
si es compatible o el nombre de modelo predeterminado de lo contrario.
Cuando la selección automática no tiene éxito y es más antiguo.
Si se conoce el nombre del modelo Basecaller utilizado, pero se ha perdido de los archivos de entrada, el modelo Basecaller se puede proporcionar directamente a Medaka. Sin embargo, debe agregarse con :consensus
o :variant
de acuerdo con si el usuario que desea usar el consenso o la variante que llama al modelo Medaka. Por ejemplo:
medaka inference input.bam output.hdf
--model [email protected]:variant
Utilizará el modelo de llamadas de variante Medaka apropiada para su uso con el modelo Basecaller llamado [email protected]
.
Históricamente, los modelos de Medaka siguieron una nomenclatura que describe tanto la química como las versiones de Basecaller. Estos modelos antiguos ahora están en desuso, se alienta a los usuarios a rebotar sus datos con una versión más reciente de Basecaller antes de usar Medaka.
El programa medaka_consensus
es bueno para conjuntos de datos simples, pero quizás no sea óptimo para ejecutar grandes conjuntos de datos a escala. Se puede lograr un mayor nivel de paralelismo ejecutando independientemente los pasos de componentes de medaka_consensus
. El programa realiza tres tareas:
mini_align
, que es un velo delgado sobre minimap2
)medaka inference
)medaka sequence
) Los tres pasos son discretos y se pueden dividir y ejecutar de forma independiente. En la mayoría de los casos, el paso 2 es el cuello de botella y puede ser paralelo a paralelo. El programa medaka consensus
se puede suministrar un argumento --regions
que restringirá su acción a secuencias de ensamblaje particulares de la salida del archivo .bam
en el paso 1. Por lo tanto, los trabajos individuales se pueden ejecutar para lotes de secuencias de ensamblaje simultáneamente. En el paso final, medaka stitch
puede tomar como entrada uno o más de la salida de archivos .hdf
en el paso 2.
Entonces, en resumen, algo como esto es posible:
# 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
No se recomienda especificar un valor de --threads
superiores a 2 para medaka inference
ya que la eficiencia de escala de cómputo es pobre más allá de esto. Tenga en cuenta también que se puede ver que medaka inference
use recursos equivalentes a <threads> + 4
ya que se utilizan 4 hilos adicionales para leer y preparar datos de entrada.
Medaka ha sido entrenado para corregir las secuencias de borrador de salida del ensamblador de Flye.
Procesar una secuencia de borrador de fuentes alternativas (por ejemplo, la salida de Canu o WTDBG2) puede conducir a diferentes resultados.
Los modelos de corrección histórica en Medaka fueron entrenados para corregir las secuencias de borrador de salida del ensamblador de Canu con Racon aplicado una o cuatro veces iterativamente. Para los modelos contemporáneos, este no es el caso y Medaka debe usarse directamente en la salida de Flye.
Agradecemos a Joanna Pineda y Jared Simpson por proporcionar muestras de código HTSLIB que ayudaron en gran medida al desarrollo del código de generación de características optimizado y por probar la versión 0.4 de lanzamiento de los candidatos.
Agradecemos a Devin Drown por trabajar a través del uso de medaka
con su GPU RTX 2080.
Licencia y derechos de autor
© 2018- Oxford Nanopore Technologies Ltd.
medaka
se distribuye bajo los términos de Oxford Nanopore Technologies Plc. Licencia pública Versión 1.0
Lanzamiento de investigación
Las versiones de investigación se proporcionan como manifestantes tecnológicos para proporcionar acceso temprano a las características o estimular el desarrollo comunitario de herramientas. El soporte para este software será mínimo y solo los desarrolladores proporcionan directamente. Las solicitudes de funciones, las mejoras y las discusiones son bienvenidas y pueden implementarse mediante solicitudes de bifurcación y extracción. Por mucho que nos gustaría rectificar cada problema y retroalimentación que los usuarios puedan tener, los desarrolladores pueden tener recursos limitados para el apoyo de este software. Las versiones de investigación pueden ser inestables y sujetas a la rápida iteración por parte de Oxford Nanopore Technologies.