Dorado es un llamador base de código abierto, fácil de usar y de alto rendimiento para lecturas de Oxford Nanopore.
Un ejecutable con valores predeterminados razonables, detección y configuración automática de hardware.
Se ejecuta en GPU de Apple Silicon (familia M1/2) y Nvidia, incluidas múltiples GPU con escalado lineal (consulte Plataformas).
Llamadas base modificadas.
Llamadas base dúplex (vea el siguiente vídeo para obtener una introducción a Dúplex).
Clasificación de códigos de barras simplex.
Soporte para salida de lectura alineada en SAM/BAM.
Soporte inicial para la estimación de cola poli(A).
Soporte para corrección de errores de lectura única.
Compatibilidad con POD5 para un rendimiento de llamadas base más alto.
Basado en libtorch, la API de C++ para pytorch.
Múltiples optimizaciones personalizadas en CUDA y Metal para maximizar el rendimiento de la inferencia.
Si tiene algún problema al compilar o ejecutar Dorado, informe el problema.
Primero, descargue el instalador correspondiente a su plataforma:
dorado-0.8.2-linux-x64
dorado-0.8.2-linux-arm64
dorado-0.8.2-osx-arm64
dorado-0.8.2-win64
Una vez descargado el archivo .tar.gz
o .zip
correspondiente, extraiga el archivo a la ubicación deseada.
Luego puedes llamar a Dorado usando la ruta completa, por ejemplo:
$ /path/to/dorado-x.y.z-linux-x64/bin/dorado basecaller hac pod5s/ > calls.bam
O puede agregar la ruta bin a su variable de entorno $PATH
y ejecutarla con el comando dorado
, por ejemplo:
$ dorado basecaller hac pod5s/ > calls.bam
Consulte DEV.md para obtener detalles sobre cómo construir Dorado para el desarrollo.
Dorado está altamente optimizado para las GPU Nvidia A100 y H100 y ofrecerá el máximo rendimiento en sistemas con estas GPU.
Dorado ha sido probado exhaustivamente y admitido en los siguientes sistemas:
Plataforma | GPU/CPU | Requisitos mínimos de software |
---|---|---|
Linuxx86_64 | (G)V100, A100 | Controlador CUDA ≥450.80.02 |
H100 | Controlador CUDA ≥520 | |
brazo linux64 | El Supersónico Orin | Linux para Tegra ≥34.1.1 |
Ventanas x86_64 | (G)V100, A100 | Controlador CUDA ≥452,39 |
H100 | Controlador CUDA ≥520 | |
Manzana | Silicona de Apple (M1/M2) |
Los sistemas Linux o Windows que no figuran en la lista anterior pero que tienen GPU Nvidia con ≥8 GB de VRAM y arquitectura desde Pascal en adelante (excepto P100/GP100) no se han probado ampliamente, pero se espera que funcionen. Al realizar llamadas base con dispositivos Apple, recomendamos sistemas con ≥16 GB de memoria unificada.
Si tiene problemas con la ejecución en su sistema, informe un problema.
Los puntos de referencia de AWS en GPU Nvidia para Dorado 0.3.0 están disponibles aquí. Tenga en cuenta: la velocidad de llamadas base de Dorado mejora continuamente, por lo que es posible que estos puntos de referencia no reflejen el rendimiento con la última versión.
Para un rendimiento óptimo, Dorado requiere la entrada de archivos POD5. Convierta sus archivos .fast5 antes de realizar la llamada base.
Dorado detectará automáticamente la memoria libre de su GPU y seleccionará un tamaño de lote apropiado.
Dorado se ejecutará automáticamente en modo cuda:all
multi-GPU. Si tiene una colección heterogénea de GPU, seleccione las GPU más rápidas usando el indicador --device
(por ejemplo, --device cuda:0,2
). No hacerlo tendrá un impacto perjudicial en el rendimiento.
Los siguientes son comandos útiles para comenzar con Dorado. Para ver todas las opciones y sus valores predeterminados, ejecute dorado -h
y dorado <subcommand> -h
.
Dorado puede seleccionar automáticamente un modelo de llamada base utilizando una selección de velocidad del modelo ( fast
, hac
, sup
) y los datos pod5. Esta función no es compatible con datos fast5. Si el modelo no existe localmente, dorado lo descargará automáticamente y lo utilizará.
Dorado continúa apoyando caminos modelo.
Para obtener más información, lea Complejo de selección automática de modelos.
Para ejecutar la llamada base de Dorado, utilice el modelo hac
descargado automáticamente en un directorio de archivos POD5 o un único archivo POD5 (los archivos .fast5 son compatibles, pero no tendrán el mismo rendimiento) .
$ dorado basecaller hac pod5s/ > calls.bam
Para realizar una llamada base a un solo archivo, simplemente reemplace el directorio pod5s/
con una ruta a su archivo de datos.
Si se interrumpe la llamada base, es posible reanudarla desde un archivo BAM. Para hacerlo, use el indicador --resume-from
para especificar la ruta al archivo BAM incompleto. Por ejemplo:
$ dorado basecaller hac pod5s/ --resume-from incomplete.bam > calls.bam
calls.bam
contendrá todas las lecturas de incomplete.bam
más las nuevas llamadas base ( incomplete.bam
se puede descartar una vez completada la llamada base) .
Nota: es importante elegir un nombre de archivo diferente para el archivo BAM en el que está escribiendo cuando usa --resume-from
. Si usa el mismo nombre de archivo, el archivo BAM interrumpido perderá las llamadas base existentes y las llamadas base se reiniciarán desde el principio.
Dorado puede detectar y eliminar cualquier secuencia de adaptador y/o cebador desde el principio y el final de las lecturas de ADN. Tenga en cuenta que si tiene intención de demultiplexar las lecturas más adelante, al recortar los adaptadores y los cebadores se pueden eliminar algunas partes de las regiones flanqueantes de los códigos de barras, lo que podría interferir con la demultiplexación correcta.
De forma predeterminada, dorado basecaller
intentará detectar cualquier secuencia de adaptador o cebador al principio y al final de las lecturas y eliminarlas de la secuencia de salida.
Esta funcionalidad se puede modificar utilizando las opciones --trim
o --no-trim
con dorado basecaller
. La opción --no-trim
evitará el recorte de secuencias de códigos de barras detectadas, así como la detección y el recorte de secuencias de adaptadores y cebadores.
La opción --trim
toma como argumento uno de los siguientes valores:
all
Esto es lo mismo que el comportamiento predeterminado. Se recortarán todos los adaptadores o cebadores detectados y, si los códigos de barras están habilitados, se recortarán los códigos de barras detectados.
primers
Esto dará como resultado que se recorten todos los adaptadores o cebadores detectados, pero si el código de barras está habilitado, las secuencias de códigos de barras no se recortarán.
adapters
Esto dará como resultado que se recorten los adaptadores detectados, pero los cebadores no se recortarán y, si los códigos de barras están habilitados, los códigos de barras tampoco se recortarán.
none
Esto es lo mismo que usar la opción --no-trim. No se recortará nada.
Si el recorte de adaptador/cebador se realiza en línea con la llamada base en combinación con la demultiplexación, entonces el software se asegurará automáticamente de que el recorte de adaptadores y cebadores no interfiera con el proceso de demultiplexación. Sin embargo, si tiene la intención de realizar la demultiplexación más adelante como un paso separado, se recomienda que deshabilite el recorte del adaptador/cebador al realizar la llamada base con la opción --no-trim
, para garantizar que las secuencias de códigos de barras permanezcan completamente intactas en las lecturas.
Los conjuntos de datos existentes llamados base se pueden escanear en busca de secuencias de adaptadores y/o cebadores en cualquiera de los extremos, y recortar dichas secuencias encontradas. Para hacer esto, ejecute:
$ dorado trim <reads> > trimmed.bam
<reads>
puede ser un archivo en formato HTS (por ejemplo, FASTQ, BAM, etc.) o una secuencia en formato HTS (por ejemplo, la salida de Dorado basecalling).
La opción --no-trim-primers
se puede utilizar para evitar el recorte de secuencias de cebadores. En este caso sólo se recortarán las secuencias de adaptadores.
Si también es su intención demultiplexar los datos, se recomienda hacerlo antes de recortar los adaptadores y cebadores, ya que recortar primero los adaptadores y los cebadores puede interferir con la clasificación correcta de los códigos de barras.
La salida de dorado trim
siempre serán registros no alineados, independientemente de si la entrada está alineada/ordenada o no.
El software busca automáticamente las secuencias de cebadores utilizadas en los kits Oxford Nanopore. Sin embargo, puede especificar un conjunto alternativo de secuencias de cebadores para buscar al recortar, ya sea en línea con la llamada base o en combinación con la opción --trim
. En ambos casos, esto se logra usando la opción de línea de comando --primer-sequences
, seguida de la ruta completa y el nombre de un archivo FASTA que contiene las secuencias de cebadores que desea buscar. Los nombres de los registros de las secuencias no importan. Tenga en cuenta que si utiliza esta opción no se buscarán las secuencias de cebadores normales integradas en el software Dorado.
Los adaptadores para los kits RNA002 y RNA004 se recortan automáticamente durante la llamada base. Sin embargo, a diferencia del ADN, el adaptador de ARN no se puede recortar después de la llamada base.
Más allá de las tradicionales llamadas de bases A, T, C y G, Dorado también puede detectar bases modificadas como 5-metilcitosina (5 mC), 5-hidroximetilcitosina (5 hmC) y N 6 -metiladenosina (6 mA). Estas bases modificadas desempeñan funciones cruciales en la regulación epigenética.
Para llamar a modificaciones, extienda el argumento de modelos con una lista de modificaciones separadas por comas:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
En el ejemplo anterior, la llamada base se realiza con la detección de 5 mC/5 hmC en contextos CG y 6 mA en todos los contextos.
Consulte la columna Modificaciones compatibles de la tabla de modelos de ADN para ver las modificaciones disponibles que se pueden invocar con la opción --modified-bases
.
Las llamadas base modificadas también son compatibles con las llamadas base dúplex, donde produce llamadas de hemimetilación.
Para ejecutar llamadas base dúplex, ejecute el comando:
$ dorado duplex sup pod5s/ > duplex.bam
Cuando se utiliza el comando duplex
, se producirán dos tipos de resultados de secuencia de ADN: 'símplex' y 'dúplex'. Cualquier posición específica en el ADN que esté en una lectura dúplex también se ve en dos cadenas simples (la plantilla y el complemento). Por lo tanto, cada posición de ADN secuenciada dúplex estará cubierta por un mínimo de tres lecturas separadas en el resultado.
La etiqueta dx
en el registro BAM para cada lectura se puede utilizar para distinguir entre lecturas simplex y dúplex:
dx:i:1
para lecturas dúplex.
dx:i:0
para lecturas simplex que no tienen descendencia dúplex.
dx:i:-1
para lecturas simplex que tienen descendencia dúplex.
Dorado informará la tasa dúplex como el número de nucleótidos en las llamadas base dúplex multiplicado por dos y dividido por el número total de nucleótidos en las llamadas base simplex. Este valor es una aproximación cercana a la proporción de nucleótidos que participaron en una llamada base dúplex.
La llamada de base dúplex se puede realizar con detección de base modificada, lo que produce llamadas de hemimetilación para lecturas dúplex:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
Puede encontrar más información sobre cómo se representan las llamadas de hemimetilación en la página 7 del documento de especificación SAM (versión aa7440d) y la documentación de Modkit.
Dorado admite la alineación de llamadas base existentes o la producción de resultados alineados directamente.
Para alinear las llamadas base existentes, ejecute:
$ dorado aligner <index> <reads> > aligned.bam
donde index
es una referencia para alinear en formato (FASTQ/FASTA/.mmi) y reads
es una carpeta o archivo en cualquier formato HTS.
Al leer desde una carpeta de entrada, dorado aligner
también admite la emisión de archivos alineados a una carpeta de salida, lo que preservará la estructura de archivos de las entradas:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder>
Se puede generar un resumen de alineación que contiene estadísticas de alineación para cada lectura con la opción --emit-summary
. El archivo se guardará en la carpeta --output-dir
.
Para realizar una llamada base con alineación con dúplex o simplex, ejecute la opción --reference
:
$ dorado basecaller <model> <reads> --reference <index> > calls.bam
La alineación usa minimap2 y por defecto usa el valor preestablecido lr:hq
. Esto se puede anular pasando una cadena de opción de minimapa, --mm2-opts
, usando la opción '-x' y/o opciones individuales como -k
y -w
para configurar kmer y el tamaño de la ventana respectivamente. Para obtener una lista completa de las opciones de minimap2 compatibles, utilice '--mm2-opts --help'. Por ejemplo:
$ 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
El comando dorado summary
genera un archivo separado por tabulaciones con información de secuenciación de nivel de lectura del archivo BAM generado durante la llamada base. Para crear un resumen, ejecute:
$ dorado summary <bam> > summary.tsv
Tenga en cuenta que la generación de resumen solo está disponible para lecturas llamadas base desde archivos POD5. Las lecturas base llamadas desde archivos .fast5 no son compatibles con el comando de resumen.
Dorado admite la clasificación de códigos de barras para llamadas base existentes, además de producir llamadas base clasificadas directamente.
En este modo, las lecturas se clasifican en sus grupos de códigos de barras durante la llamada base como parte del mismo comando. Para habilitar esto, ejecute:
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
Esto dará como resultado un único flujo de salida con lecturas clasificadas. La clasificación se reflejará en el nombre del grupo de lectura así como en la etiqueta BC
del registro de salida.
De forma predeterminada, Dorado está configurado para recortar el código de barras de las lecturas. Para deshabilitar el recorte, agregue --no-trim
a la línea cmd.
La heurística predeterminada para códigos de barras de dos extremos es buscarlos en cualquiera de los extremos de la lectura. Esto da como resultado una tasa de clasificación más alta, pero también puede resultar en un recuento de falsos positivos más alto. Para solucionar este problema, dorado basecaller
también proporciona una opción --barcode-both-ends
para forzar la detección de códigos de barras de doble extremo en ambos extremos antes de la clasificación. Esto reducirá drásticamente los falsos positivos, pero también reducirá las tasas de clasificación generales.
La salida de dorado basecaller
se puede demultiplexar en BAM por código de barras utilizando dorado demux
. p.ej
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
Esto generará un archivo BAM por código de barras en el output-dir
.
La información del código de barras también se refleja en el encabezado de BAM RG
. Por lo tanto, la demultiplexación también es posible mediante samtools split
. p.ej
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
Sin embargo, samtools split
utiliza la cadena RG
completa como sufijo del nombre de archivo, lo que puede dar como resultado nombres de archivo muy largos. Recomendamos utilizar dorado demux
para dividir BAM con códigos de barras.
Los conjuntos de datos existentes llamados base se pueden clasificar y demultiplexar en BAM por código de barras utilizando el comando demux
independiente en dorado
. Para usar esto, ejecute
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
puede ser una carpeta o un único archivo en formato HTS (por ejemplo, FASTQ, BAM, etc.) o una secuencia en formato HTS (por ejemplo, la salida de dorado basecalling).
Esto da como resultado que se generen varios archivos BAM en la carpeta de salida, uno por código de barras (formateado como KITNAME_BARCODEXX.bam
) y otro para todas las lecturas no clasificadas. Al igual que con el modo en línea, --no-trim
y --barcode-both-ends
también están disponibles como opciones adicionales.
Si el archivo de entrada está alineado/ordenado y se elige --no-trim
, cada uno de los archivos BAM específicos del código de barras de salida también se ordenará e indexará. Sin embargo, si el recorte está habilitado (que es el valor predeterminado), la información de alineación se elimina y los BAM de salida no están alineados. Esto se hace porque las etiquetas y posiciones de alineación se invalidan una vez que se modifica una secuencia.
Aquí hay un ejemplo de carpeta de salida.
$ 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
Se puede generar un archivo de resumen que enumera cada lectura y su código de barras clasificado con la opción --emit-summary
en dorado demux
. El archivo se guardará en la carpeta --output-dir
.
Si los archivos de datos de entrada contienen datos cartográficos, esta información se puede conservar en los archivos de salida. Para hacer esto, debes usar la opción --no-trim
. Recortar los códigos de barras invalidará cualquier información cartográfica que pueda contener los archivos de entrada y, por lo tanto, la aplicación excluirá cualquier información cartográfica si no se especifica --no-trim
.
También es posible hacer que dorado demux
ordene e indexe cualquier archivo bam de salida que contenga lecturas asignadas. Para habilitar esto, use la opción --sort-bam
. Si usa esta opción, también debe usar la opción --no-trim
, ya que el recorte evitará que se incluya información de mapeo en los archivos de salida. Los archivos de índice (extensión .bai) solo se crearán para archivos BAM que contengan lecturas asignadas y estén ordenados. Tenga en cuenta que, para conjuntos de datos grandes, ordenar los archivos de salida puede tardar unos minutos.
Dorado puede utilizar una hoja de muestra para restringir las clasificaciones de códigos de barras solo a aquellos presentes y aplicar alias a las clasificaciones detectadas. Esto se habilita pasando la ruta a una hoja de muestra al argumento --sample-sheet
cuando se usan los comandos basecaller
o demux
. Consulte aquí para obtener más información.
Además de admitir los kits de códigos de barras estándar de Oxford Nanopore, Dorado también admite la especificación de secuencias y disposiciones de kits de códigos de barras personalizados. Esto se hace pasando un archivo de disposición de código de barras a través del argumento --barcode-arrangement
(ya sea a dorado demux
o dorado basecaller
). Opcionalmente, se pueden especificar secuencias de códigos de barras personalizadas mediante la opción --barcode-sequences
. Consulte aquí para obtener más detalles.
Dorado cuenta con soporte inicial para estimar longitudes de cola de poli(A) para ADNc (kits PCS y PCB) y ARN. Tenga en cuenta que las lecturas de ADNc de Oxford Nanopore se secuencian en dos orientaciones diferentes y la estimación de la longitud de la cola de Dorado poli(A) maneja ambos (homopolímeros A y T). Esta característica se puede habilitar pasando --estimate-poly-a
al comando basecaller
. Está deshabilitado de forma predeterminada. La longitud de cola estimada se almacena en la etiqueta pt:i
del registro de salida. Las lecturas para las que no se pudo estimar la longitud de la cola no tendrán la etiqueta pt:i
. Las secuencias de cebadores personalizadas y la estimación de colas interrumpidas se pueden configurar a través de la opción --poly-a-config
. Consulte aquí para obtener más detalles.
Dorado admite la corrección de errores de lectura única con la integración del algoritmo HERRO. HERRO utiliza una alineación todos contra todos seguida de una corrección basada en haplotipos mediante un modelo de aprendizaje profundo para lograr mayores precisiones en una sola lectura. Las lecturas corregidas son principalmente útiles para generar ensamblajes de novo de organismos diploides.
Para corregir lecturas, ejecute:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado correct solo admite FASTQ(.gz) como entrada y genera un archivo FASTA como salida. La entrada se puede descomprimir o comprimir con bgz
. Se genera un archivo de índice para el archivo FASTQ de entrada en la misma carpeta, a menos que ya haya uno presente. Asegúrese de que el proceso dorado
pueda escribir en la carpeta con el archivo de entrada y que tenga suficiente espacio en disco.
La herramienta de corrección de errores requiere mucha computación y memoria. Como resultado, es mejor ejecutarlo en un sistema con múltiples núcleos de CPU de alto rendimiento (>= 64 núcleos), gran memoria del sistema (>= 256 GB) y una GPU moderna con una gran VRAM (>= 32 GB).
Dorado descarga automáticamente todos los pesos de los modelos requeridos. Sin embargo, los pesos también se pueden descargar previamente y pasar a través de la línea de comando en caso de ejecución fuera de línea. Para hacerlo, ejecute:
$ dorado download --model herro-v1 $ dorado correct -m herro-v1 reads.fastq > corrected_reads.fasta
Dorado Correct ahora también proporciona una función para ejecutar mapeo (etapa solo de CPU) e inferencia (etapa con uso intensivo de GPU) individualmente. Esto permite separar las etapas pesadas de CPU y GPU en pasos individuales que incluso pueden ejecutarse en diferentes nodos con características informáticas adecuadas. Ejemplo:
$ dorado correct reads.fastq --to-paf > overlaps.paf $ dorado correct reads.fastq --from-paf overlaps.paf > corrected_reads.fasta
Actualmente, PAF comprimido con gzip no es compatible con la opción --from-paf
.
Además, si una ejecución se detuvo o falló, Dorado Correct proporciona una funcionalidad de "reanudación". La función de reanudación toma una lista de lecturas corregidas previamente (por ejemplo, un índice .fai
de la ejecución anterior) y omite las lecturas procesadas previamente:
$ 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
El formato del archivo de entrada para la función --resume-from
puede ser cualquier archivo de texto sin formato donde la primera columna delimitada por espacios en blanco (o una fila completa) consta de nombres de secuencia para omitir, uno por fila.
En caso de que el proceso consuma demasiada memoria para su sistema, intente ejecutarlo con un tamaño de índice más pequeño. Por ejemplo:
$ dorado correct reads.fastq --index-size 4G > corrected_reads.fasta
Es posible que el tamaño del lote de inferencia calculado automáticamente aún sea demasiado alto para su sistema. Si experimenta advertencias/errores con respecto a la memoria de GPU disponible, intente reducir el tamaño del lote/seleccionarlo manualmente. Por ejemplo:
$ dorado correct reads.fastq --batch-size <number> > corrected_reads.fasta
En caso de que su archivo FASTA de salida contenga una cantidad muy baja de lecturas corregidas en comparación con la entrada, verifique lo siguiente:
El conjunto de datos de entrada tiene una longitud de lectura promedio >=10kbp
. Dorado Correct está diseñado para lecturas largas y no funcionará en bibliotecas cortas.
La cobertura de entrada es razonable, preferiblemente >=30x
.
Verifique las calidades base promedio del conjunto de datos de entrada. Dorado Correct espera entradas precisas tanto para el mapeo como para la inferencia.
Para descargar todos los modelos Dorado disponibles, ejecute:
$ dorado download --model all
Los nombres de los modelos Dorado están estructurados sistemáticamente, cada segmento corresponde a un aspecto diferente del modelo, que incluye tanto la química como la configuración de ejecución. A continuación se muestra un nombre de modelo de muestra explicado:
Tipo de analito ( dna
) : indica el tipo de analito que se secuencia. Para la secuenciación de ADN, se representa como dna
. Si está utilizando un kit de secuenciación directa de ARN, será rna002
o rna004
, según el kit.
Tipo de poro ( r10.4.1
) : esta sección corresponde al tipo de celda de flujo utilizada. Por ejemplo, FLO-MIN114/FLO-FLG114 se indica con r10.4.1
, mientras que FLO-MIN106D/FLO-FLG001 se indica con r9.4.1
.
Tipo de química ( e8.2
) : representa el tipo de química que corresponde al kit utilizado para la secuenciación. Por ejemplo, la química del kit 14 se indica con e8.2
y el kit 10 o el kit 9 se indica con e8
.
Velocidad de translocación ( 400bps
) : este parámetro, seleccionado en la configuración de ejecución en MinKNOW, se refiere a la velocidad de translocación. Antes de comenzar la ejecución, un mensaje le preguntará si prefiere ejecutar a 260 bps o 400 bps. El primero produce resultados más precisos pero proporciona menos datos. A partir de la versión 23.04 de MinKNOW, la opción de 260 bps ha quedado obsoleta.
Tipo de modelo ( hac
) : representa el tamaño del modelo, donde los modelos más grandes producen llamadas base más precisas pero toman más tiempo. Los tres tipos de modelos son fast
, hac
y sup
. El modelo fast
es el más rápido, sup
es el más preciso y hac
proporciona un equilibrio entre velocidad y precisión. Para la mayoría de los usuarios, se recomienda el modelo hac
.
Número de versión del modelo ( v5.0.0
) : indica la versión del modelo. Las actualizaciones de los modelos se publican periódicamente y los números de versión más altos suelen significar una mayor precisión.
A continuación se muestra una tabla de los modelos de llamadas base disponibles y los modelos de llamadas base modificados que se pueden usar con ellos. Los modelos en negrita corresponden a la última condición publicada con datos de 5 kHz.
El control de versiones de los modelos de modificación está vinculado al modelo de llamada base. Esto significa que la versión del modelo de modificación se restablece para cada nuevo lanzamiento del modelo simplex. Por ejemplo, 6mA@v1
compatible con los modelos de llamada base v4.3.0
es más reciente que 6mA@v2
compatible con los modelos de llamada base v4.2.0
.
Modelos de llamadas base | Compatible Modificaciones | Modificaciones Modelo Versión | Datos Muestreo Frecuencia |
---|---|---|---|
[email protected] | 5 kilociclos | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2 v2 v2 | 5 kilociclos |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2.0.1 v2.0.1 v2 | 5 kilociclos |
[email protected] | 5 kilociclos | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5 kilociclos |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 5 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 5 kilociclos |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5 mC 6mA | v3.1 v1 v2 v3 | 5 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG_5hmCG | v2 | 4 kilociclos |
[email protected] | 5mCG | v2 | 4 kilociclos |
[email protected] | 5mCG | v2 | 4 kilociclos |
[email protected] | 5mCG | v2 | 4 kilociclos |
[email protected] | 5mCG | v2 | 4 kilociclos |
[email protected] | 5mCG | v2 | 4 kilociclos |
[email protected] | 5mCG | v2 | 4 kilociclos |
[email protected] | 4 kilociclos | ||
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4 kilociclos |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4 kilociclos |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4 kilociclos |
Nota: El formato BAM no admite bases U
Por lo tanto, cuando Dorado realiza llamadas base de ARN, los archivos de salida resultantes incluirán T
en lugar de U
Esto es consistente en todos los tipos de archivos de salida.
Modelos de llamadas base | Compatible Modificaciones | Modificaciones Modelo Versión | Datos Muestreo Frecuencia |
---|---|---|---|
[email protected] | 4 kilociclos | ||
[email protected] | m5C m6A_DRACH inosina_m6A pseU | v1 v1 v1 v1 | 4 kilociclos |
[email protected] | m5C m6A_DRACH inosina_m6A pseU | v1 v1 v1 v1 | 4 kilociclos |
[email protected] | 4 kilociclos | ||
[email protected] | m6A m6A_DRACH pseU | v1 v1 v1 | 4 kilociclos |
[email protected] | m6A m6A_DRACH pseU | v1 v1 v1 | 4 kilociclos |
[email protected] | 4 kilociclos | ||
[email protected] | 4 kilociclos | ||
[email protected] | m6A_DRACH | v1 | 4 kilociclos |
rna002_70bps_fast@v3 | 3 kilociclos | ||
rna002_70bps_hac@v3 | 3 kilociclos |
El argumento model
en dorado puede especificar una ruta del modelo o un complejo de modelos. Un modelo complejo debe comenzar con la velocidad del modelo simplex y seguir esta sintaxis:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
Los modelos de modificación seleccionados automáticamente siempre coincidirán con la versión del modelo simplex base y serán la última versión compatible a menos que el usuario establezca una versión específica. La selección automática del modelo de modificación no permitirá la combinación de modelos de modificación vinculados a diferentes versiones de modelos simplex.
A continuación se muestran algunos ejemplos de complejos de modelos:
Complejo modelo | Descripción |
---|---|
rápido | Último modelo rápido compatible |
hac | Último modelo hac compatible |
sorber | Último modelo de sup compatible |
hac@último | Último modelo compatible de llamadas base hac simplex |
[email protected] | Modelo hac de llamadas base simplex con la versión v4.2.0 |
[email protected] | Modelo hac de llamadas base simplex con la versión v3.5.0 |
hac,5mCG_5hmCG | Último modelo hac simplex compatible y último modelo de modificaciones 5mCG_5hmCG para el modelo basecall elegido |
hac,5mCG_5hmCG@v2 | Último modelo hac simplex compatible y modelo de modificaciones 5mCG_5hmCG con la versión v2.0.0 |
sup,5mCG_5hmCG,6mA | Último modelo de sup compatible y últimos modelos compatibles de modificaciones 5mCG_5hmCG y 6mA |
Una vez que el proceso de selección automática de modelos haya encontrado el modelo apropiado dados los datos de entrada, buscará directorios de modelos existentes para evitar descargar modelos innecesariamente. El comportamiento de esta búsqueda se puede controlar de la siguiente manera:
Configuración del argumento CLI --models-directory
: el argumento --models-directory
se puede utilizar para especificar un directorio donde se buscarán los modelos.
Configurar la variable de entorno DORADO_MODELS_DIRECTORY
: es lo mismo que configurar --models-directory
pero tiene menor prioridad que el equivalente de CLI.
Si no se configuran --models-directory
ni DORADO_MODELS_DIRECORY
, se busca en el directorio de trabajo actual.
Si se configura --models-directory
o DORADO_MODELS_DIRECTORY
, los modelos descargados automáticamente persistirán; de lo contrario, los modelos se descargarán en un directorio temporal local y se eliminarán después de que dorado haya terminado.
Dorado viene equipado con las librerías necesarias (como CUDA) para su ejecución. Sin embargo, en algunos sistemas operativos, es posible que se elijan las bibliotecas del sistema en lugar de las de Dorado. Esta discrepancia puede dar lugar a varios errores, por ejemplo, CuBLAS error 8
.
Para resolver este problema, debe configurar LD_LIBRARY_PATH
para que apunte a las bibliotecas de Dorado. Utilice un comando como el siguiente en Linux (cambie la ruta según corresponda):
$ export LD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-linux-x64/lib:$LD_LIBRARY_PATH
En macOS, la exportación equivalente sería (cambie la ruta según corresponda):
$ export DYLD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-osx-arm64/lib:$DYLD_LIBRARY_PATH
La llamada base dúplex es un proceso que requiere un uso intensivo de E/S y puede funcionar mal si se utiliza almacenamiento en red o HDD. En general, esto se puede mejorar dividiendo los archivos POD5 de forma adecuada.
Primero instale las herramientas de Python POD5:
La documentación del POD5 se puede encontrar aquí.
$ pip install pod5
Luego ejecute pod5 view
para generar una tabla que contenga información para dividir específicamente, la información del "canal".
$ pod5 view /path/to/your/dataset/ --include "read_id, channel" --output summary.tsv
Esto creará el archivo "summary.tsv" que debería verse así:
read_id channel 0000173c-bf67-44e7-9a9c-1ad0bc728e74 109 002fde30-9e23-4125-9eae-d112c18a81a7 463 ...
Ahora ejecute pod5 subset
para copiar registros de sus datos de origen en salidas por canal. Esto puede llevar algún tiempo dependiendo del tamaño de su conjunto de datos.
$ pod5 subset /path/to/your/dataset/ --summary summary.tsv --columns channel --output split_by_channel
El comando anterior creará el directorio de salida split_by_channel
y escribirá en él un archivo pod5 por canal único. La llamada base dúplex a estas lecturas divididas ahora será mucho más rápida.
Si ejecuta llamadas base dúplex de forma distribuida (por ejemplo, en un clúster SLURM o Kubernetes), es importante dividir los archivos POD5 como se describe anteriormente. La razón es que las llamadas base dúplex requieren la agregación de lecturas de toda una secuenciación completa, que se distribuirá en varios archivos POD5. La estrategia de división descrita anteriormente garantiza que todas las lecturas que deben agregarse estén en el mismo archivo POD5. Una vez realizada la división, se pueden ejecutar múltiples trabajos contra subconjuntos más pequeños de POD5 (por ejemplo, un trabajo por cada 100 canales). Esto permitirá que las llamadas base se distribuyan entre los nodos de un clúster. Esto generará múltiples BAM que se pueden fusionar. Este método también ofrece cierta resiliencia, ya que si algún trabajo falla, se puede reiniciar sin tener que volver a ejecutar la llamada base en todo el conjunto de datos.
Dorado opera en una amplia gama de GPU, pero está desarrollado principalmente para Nvidia A100/H100 y Apple Silicon. Dorado intenta encontrar el tamaño de lote óptimo para realizar llamadas base. Sin embargo, en algunas GPU con poca RAM, los usuarios pueden sufrir fallas por falta de memoria.
Una posible solución a este problema podría ser establecer un tamaño de lote manual mediante el siguiente comando:
dorado basecaller --batchsize 64 ...
Nota: No se recomienda reducir el consumo de memoria modificando el parámetro chunksize
, ya que influye en los resultados de la llamada base.
La baja utilización de la GPU puede provocar una reducción de la velocidad de las llamadas base. Este problema se puede identificar utilizando herramientas como nvidia-smi
y nvtop
. La baja utilización de GPU a menudo se debe a cuellos de botella de E/S en las llamadas base. Aquí hay algunos pasos que puede seguir para mejorar la situación:
Opte por POD5 en lugar de .fast5: POD5 tiene un rendimiento de E/S superior y mejorará la velocidad de la llamada base en entornos con restricciones de E/S.
Transfiera datos al disco local antes de realizar la llamada base: las llamadas base lentas a menudo ocurren porque los discos de red no pueden proporcionar a Dorado la velocidad adecuada. Para mitigar esto, asegúrese de que sus datos estén lo más cerca posible de su máquina host.
Elija SSD en lugar de HDD: especialmente para llamadas base dúplex, el uso de un SSD local puede ofrecer importantes ventajas de velocidad. Esto se debe a la dependencia del algoritmo de llamada base dúplex en un intenso acceso aleatorio a los datos.
Cuando se ejecuta PowerShell en Windows, se debe tener cuidado, ya que la codificación predeterminada para la salida de la aplicación suele ser UTF-16LE. Esto provocará daños en el archivo si la salida estándar se redirige a un archivo. Se recomienda utilizar el argumento --output-dir
para emitir archivos BAM si se debe utilizar PowerShell. Por ejemplo, el siguiente comando creará una salida corrupta que samtools no podrá leer:
PS > dorado basecaller <args> > out.bam
En su lugar, utilice:
PS > dorado basecaller <args> --output-dir .
Para formatos de salida basados en texto (SAM o FASTQ), es posible anular la codificación en la salida usando el comando out-file
. Este comando producirá un archivo SAM ascii bien formado:
PS > dorado basecaller <args> --emit-sam | out-file -encoding Ascii out.sam
Tenga en cuenta que out-file
con codificación Ascii
no producirá archivos BAM bien formados.
Lea más sobre la codificación de salida de Powershell aquí.
(c) 2024 Oxford Nanopore Technologies PLC.
Dorado se distribuye según los términos de Oxford Nanopore Technologies PLC. Licencia Pública, v. 1.0. Si no se distribuyó una copia de la Licencia con este archivo, puede obtener una en http://nanoporetech.com