medaka
é uma ferramenta para criar sequências de consenso e chamadas variantes a partir de dados de sequenciamento de nanoporos. Esta tarefa é executada usando redes neurais aplicadas uma pilha de leituras individuais de sequenciamento contra uma sequência de referência, principalmente um conjunto de rascunho ou uma sequência de referência de banco de dados. Ele fornece resultados de última geração superando métodos baseados em seqüência e métodos baseados em sinais, além de ser mais rápido.
© 2018- Oxford Nanopore Technologies Ltd.
.fasta
ou .fastq
)Para criar conjuntos de rascunhos, recomendamos o Flye.
Medaka pode ser instalado de várias maneiras.
Instalação com pip
As liberações binárias oficiais de Medaka estão disponíveis no Pypi e podem ser instaladas usando o PIP:
pip install medaka
Nas plataformas Contemporaray Linux e MacOS, isso instalará um binário pré -compilado; em outras plataformas, uma distribuição de origem pode ser buscada e compilada.
Recomendamos o uso de Medaka em um ambiente virtual, viz.:
python3 -m venv medaka
. ./medaka/bin/activate
pip install --upgrade pip
pip install medaka
O uso deste método exige que o usuário forneça vários binários:
e coloque -os dentro do PATH
. Versões samtools/bgzip/tabix
> = 1,14 e minimap2
Version> = 2.17 são recomendadas, pois são aquelas usadas no desenvolvimento de Medaka.
A instalação padrão tem a capacidade de ser executada em uma GPU (consulte usando uma GPU abaixo) ou na CPU. Se você estiver usando medaka
exclusivamente na CPU e não precisar da capacidade de executar na GPU, convém instalar a versão somente CPU com:
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
Instalação com conda
Os pacotes Bioconda Medaka não são suportados pela Oxford Nanopore Technologies.
Para aqueles que preferem o gerente de pacotes da ANA, Medaka está disponível no canal anaconda.org:
conda create -n medaka -c conda-forge -c nanoporetech -c bioconda medaka
As instalações com este método agruparão as ferramentas adicionais necessárias para executar um fluxo de trabalho de correção de ponta a ponta.
Instalação da fonte
Esse método é útil apenas quando os métodos acima falharem, pois ajudará na construção de várias dependências. É improvável que nossos desenvolvedores possam fornecer mais assistência em suas circunstâncias específicas se você instalar usando esse método.
O MEDAKA pode ser instalado a partir de sua fonte com bastante facilidade na maioria dos sistemas.
Antes de instalar Medaka, pode ser necessário instalar algumas bibliotecas de pré -requisito, melhor instaladas por um gerenciador de pacotes. Nas teses do Ubuntu estão:
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
Além disso, é necessário instalar e configurar o GIT LFS antes de clonar o repositório.
É fornecido um makefile para buscar, compilar e instalar todas as dependências diretas em um ambiente virtual do Python. Para configurar a execução do ambiente:
# 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 esse método samtools
e minimap2
, são construídos a partir da fonte e não precisam ser fornecidos pelo usuário.
Ao construir a partir da fonte, instalar uma versão somente para CPU sem a capacidade de ser executada na GPU, modifique o acima para:
MEDAKA_CPU=1 make install
Usando uma GPU
Desde a versão 2.0 medaka
usa Pytorch. Versões anteriores (v1.x) usaram o tensorflow.
A versão padrão do Pytorch, instalada ao construir a partir da fonte ou ao instalar através do pip
pode fazer uso imediato de GPUs via Nvidia CUDA. No entanto, observe que o pacote torch
é compilado em versões específicas das bibliotecas CUDA e CUDNN; Os usuários são direcionados para as páginas de instalação da tocha para obter mais informações. O cudnn pode ser obtido no arquivo CUDNN, enquanto Cuda do Arquivo do Kit do CUDA.
A instalação com conda é um pouco diferente. Veja a documentação [CONDA-FORGE] https://conda-forge.org/docs/user/tipsandtricks/#installing-cuda-enabled-packages-like-tensorflow-and-pytorch). Em resumo, o pacote do CONDA deve fazer algo sensato sob medida com o computador em que está sendo instalado.
Conforme descrito acima, se a capacidade de executar na GPU não for necessária, medaka-cpu
poderá ser instalado com uma versão apenas para Pytorch, somente CPU que não depende das bibliotecas CUDA, como segue:
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
Se estiver usando os pacotes pré -construídos ou
MEDAKA_CPU=1 make install
se construir a partir da fonte.
Notas de uso da GPU
Dependendo da sua GPU, medaka
pode mostrar erros fora da memória ao executar. Para evitar isso, o tamanho do lote de inferência pode ser reduzido a partir do valor padrão, definindo a opção -b
ao executar medaka_consensus
. Um valor -b 100
é adequado para GPUs de 11 GB.
medaka
pode ser executado usando suas configurações padrão através do programa medaka_consensus
. São necessários uma montagem em formato .fasta
e BASECALLS nos formatos .fasta
ou .fastq
. O programa usa samtools
e minimap2
. Se Medaka tiver sido instalado usando o método From-Source, eles estarão presentes no ambiente Medaka, caso contrário, precisarão ser fornecidos pelo usuário.
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}
As variáveis BASECALLS
, DRAFT
e OUTDIR
no âmbito acima devem ser definidas adequadamente. A opção -t
especifica o número de threads da CPU a serem usados.
Quando medaka_consensus
terminar, o consenso será salvo para ${OUTDIR}/consensus.fasta
.
Chamada variante haplóide
A variante que chama as amostras haplóides é ativada pelo fluxo de trabalho medaka_variant
:
medaka_variant -i <reads.fastq> -r <ref.fasta>
que requer as leituras como um .fasta
ou .fastq
e uma sequência de referência como um arquivo .fasta
.
Chamada de variante diplóide
O fluxo de trabalho de chamada de variantes diplóides que foi historicamente implementado no pacote Medaka foi superado em precisão e calcula o desempenho por outros métodos, portanto, ele foi obsoleto. Nossa recomendação atual para executar esta tarefa é usar o Clair3 diretamente ou através das tecnologias de nanoporos Oxford, fornecendo a implementação NextFlow disponível no EPI2ME Labs.
Para obter melhores resultados, é importante especificar o modelo de inferência correto, de acordo com o Basecaller usado. Os valores permitidos podem ser encontrados executando medaka tools list_models
.
Basecallers recentes
As versões recentes do Basecaller anote sua saída com a versão modelo. Nesses casos, a medaka pode inspecionar os arquivos e tentar selecionar um modelo apropriado para si. Isso normalmente funciona melhor no caso de saída de BAM dos Basecallers. Ele funcionará também para entrada FASTQ, desde que o FastQ tenha sido criado a partir da saída Basecaller usando:
samtools fastq -T '*' dorado.bam | gzip -c > dorado.fastq.gz
A medaka inference
tentará determinar automaticamente um modelo correto inspecionando seu arquivo de entrada BAM. Os Scripts Helper medaka_consensus
e medaka_variant
farão tentativas semelhantes a partir de sua entrada FASTQ.
Para inspecionar arquivos por si mesmo, o comando:
medaka tools resolve_model --auto_model <consensus/variant> <input.bam/input.fastq>
Imprimirá o modelo que a seleção automática do modelo usará.
Sequenciamento bacteriano e plasmídico
Para dados nativos com modificações bacterianas, como isolados bacterianos, amostras metagenômicas ou plasmídeos expressos em bactérias, existe um modelo de pesquisa que mostra maior precisão de consenso. Este modelo é compatível com várias versões do Basecaller para as químicas R10. Ao adicionar a bandeira --bacteria
, o modelo bacteriano será selecionado se for compatível com os Basecallers de entrada:
medaka_consensus -i ${BASECALLS} -d ${DRAFT} -o ${OUTDIR} -t ${NPROC} --bacteria
Um modelo padrão legado será usado se o modelo bacteriano não for compatível com os arquivos de entrada. A seleção do modelo pode ser confirmada em execução:
medaka tools resolve_model --auto_model consensus_bacteria <input.bam/input.fastq>
que exibirá o modelo r1041_e82_400bps_bacterial_methylation
se compatível ou o nome do modelo padrão de outra forma.
Quando a seleção automática não é bem -sucedida e mais antiga BaseCallers
Se o nome do modelo Basecaller utilizado for conhecido, mas foi perdido dos arquivos de entrada, o modelo Basecaller poderá ser fornecido diretamente a Medaka. No entanto, ele deve ser anexado a :consensus
ou :variant
de acordo com se o usuário deseja usar o modelo de consenso ou variante chamando Medaka. Por exemplo:
medaka inference input.bam output.hdf
--model [email protected]:variant
Usará o modelo de chamada de variante Medaka apropriado para uso com o modelo Basecaller chamado [email protected]
.
Historicamente, os modelos Medaka seguiam uma nomenclatura descrevendo as versões químicas e de Basecaller. Agora, esses modelos antigos estão depreciados, os usuários são incentivados a se rebaixar seus dados com uma versão mais recente do Basecaller antes de usar o MEDAKA.
O programa medaka_consensus
é bom para conjuntos de dados simples, mas talvez não seja ideal para executar grandes conjuntos de dados em escala. Um nível mais alto de paralelismo pode ser alcançado executando independentemente as etapas do componente do medaka_consensus
. O programa executa três tarefas:
mini_align
, que é um véu fino sobre minimap2
)medaka inference
)medaka sequence
) As três etapas são discretas e podem ser divididas e executadas de forma independente. Na maioria dos casos, a etapa 2. É o gargalo e pode ser paralela trivialmente. O programa medaka consensus
pode ser fornecido um argumento --regions
que restringirá sua ação a sequências de montagem específicas da saída do arquivo .bam
na etapa 1. Portanto, trabalhos individuais podem ser executados para lotes de seqüências de montagem simultaneamente. Na etapa final, medaka stitch
pode tomar como entrada um ou mais dos arquivos .hdf
Saída na etapa 2.
Então, em resumo, algo assim é possível:
# 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
Não é recomendável especificar um valor de --threads
maiores que 2 para medaka inference
pois a eficiência da escala de computação é ruim além disso. Observe também que medaka inference
pode usar recursos equivalentes a <threads> + 4
como 4 threads adicionais são usados para ler e preparar dados de entrada.
Medaka foi treinado para corrigir a saída de sequências de rascunho do assembler de moscas.
O processamento de uma sequência de rascunho de fontes alternativas (por exemplo, a saída de CANU ou WTDBG2) pode levar a resultados diferentes.
Os modelos de correção histórica em Medaka foram treinados para corrigir as seqüências de rascunho da produção do assembler CANU com racon aplicado uma vez ou quatro vezes iterativamente. Para modelos contemporâneos, esse não é o caso e Medaka deve ser usado diretamente na saída do Flye.
Agradecemos a Joanna Pineda e Jared Simpson por fornecer amostras de código HTSLIB que ajudaram muito o desenvolvimento do código de geração de recursos otimizado e por testar os candidatos à versão 0.4.
Agradecemos a Devin Drown por trabalhar com o uso de medaka
com sua GPU RTX 2080.
Licença e direitos autorais
© 2018- Oxford Nanopore Technologies Ltd.
medaka
é distribuído sob os termos da Oxford Nanopore Technologies Plc. Licença pública versão 1.0
Liberação de pesquisa
Os lançamentos de pesquisa são fornecidos como demonstradores de tecnologia para fornecer acesso precoce a recursos ou estimular o desenvolvimento da comunidade de ferramentas. O suporte a este software será mínimo e é fornecido diretamente diretamente pelos desenvolvedores. Solicitações de recursos, melhorias e discussões são bem -vindas e podem ser implementadas por solicitações de garra e puxar. Por mais que gostaríamos de corrigir todos os problemas e feedback que os usuários possam ter, os desenvolvedores podem ter um recurso limitado para o suporte a este software. Os lançamentos de pesquisa podem ser instáveis e sujeitos a iteração rápida das tecnologias de nanoporos de Oxford.