Dorado é um basecaller de código aberto, de alto desempenho e fácil de usar para leituras Oxford Nanopore.
Um executável com padrões sensatos, detecção e configuração automática de hardware.
Funciona em GPUs Apple Silicon (família M1/2) e Nvidia, incluindo multi-GPU com escala linear (consulte Plataformas).
Chamada de base modificada.
Basecalling Duplex (assista ao vídeo a seguir para uma introdução ao Duplex).
Classificação de código de barras simplex.
Suporte para saída de leitura alinhada em SAM/BAM.
Suporte inicial para estimativa de cauda poli(A).
Suporte para correção de erros de leitura única.
Suporte POD5 para maior desempenho de chamada de base.
Baseado em libtorch, a API C++ para pytorch.
Múltiplas otimizações personalizadas em CUDA e Metal para maximizar o desempenho de inferência.
Se você encontrar algum problema ao criar ou executar o Dorado, relate o problema.
Primeiro, baixe o instalador relevante para sua plataforma:
dorado-0.8.2-linux-x64
dorado-0.8.2-linux-arm64
dorado-0.8.2-osx-arm64
dorado-0.8.2-win64
Depois que o arquivo .tar.gz
ou .zip
relevante for baixado, extraia o arquivo para o local desejado.
Você pode então chamar o Dorado usando o caminho completo, por exemplo:
$ /path/to/dorado-x.y.z-linux-x64/bin/dorado basecaller hac pod5s/ > calls.bam
Ou você pode adicionar o caminho bin à sua variável de ambiente $PATH
e executar com o comando dorado
, por exemplo:
$ dorado basecaller hac pod5s/ > calls.bam
Consulte DEV.md para obter detalhes sobre a construção do Dorado para desenvolvimento.
Dorado é altamente otimizado para GPUs Nvidia A100 e H100 e oferecerá desempenho máximo em sistemas com essas GPUs.
O Dorado foi testado extensivamente e tem suporte nos seguintes sistemas:
Plataforma | GPU/CPU | Requisitos mínimos de software |
---|---|---|
Linux x86_64 | (G)V100, A100 | Driver CUDA ≥450.80.02 |
H100 | Driver CUDA ≥520 | |
Arm64 do Linux | Jetson Orin | Linux para Tegra ≥34.1.1 |
Janelas x86_64 | (G)V100, A100 | Driver CUDA ≥452,39 |
H100 | Driver CUDA ≥520 | |
Maçã | Silício Apple (M1/M2) |
Os sistemas Linux ou Windows não listados acima, mas que possuem GPUs Nvidia com VRAM ≥8 GB e arquitetura Pascal em diante (exceto P100/GP100) não foram amplamente testados, mas espera-se que funcionem. Ao fazer chamadas com dispositivos Apple, recomendamos sistemas com ≥16 GB de memória unificada.
Se você encontrar problemas de execução em seu sistema, relate um problema.
Os benchmarks da AWS em GPUs Nvidia para Dorado 0.3.0 estão disponíveis aqui. Observação: a velocidade de chamada de base do Dorado está melhorando continuamente, portanto, esses benchmarks podem não refletir o desempenho da versão mais recente.
Para um desempenho ideal, o Dorado requer entrada de arquivo POD5. Converta seus arquivos .fast5 antes da chamada de base.
O Dorado detectará automaticamente a memória livre da sua GPU e selecionará um tamanho de lote apropriado.
O Dorado será executado automaticamente no modo cuda:all
multi-GPU. Se você tiver uma coleção heterogênea de GPUs, selecione as GPUs mais rápidas usando o sinalizador --device
(por exemplo, --device cuda:0,2
). Não fazer isso terá um impacto negativo no desempenho.
A seguir estão comandos úteis para começar a usar o Dorado. Para ver todas as opções e seus padrões, execute dorado -h
e dorado <subcommand> -h
.
O Dorado pode selecionar automaticamente um modelo de chamada de base usando uma seleção de velocidade do modelo ( fast
, hac
, sup
) e os dados do pod5. Este recurso não é compatível com dados fast5. Se o modelo não existir localmente, o Dorado baixará automaticamente o modelo e o utilizará.
Dorado continua a apoiar caminhos de modelo.
Para obter detalhes, leia Complexo de seleção automática de modelo.
Para executar a chamada de base do Dorado, use o modelo hac
baixado automaticamente em um diretório de arquivos POD5 ou em um único arquivo POD5 (arquivos .fast5 são suportados, mas não terão o mesmo desempenho) .
$ dorado basecaller hac pod5s/ > calls.bam
Para basear um único arquivo, simplesmente substitua o diretório pod5s/
por um caminho para seu arquivo de dados.
Se a chamada de base for interrompida, é possível retomar a chamada de base a partir de um arquivo BAM. Para fazer isso, use o sinalizador --resume-from
para especificar o caminho para o arquivo BAM incompleto. Por exemplo:
$ dorado basecaller hac pod5s/ --resume-from incomplete.bam > calls.bam
calls.bam
conterá todas as leituras de incomplete.bam
mais as novas basecalls ( incomplete.bam
pode ser descartado após a conclusão da basecall) .
Nota: é importante escolher um nome de arquivo diferente para o arquivo BAM no qual você está gravando ao usar --resume-from
. Se você usar o mesmo nome de arquivo, o arquivo BAM interrompido perderá as chamadas de base existentes e a chamada de base será reiniciada desde o início.
O Dorado pode detectar e remover quaisquer sequências de adaptadores e/ou primers do início e do final das leituras de DNA. Observe que se você pretende demultiplexar as leituras posteriormente, o corte de adaptadores e primers pode resultar na remoção de algumas partes das regiões flanqueadoras dos códigos de barras, o que pode interferir na demultiplexação correta.
Por padrão, dorado basecaller
tentará detectar qualquer adaptador ou sequência de primer no início e no final das leituras e removê-los da sequência de saída.
Esta funcionalidade pode ser alterada usando as opções --trim
ou --no-trim
com dorado basecaller
. A opção --no-trim
impedirá o corte de sequências de códigos de barras detectadas, bem como a detecção e corte de sequências de adaptadores e primers.
A opção --trim
toma como argumento um dos seguintes valores:
all
Isso é igual ao comportamento padrão. Quaisquer adaptadores ou primers detectados serão cortados e, se o código de barras estiver ativado, todos os códigos de barras detectados serão cortados.
primers
Isso resultará no corte de quaisquer adaptadores ou primers detectados, mas se o código de barras estiver ativado, as sequências de código de barras não serão cortadas.
adapters
Isso resultará no corte de todos os adaptadores detectados, mas os primers não serão cortados e, se o código de barras estiver ativado, os códigos de barras também não serão cortados.
none
É o mesmo que usar a opção --no-trim. Nada será cortado.
Se o corte do adaptador/primer for feito em linha com a chamada de base em combinação com a demultiplexação, o software garantirá automaticamente que o corte dos adaptadores e dos primers não interfira no processo de demultiplexação. No entanto, se você pretende fazer a demultiplexação posteriormente como uma etapa separada, é recomendável desativar o corte do adaptador/primer ao fazer a chamada base com a opção --no-trim
, para garantir que quaisquer sequências de código de barras permaneçam completamente intactas nas leituras.
Os conjuntos de dados chamados de base existentes podem ser varridos em busca de sequências de adaptador e/ou primer em qualquer extremidade e aparar quaisquer sequências encontradas. Para fazer isso, execute:
$ dorado trim <reads> > trimmed.bam
<reads>
pode ser um arquivo no formato HTS (por exemplo, FASTQ, BAM, etc.) ou um fluxo de formato HTS (por exemplo, a saída da chamada de base Dorado).
A opção --no-trim-primers
pode ser usada para evitar o corte de sequências de primers. Neste caso, apenas as sequências do adaptador serão cortadas.
Se também for sua intenção desmultiplexar os dados, é recomendável desmultiplexar antes de cortar quaisquer adaptadores e primers, pois aparar adaptadores e primers primeiro pode interferir na classificação correta do código de barras.
A saída do dorado trim
sempre serão registros desalinhados, independentemente de a entrada estar alinhada/classificada ou não.
O software procura automaticamente sequências de primers usadas nos kits Oxford Nanopore. No entanto, você pode especificar um conjunto alternativo de sequências de primers para pesquisar ao aparar em linha com a chamada de base ou em combinação com a opção --trim
. Em ambos os casos, isso é feito usando a opção de linha de comando --primer-sequences
, seguida pelo caminho completo e nome do arquivo FASTA contendo as sequências de primer que você deseja pesquisar. Os nomes dos registros das sequências não importam. Observe que se você usar esta opção, as sequências de primers normais integradas ao software dorado não serão pesquisadas.
Os adaptadores para kits RNA002 e RNA004 são cortados automaticamente durante a chamada de base. No entanto, ao contrário do DNA, o adaptador de RNA não pode ser aparado após a chamada de base.
Além da chamada de base tradicional A, T, C e G, o Dorado também pode detectar bases modificadas, como 5-metilcitosina (5mC), 5-hidroximetilcitosina (5hmC) e N 6 -metiladenosina (6mA). Estas bases modificadas desempenham papéis cruciais na regulação epigenética.
Para chamar modificações, estenda o argumento models com uma lista de modificações separadas por vírgula:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
No exemplo acima, a chamada de base é realizada com a detecção de 5mC/5hmC em contextos CG e 6mA em todos os contextos.
Consulte a coluna Modificações Compatíveis da tabela de modelos de DNA para ver as modificações disponíveis que podem ser chamadas com a opção --modified-bases
.
A chamada de base modificada também é suportada com a chamada de base Duplex, onde produz chamadas de hemimetilação.
Para executar a chamada base Duplex, execute o comando:
$ dorado duplex sup pod5s/ > duplex.bam
Ao utilizar o comando duplex
, serão produzidos dois tipos de resultados de sequência de DNA: 'simplex' e 'duplex'. Qualquer posição específica no DNA que esteja em uma leitura duplex também é vista em duas fitas simplex (o modelo e o complemento). Assim, cada posição de DNA sequenciada em duplex será coberta por um mínimo de três leituras separadas na saída.
A tag dx
no registro BAM para cada leitura pode ser usada para distinguir entre leituras simplex e duplex:
dx:i:1
para leituras duplex.
dx:i:0
para leituras simplex que não possuem descendentes duplex.
dx:i:-1
para leituras simplex que possuem descendentes duplex.
O Dorado reportará a taxa duplex como o número de nucleotídeos nas chamadas base duplex multiplicado por dois e dividido pelo número total de nucleotídeos nas chamadas base simplex. Este valor é uma boa aproximação para a proporção de nucleotídeos que participaram de uma chamada de base duplex.
A chamada de base duplex pode ser realizada com detecção de base modificada, produzindo chamadas de hemimetilação para leituras duplex:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
Mais informações sobre como as chamadas de hemimetilação são representadas podem ser encontradas na página 7 do documento de especificação SAM (versão aa7440d) e na documentação do Modkit.
O Dorado oferece suporte ao alinhamento de chamadas de base existentes ou à produção direta de resultados alinhados.
Para alinhar basecalls existentes, execute:
$ dorado aligner <index> <reads> > aligned.bam
onde index
é uma referência para alinhar no formato (FASTQ/FASTA/.mmi) e reads
é uma pasta ou arquivo em qualquer formato HTS.
Ao ler de uma pasta de entrada, dorado aligner
também suporta a emissão de arquivos alinhados para uma pasta de saída, o que preservará a estrutura de arquivos das entradas:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder>
Um resumo de alinhamento contendo estatísticas de alinhamento para cada leitura pode ser gerado com a opção --emit-summary
. O arquivo será salvo na pasta --output-dir
.
Para basecall com alinhamento com duplex ou simplex, execute com a opção --reference
:
$ dorado basecaller <model> <reads> --reference <index> > calls.bam
O alinhamento usa minimap2 e por padrão usa a predefinição lr:hq
. Isso pode ser substituído passando uma string de opção de minimapa, --mm2-opts
, usando a opção '-x ' e/ou opções individuais como -k
e -w
para definir o kmer e o tamanho da janela respectivamente. Para obter uma lista completa de opções de minimap2 suportadas, use '--mm2-opts --help'. Por exemplo:
$ 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
O comando dorado summary
gera um arquivo separado por tabulações com informações de sequenciamento de nível de leitura do arquivo BAM gerado durante a chamada de base. Para criar um resumo, execute:
$ dorado summary <bam> > summary.tsv
Observe que a geração de resumo está disponível apenas para leituras baseadas em arquivos POD5. As leituras baseadas em arquivos .fast5 não são compatíveis com o comando de resumo.
O Dorado oferece suporte à classificação de código de barras para basecalls existentes, bem como à produção direta de basecalls classificadas.
Neste modo, as leituras são classificadas em seus grupos de códigos de barras durante a chamada de base como parte do mesmo comando. Para habilitar isso, execute:
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
Isso resultará em um único fluxo de saída com leituras classificadas. A classificação será refletida no nome do grupo de leitura, bem como na tag BC
do registro de saída.
Por padrão, o Dorado está configurado para cortar o código de barras das leituras. Para desabilitar o corte, adicione --no-trim
ao cmdline.
A heurística padrão para códigos de barras duplos é procurá-los em cada extremidade da leitura. Isso resulta em uma taxa de classificação mais alta, mas também pode resultar em uma contagem de falsos positivos mais alta. Para resolver isso, dorado basecaller
também fornece uma opção --barcode-both-ends
para forçar a detecção de códigos de barras duplos em ambas as extremidades antes da classificação. Isso reduzirá drasticamente os falsos positivos, mas também diminuirá as taxas gerais de classificação.
A saída do dorado basecaller
pode ser demultiplexada em BAMs por código de barras usando dorado demux
. por exemplo
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
Isso gerará um arquivo BAM por código de barras no output-dir
.
As informações do código de barras também são refletidas no cabeçalho BAM RG
. Portanto a demultiplexação também é possível através samtools split
. por exemplo
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
No entanto, samtools split
usa a string RG
completa como sufixo do nome do arquivo, o que pode resultar em nomes de arquivo muito longos. Recomendamos o uso dorado demux
para dividir BAMs com código de barras.
Os conjuntos de dados baseados em base existentes podem ser classificados e demultiplexados em BAMs por código de barras usando o comando autônomo demux
em dorado
. Para usar isso, execute
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
pode ser uma pasta ou um único arquivo em formato HTS (por exemplo, FASTQ, BAM, etc.) ou um fluxo de formato HTS (por exemplo, a saída do dorado basecalling).
Isso resulta na geração de vários arquivos BAM na pasta de saída, um por código de barras (formatado como KITNAME_BARCODEXX.bam
) e um para todas as leituras não classificadas. Tal como acontece com o modo in-line, --no-trim
e --barcode-both-ends
também estão disponíveis como opções adicionais.
Se o arquivo de entrada estiver alinhado/classificado e --no-trim
for escolhido, cada um dos arquivos BAM específicos do código de barras de saída também será classificado e indexado. No entanto, se o corte estiver ativado (que é o padrão), as informações de alinhamento serão removidas e os BAMs de saída serão desalinhados. Isso é feito porque as tags e posições de alinhamento são invalidadas quando uma sequência é alterada.
Aqui está um exemplo de pasta de saída
$ 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
Um arquivo de resumo listando cada leitura e seu código de barras classificado pode ser gerado com a opção --emit-summary
no dorado demux
. O arquivo será salvo na pasta --output-dir
.
Se os arquivos de dados de entrada contiverem dados de mapeamento, essas informações poderão ser preservadas nos arquivos de saída. Para fazer isso, você deve usar a opção --no-trim
. Cortar os códigos de barras invalidará qualquer informação de mapeamento que possa estar contida nos arquivos de entrada e, portanto, o aplicativo excluirá qualquer informação de mapeamento se --no-trim
não for especificado.
Também é possível fazer com que dorado demux
classifique e indexe quaisquer arquivos bam de saída que contenham leituras mapeadas. Para habilitar isso, use a opção --sort-bam
. Se você usar esta opção, também deverá usar a opção --no-trim
, pois o corte impedirá que qualquer informação de mapeamento seja incluída nos arquivos de saída. Arquivos de índice (extensão .bai) serão criados apenas para arquivos BAM que contenham leituras mapeadas e foram classificados. Observe que, para grandes conjuntos de dados, a classificação dos arquivos de saída pode levar alguns minutos.
Dorado é capaz de usar uma planilha de amostra para restringir as classificações de código de barras apenas aos presentes e aplicar aliases às classificações detectadas. Isso é habilitado passando o caminho para uma planilha de amostra para o argumento --sample-sheet
ao usar os comandos basecaller
ou demux
. Veja aqui para mais informações.
Além de oferecer suporte aos kits de código de barras padrão da Oxford Nanopore, o Dorado também oferece suporte à especificação de arranjos e sequências de kits de códigos de barras personalizados. Isso é feito passando um arquivo de organização de código de barras por meio do argumento --barcode-arrangement
(para dorado demux
ou dorado basecaller
). Sequências de código de barras personalizadas podem ser especificadas opcionalmente por meio da opção --barcode-sequences
. Veja aqui para mais detalhes.
Dorado tem suporte inicial para estimar comprimentos de cauda poli(A) para cDNA (kits PCS e PCB) e RNA. Observe que as leituras de cDNA de Oxford Nanopore são sequenciadas em duas orientações diferentes e a estimativa do comprimento da cauda Dorado poli (A) lida com ambos (homopolímeros A e T). Este recurso pode ser habilitado passando --estimate-poly-a
para o comando basecaller
. Ele está desabilitado por padrão. O comprimento estimado da cauda é armazenado na tag pt:i
do registro de saída. Leituras para as quais o comprimento da cauda não pôde ser estimado não terão a tag pt:i
. Sequências de primer personalizadas e estimativa de caudas interrompidas podem ser configuradas através da opção --poly-a-config
. Veja aqui para mais detalhes.
Dorado oferece suporte à correção de erros de leitura única com a integração do algoritmo HERRO. HERRO usa alinhamento tudo contra todos seguido de correção com reconhecimento de haplótipos usando um modelo de aprendizado profundo para obter maior precisão de leitura única. As leituras corrigidas são principalmente úteis para gerar montagens de novo de organismos diplóides.
Para corrigir leituras, execute:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado correto suporta apenas FASTQ (.gz) como entrada e gera um arquivo FASTA como saída. A entrada pode ser descompactada ou compactada com bgz
. Um arquivo de índice é gerado para o arquivo FASTQ de entrada na mesma pasta, a menos que já exista um arquivo presente. Certifique-se de que a pasta com o arquivo de entrada possa ser gravada pelo processo dorado
e tenha espaço em disco suficiente.
A ferramenta de correção de erros consome muita computação e memória. Como resultado, é melhor executado em um sistema com vários núcleos de CPU de alto desempenho (>= 64 núcleos), grande memória de sistema (>= 256 GB) e uma GPU moderna com grande VRAM (>= 32 GB).
Todos os pesos de modelo necessários são baixados automaticamente pelo Dorado. Porém, os pesos também podem ser pré-baixados e passados via linha de comando em caso de execução offline. Para fazer isso, execute:
$ dorado download --model herro-v1 $ dorado correct -m herro-v1 reads.fastq > corrected_reads.fasta
O Dorado Correct agora também fornece um recurso para executar mapeamento (estágio somente de CPU) e inferência (estágio com uso intensivo de GPU) individualmente. Isso permite a separação dos estágios pesados da CPU e da GPU em etapas individuais que podem até ser executadas em nós diferentes com características de computação apropriadas. Exemplo:
$ dorado correct reads.fastq --to-paf > overlaps.paf $ dorado correct reads.fastq --from-paf overlaps.paf > corrected_reads.fasta
Atualmente, o PAF compactado não é compatível com a opção --from-paf
.
Além disso, se uma execução foi interrompida ou falhou, o Dorado Correct fornece uma funcionalidade de “retomada”. O recurso de currículo pega uma lista de leituras corrigidas anteriormente (por exemplo, um índice .fai
da execução anterior) e ignora as leituras processadas anteriormente:
$ 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
O formato do arquivo de entrada para o recurso --resume-from
pode ser qualquer arquivo de texto simples em que a primeira coluna delimitada por espaços em branco (ou uma linha completa) consiste em nomes de sequência a serem ignorados, um por linha.
Caso o processo esteja consumindo muita memória do seu sistema, tente executá-lo com um tamanho de índice menor. Por exemplo:
$ dorado correct reads.fastq --index-size 4G > corrected_reads.fasta
O tamanho do lote de inferência computado automaticamente ainda pode ser muito alto para o seu sistema. Se você estiver recebendo avisos/erros relacionados à memória GPU disponível, tente reduzir o tamanho do lote/selecioná-lo manualmente. Por exemplo:
$ dorado correct reads.fastq --batch-size <number> > corrected_reads.fasta
Caso seu arquivo FASTA de saída contenha uma quantidade muito baixa de leituras corrigidas em comparação com a entrada, verifique o seguinte:
O conjunto de dados de entrada tem comprimento médio de leitura >=10kbp
. O Dorado Correct foi projetado para leituras longas e não funcionará em bibliotecas curtas.
A cobertura de entrada é razoável, de preferência >=30x
.
Verifique as qualidades básicas médias do conjunto de dados de entrada. Dorado Correct espera entradas precisas tanto para mapeamento quanto para inferência.
Para baixar todos os modelos Dorado disponíveis, execute:
$ dorado download --model all
Os nomes dos modelos Dorado são estruturados sistematicamente, cada segmento correspondendo a um aspecto diferente do modelo, que inclui configurações químicas e de execução. Abaixo está um exemplo de nome de modelo explicado:
Tipo de analito ( dna
) : denota o tipo de analito que está sendo sequenciado. Para sequenciamento de DNA, é representado como dna
. Se você estiver usando um kit de sequenciamento direto de RNA, será rna002
ou rna004
, dependendo do kit.
Tipo de poro ( r10.4.1
) : Esta seção corresponde ao tipo de célula de fluxo usada. Por exemplo, FLO-MIN114/FLO-FLG114 é indicado por r10.4.1
, enquanto FLO-MIN106D/FLO-FLG001 é indicado por r9.4.1
.
Tipo de Química ( e8.2
) : Representa o tipo de química, que corresponde ao kit utilizado para sequenciamento. Por exemplo, a química do Kit 14 é indicada por e8.2
e o Kit 10 ou Kit 9 são indicados por e8
.
Velocidade de translocação ( 400bps
) : Este parâmetro, selecionado na configuração da execução no MinKNOW, refere-se à velocidade de translocação. Antes de iniciar a execução, um prompt perguntará se você prefere executar a 260 bps ou 400 bps. O primeiro produz resultados mais precisos, mas fornece menos dados. A partir da versão 23.04 do MinKNOW, a opção de 260 bps foi descontinuada.
Tipo de modelo ( hac
) : representa o tamanho do modelo, onde modelos maiores produzem chamadas de base mais precisas, mas levam mais tempo. Os três tipos de modelos são fast
, hac
e sup
. O modelo fast
é o mais rápido, sup
é o mais preciso e hac
fornece um equilíbrio entre velocidade e precisão. Para a maioria dos usuários, o modelo hac
é recomendado.
Número da versão do modelo ( v5.0.0
) : denota a versão do modelo. As atualizações do modelo são lançadas regularmente e números de versão mais altos normalmente significam maior precisão.
Abaixo está uma tabela dos modelos de chamada de base disponíveis e dos modelos de chamada de base modificados que podem ser usados com eles. Os modelos em negrito são para a última condição lançada com dados de 5 kHz.
O controle de versão dos modelos de modificação está vinculado ao modelo de chamada de base. Isto significa que a versão do modelo de modificação é redefinida para cada nova versão do modelo simplex. Por exemplo, 6mA@v1
compatível com modelos de chamada de base v4.3.0
é mais recente do que 6mA@v2
compatível com modelos de chamada de base v4.2.0
.
Modelos de chamada de base | Compatível Modificações | Modificações Modelo Versão | Dados Amostragem Freqüência |
---|---|---|---|
[email protected] | 5 kHz | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2 v2 v2 | 5 kHz |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2.0.1 v2.0.1 v2 | 5 kHz |
[email protected] | 5 kHz | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5 kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5 kHz |
[email protected] | 5mCG_5hmCG | v2 | 5 kHz |
[email protected] | 5mCG_5hmCG | v2 | 5 kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5mC 6mA | v3.1 v1 v2 v3 | 5 kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
Nota: O formato BAM não suporta bases U
Portanto, quando o Dorado estiver realizando chamada de base de RNA, os arquivos de saída resultantes incluirão T
em vez de U
. Isso é consistente em todos os tipos de arquivo de saída.
Modelos de chamada de base | Compatível Modificações | Modificações Modelo Versão | Dados Amostragem Freqüência |
---|---|---|---|
[email protected] | 4kHz | ||
[email protected] | m5C m6A_DRACH inosina_m6A pseU | v1 v1 v1 v1 | 4kHz |
[email protected] | m5C m6A_DRACH inosina_m6A pseU | v1 v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | m6A m6A_DRACH pseU | v1 v1 v1 | 4kHz |
[email protected] | m6A m6A_DRACH pseU | v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 4kHz | ||
[email protected] | m6A_DRACH | v1 | 4kHz |
rna002_70bps_fast@v3 | 3 kHz | ||
rna002_70bps_hac@v3 | 3 kHz |
O argumento model
no dorado pode especificar um caminho de modelo ou um modelo complexo . Um modelo complexo deve começar com o modelo simplex speed e seguir esta sintaxe:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
Os modelos de modificação selecionados automaticamente sempre corresponderão à versão do modelo simplex base e serão a versão compatível mais recente, a menos que uma versão específica seja definida pelo usuário. A seleção automática do modelo de modificação não permitirá a mistura de modelos de modificação vinculados a diferentes versões do modelo simplex.
Aqui estão alguns exemplos de complexos de modelos:
Complexo Modelo | Descrição |
---|---|
rápido | Modelo rápido compatível mais recente |
haha | Modelo hac compatível mais recente |
e aí? | Modelo sup compatível mais recente |
hac@mais recente | Modelo de basecalling hac simplex compatível mais recente |
[email protected] | Modelo hac de chamada de base simplex com versão v4.2.0 |
[email protected] | Modelo hac de chamada de base simplex com versão v3.5.0 |
hac,5mCG_5hmCG | Modelo hac simplex compatível mais recente e modelo de modificações 5mCG_5hmCG mais recente para o modelo basecall escolhido |
hac,5mCG_5hmCG@v2 | Modelo hac simplex compatível mais recente e modelo de modificações 5mCG_5hmCG com versão v2.0.0 |
sup,5mCG_5hmCG,6mA | Modelo sup compatível mais recente e modelos de modificações 5mCG_5hmCG e 6mA compatíveis mais recentes |
Depois que o processo automático de seleção de modelos encontrar o modelo apropriado com base nos dados de entrada, ele procurará os diretórios de modelos existentes para evitar o download desnecessário de modelos. O comportamento desta pesquisa pode ser controlado da seguinte forma:
Configurando o argumento CLI --models-directory
- O argumento --models-directory
pode ser usado para especificar um diretório onde os modelos serão pesquisados.
Configurando a variável de ambiente DORADO_MODELS_DIRECTORY
- É o mesmo que configurar --models-directory
, mas tem prioridade mais baixa que o equivalente CLI.
Se nem --models-directory
nem DORADO_MODELS_DIRECORY
estiverem configurados, o diretório de trabalho atual será pesquisado.
Se --models-directory
ou DORADO_MODELS_DIRECTORY
estiver definido, os modelos baixados automaticamente persistirão, caso contrário, os modelos serão baixados em um diretório local temporário e excluídos após a conclusão do dorado.
O Dorado vem equipado com as bibliotecas necessárias (como CUDA) para sua execução. No entanto, em alguns sistemas operacionais, as bibliotecas do sistema podem ser escolhidas em vez das do Dorado. Essa discrepância pode resultar em vários erros, por exemplo, CuBLAS error 8
.
Para resolver esse problema, você precisa definir LD_LIBRARY_PATH
para apontar para as bibliotecas do Dorado. Use um comando como o seguinte no Linux (altere o caminho conforme apropriado):
$ export LD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-linux-x64/lib:$LD_LIBRARY_PATH
No macOS, a exportação equivalente seria (altere o caminho conforme apropriado):
$ export DYLD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-osx-arm64/lib:$DYLD_LIBRARY_PATH
A chamada de base duplex é um processo que exige muita E/S e pode ter um desempenho ruim se usar armazenamento em rede ou HDD. Geralmente, isso pode ser melhorado dividindo os arquivos POD5 de forma adequada.
Primeiro instale as ferramentas python do POD5:
A documentação do POD5 pode ser encontrada aqui.
$ pip install pod5
Em seguida, execute pod5 view
para gerar uma tabela contendo informações para dividir especificamente, as informações do "canal".
$ pod5 view /path/to/your/dataset/ --include "read_id, channel" --output summary.tsv
Isso criará o arquivo "summary.tsv" que deve ser semelhante a:
read_id channel 0000173c-bf67-44e7-9a9c-1ad0bc728e74 109 002fde30-9e23-4125-9eae-d112c18a81a7 463 ...
Agora execute pod5 subset
para copiar registros de seus dados de origem em saídas por canal. Isso pode levar algum tempo dependendo do tamanho do seu conjunto de dados
$ pod5 subset /path/to/your/dataset/ --summary summary.tsv --columns channel --output split_by_channel
O comando acima criará o diretório de saída split_by_channel
e gravará nele um arquivo pod5 por canal exclusivo. A chamada de base duplex para essas leituras divididas agora será muito mais rápida.
Se estiver executando a chamada de base duplex de forma distribuída (por exemplo, em um cluster SLURM ou Kubernetes), é importante dividir os arquivos POD5 conforme descrito acima. O motivo é que a chamada de base duplex requer agregação de leituras de toda uma execução de sequenciamento, que será distribuída em vários arquivos POD5. A estratégia de divisão descrita acima garante que todas as leituras que precisam ser agregadas estejam no mesmo arquivo POD5. Uma vez realizada a divisão, é possível executar vários trabalhos em subconjuntos menores de POD5 (por exemplo, um trabalho por 100 canais). Isso permitirá que a chamada base seja distribuída entre os nós de um cluster. Isso irá gerar vários BAMs que podem ser mesclados. Essa abordagem também oferece alguma resiliência, pois se qualquer trabalho falhar, ele poderá ser reiniciado sem a necessidade de executar novamente a chamada de base em todo o conjunto de dados.
Dorado opera em uma ampla gama de GPUs, mas é desenvolvido principalmente para Nvidia A100/H100 e Apple Silicon. Dorado tenta encontrar o tamanho de lote ideal para chamada de base. No entanto, em algumas GPUs com pouca RAM, os usuários podem enfrentar falhas de falta de memória.
Uma solução potencial para esse problema poderia ser definir um tamanho de lote manual usando o seguinte comando:
dorado basecaller --batchsize 64 ...
Nota: Não é recomendado reduzir o consumo de memória modificando o parâmetro chunksize
, pois isso influencia os resultados da chamada base.
A baixa utilização da GPU pode levar à redução da velocidade de chamada de base. Este problema pode ser identificado usando ferramentas como nvidia-smi
e nvtop
. A baixa utilização da GPU geralmente resulta de gargalos de E/S na chamada de base. Aqui estão algumas etapas que você pode seguir para melhorar a situação:
Opte por POD5 em vez de .fast5: POD5 tem desempenho de E/S superior e aumentará a velocidade de chamada de base em ambientes com restrição de E/S.
Transferir dados para o disco local antes da chamada de base: A chamada de base lenta geralmente ocorre porque os discos de rede não conseguem fornecer ao Dorado a velocidade adequada. Para atenuar isso, certifique-se de que seus dados estejam o mais próximo possível da máquina host.
Escolha SSD em vez de HDD: especialmente para chamadas de base duplex, o uso de um SSD local pode oferecer vantagens significativas de velocidade. Isso se deve à dependência do algoritmo de chamada de base duplex no acesso aleatório pesado aos dados.
Ao executar no PowerShell no Windows, é preciso ter cuidado, pois a codificação padrão para a saída do aplicativo é normalmente UTF-16LE. Isso causará corrupção de arquivo se a saída padrão for redirecionada para um arquivo. Recomenda-se usar o argumento --output-dir
para emitir arquivos BAM se o PowerShell precisar ser usado. Por exemplo, o comando a seguir criará uma saída corrompida que não pode ser lida pelo samtools:
PS > dorado basecaller <args> > out.bam
Em vez disso, use:
PS > dorado basecaller <args> --output-dir .
Para formatos de saída baseados em texto (SAM ou FASTQ), é possível substituir a codificação na saída usando o comando out-file
. Este comando produzirá um arquivo SAM ascii bem formado:
PS > dorado basecaller <args> --emit-sam | out-file -encoding Ascii out.sam
Observe que out-file
com codificação Ascii
não produzirá arquivos BAM bem formados.
Leia mais sobre a codificação de saída do Powershell aqui.
(c) 2024 Oxford Nanopore Technologies PLC.
Dorado é distribuído sob os termos da Oxford Nanopore Technologies PLC. Licença Pública, v. Se uma cópia da Licença não foi distribuída com este arquivo, você poderá obter uma em http://nanoporetech.com