medaka
est un outil pour créer des séquences consensuelles et des appels variants à partir de données de séquençage Nanopore. Cette tâche est effectuée à l'aide de réseaux de neurones appliqués un empilement de lectures de séquençage individuel sur une séquence de référence, principalement un brouillon ou une séquence de référence de base de données. Il fournit des résultats à la pointe de la technologie surpassant les méthodes basées sur la séquence et les méthodes basées sur le signal, tout en étant plus rapide.
© 2018- Oxford Nanopore Technologies Ltd.
.fasta
ou .fastq
)Pour la création d'assemblages, nous recommandons Flye.
Medaka peut être installé de plusieurs manières.
Installation avec PIP
Les versions binaires officielles de Medaka sont disponibles sur PYPI et peuvent être installées à l'aide de PIP:
pip install medaka
Sur les plates-formes contemporaray Linux et MacOS, il installera un binaire précompilé, sur d'autres plates-formes, une distribution de source peut être récupérée et compilée.
Nous vous recommandons d'utiliser Medaka dans un environnement virtuel, à savoir:
python3 -m venv medaka
. ./medaka/bin/activate
pip install --upgrade pip
pip install medaka
L'utilisation de cette méthode nécessite que l'utilisateur fournit plusieurs binaires:
et les placer dans le PATH
. Les versions samtools/bgzip/tabix
> = 1.14 et minimap2
version> = 2.17 sont recommandées car ce sont celles utilisées dans le développement de Medaka.
L'installation par défaut a la capacité d'exécuter sur un GPU (voir en utilisant un GPU ci-dessous) ou sur CPU. Si vous utilisez medaka
exclusivement sur CPU et que vous n'avez pas besoin de fonctionner sur GPU, vous souhaiterez peut-être installer la version CPU uniquement avec:
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
Installation avec conda
Les forfaits Bioconda Medaka ne sont pas soutenus par Oxford Nanopore Technologies.
Pour ceux qui préfèrent le gestionnaire de packages Conda, Medaka est disponible via le canal anaconda.org:
conda create -n medaka -c conda-forge -c nanoporetech -c bioconda medaka
Les installations avec cette méthode regroupent les outils supplémentaires nécessaires pour exécuter un flux de travail de correction de bout en bout.
Installation de la source
Cette méthode n'est utile que lorsque les méthodes ci-dessus ont échoué, car elle aidera à construire diverses dépendances. Il est peu probable que nos développeurs soient en mesure de fournir une assistance supplémentaire dans votre situation spécifique si vous installez en utilisant cette méthode.
Medaka peut être installée à partir de sa source assez facilement sur la plupart des systèmes.
Avant d'installer Medaka, il peut être nécessaire d'installer certaines bibliothèques préalables, mieux installées par un gestionnaire de packages. Sur les thèses d'Ubuntu sont:
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
De plus, il est nécessaire d'installer et de configurer GIT LFS avant de cloner le référentiel.
Un makefile est fourni pour récupérer, compiler et installer toutes les dépendances directes dans un environnement virtuel Python. Pour configurer l'environnement Run:
# 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
En utilisant cette méthode, samtools
et minimap2
sont construits à partir de Source et n'ont pas besoin d'être fournis par l'utilisateur.
Lors de la construction de Source, pour installer une version CPU uniquement sans la capacité d'exécuter sur GPU, modifiez ce qui précède vers:
MEDAKA_CPU=1 make install
Utilisation d'un GPU
Puisque la version 2.0 medaka
utilise Pytorch. Les versions antérieures (v1.x) ont utilisé TensorFlow.
La version par défaut de Pytorch qui est installée lors de la construction à partir de la source ou lors de l'installation via pip
peut utiliser immédiatement les GPU via NVIDIA CUDA. Cependant, notez que le package torch
est compilé avec des versions spécifiques des bibliothèques CUDA et CUDNN; Les utilisateurs sont dirigés vers les pages d'installation de la torche pour plus d'informations. CUDNN peut être obtenu à partir de l'archive CUDNN, tandis que Cuda de l'archive de la boîte à outils CUDA.
L'installation avec Conda est un peu différente. Voir le [conda-forge] https://conda-forge.org/docs/user/tipsandtricks/#installing-cuda-enabled-packages-like-tensorflow-and-pytorch). En résumé, le package Conda doit faire quelque chose de bien sur mesure sur l'ordinateur sur lequel il est installé.
Comme décrit ci-dessus, si la capacité à exécuter sur GPU n'est pas requise, medaka-cpu
peut être installée avec une version CPU uniquement de Pytorch qui ne dépend pas des bibliothèques CUDA, comme suit:
pip install medaka-cpu --extra-index-url https://download.pytorch.org/whl/cpu
Si vous utilisez les packages préfuits, ou
MEDAKA_CPU=1 make install
Si la construction de Source.
Notes d'utilisation du GPU
Selon votre GPU, medaka
peut montrer des erreurs de mémoire lors de l'exécution. Pour les éviter, la taille du lot d'inférence peut être réduite de la valeur par défaut en définissant l'option -b
lors de l'exécution medaka_consensus
. Une valeur -b 100
convient aux GPU de 11 Go.
medaka
peut être exécuté en utilisant ses paramètres par défaut via le programme medaka_consensus
. Une assemblée au format .fasta
et des appels de base dans des formats .fasta
ou .fastq
sont nécessaires. Le programme utilise à la fois samtools
et minimap2
. Si Medaka a été installée à l'aide de la méthode de la source, celles-ci seront présentes dans l'environnement Medaka, sinon ils devront être fournis par l'utilisateur.
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}
Les variables BASECALLS
, DRAFT
et OUTDIR
dans ce qui précède devraient être définies de manière appropriée. L'option -t
spécifie le nombre de threads CPU à utiliser.
Lorsque medaka_consensus
a fini de fonctionner, le consensus sera enregistré sur ${OUTDIR}/consensus.fasta
.
Appel de variantes haploïdes
La variante appelant des échantillons haploïdes est activée via le flux de travail medaka_variant
:
medaka_variant -i <reads.fastq> -r <ref.fasta>
qui nécessite les lectures comme un .fasta
ou .fastq
et une séquence de référence comme un fichier .fasta
.
Appel de variantes diploïdes
Le flux de travail appelant la variante diploïde qui a été historiquement mis en œuvre dans le package Medaka a été dépassé en précision et en calcul des performances par d'autres méthodes, il a donc été obsolète. Notre recommandation actuelle pour effectuer cette tâche consiste à utiliser Clair3 directement ou via les technologies d'Oxford Nanopore a fourni la mise en œuvre de NextFlow disponible via EPI2ME Labs.
Pour de meilleurs résultats, il est important de spécifier le modèle d'inférence correct, selon le Basecaller utilisé. Les valeurs autorisées peuvent être trouvées en exécutant medaka tools list_models
.
Secalers récents
Les versions récentes de Basecaller annotent leur sortie avec leur version modèle. Dans de tels cas, Medaka peut inspecter les fichiers et tenter de sélectionner un modèle approprié pour lui-même. Cela fonctionne généralement mieux dans le cas de la sortie BAM de Basecalers. Il fonctionnera également pour les entrées FASTQ à condition que le FastQ ait été créé à partir de la sortie de Basecaller en utilisant:
samtools fastq -T '*' dorado.bam | gzip -c > dorado.fastq.gz
L' medaka inference
tentera de déterminer automatiquement un modèle correct en inspectant son fichier d'entrée BAM. Les scripts d'assistance medaka_consensus
et medaka_variant
feront des tentatives similaires à partir de leur entrée FastQ.
Pour inspecter les fichiers par vous-même, la commande:
medaka tools resolve_model --auto_model <consensus/variant> <input.bam/input.fastq>
Imprimera le modèle que la sélection automatique du modèle utilisera.
Séquençage bactérien et plasmidique
Pour les données natives avec des modifications bactériennes, telles que les isolats bactériens, les échantillons métagénomiques ou les plasmides exprimés dans les bactéries, il existe un modèle de recherche qui montre une meilleure précision consensuelle. Ce modèle est compatible avec plusieurs versions de base de base pour la chimie R10. En ajoutant l'indicateur --bacteria
Bactéries, le modèle bactérien sera sélectionné s'il est compatible avec les rapports de base d'entrée:
medaka_consensus -i ${BASECALLS} -d ${DRAFT} -o ${OUTDIR} -t ${NPROC} --bacteria
Un modèle par défaut hérité sera utilisé si le modèle bactérien n'est pas compatible avec les fichiers d'entrée. La sélection du modèle peut être confirmée en fonctionnant:
medaka tools resolve_model --auto_model consensus_bacteria <input.bam/input.fastq>
qui affichera le modèle r1041_e82_400bps_bacterial_methylation
Si le nom du modèle par défaut ou le nom du modèle par défaut autrement.
Lorsque la sélection automatique est infructueuse et les plus anciens de base
Si le nom du modèle Basecaller utilisé est connu, mais a été perdu dans les fichiers d'entrée, le modèle Basecaller peut être fourni directement à Medaka. Il doit cependant être annexé avec :consensus
ou :variant
en fonction de l'utilisateur qui souhaite utiliser le modèle de consensus ou de variant de Medaka. Par exemple:
medaka inference input.bam output.hdf
--model [email protected]:variant
Utilisera le modèle d'appel de la variante de Medaka approprié pour une utilisation avec le modèle Basecaller nommé [email protected]
.
Historiquement, les modèles Medaka ont suivi une nomenclature décrivant à la fois les versions de chimie et de base de base. Ces anciens modèles sont désormais obsolètes, les utilisateurs sont encouragés à reproduire leurs données avec une version plus récente de Basecaller avant d'utiliser Medaka.
Le programme medaka_consensus
est bon pour les ensembles de données simples, mais peut-être pas optimal pour l'exécution de grands ensembles de données à grande échelle. Un niveau de parallélisme plus élevé peut être atteint en exécutant indépendamment les étapes des composants de medaka_consensus
. Le programme effectue trois tâches:
mini_align
qui est un voile mince sur minimap2
)medaka inference
)medaka sequence
) Les trois étapes sont discrètes et peuvent être séparées et courir indépendamment. Dans la plupart des cas, l'étape 2. Est le goulot d'étranglement et peut être trivialement parallélisé. Le programme medaka consensus
peut être fourni un argument --regions
qui restreindra son action à des séquences d'assemblage particulières de la sortie du fichier .bam
à l'étape 1. Par conséquent, les travaux individuels peuvent être exécutés simultanément pour des lots de séquences d'assemblage. Dans la dernière étape, medaka stitch
peut prendre en entrée une ou plusieurs de la sortie des fichiers .hdf
à l'étape 2.
Donc, en résumé, quelque chose comme ça est possible:
# 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
Il n'est pas recommandé de spécifier une valeur de --threads
supérieure à 2 pour medaka inference
car l'efficacité de mise à l'échelle de calcul est médiocre au-delà de cela. Notez également que medaka inference
peut être considérée comme des ressources équivalentes à <threads> + 4
car 4 threads supplémentaires sont utilisés pour la lecture et la préparation des données d'entrée.
Medaka a été formée pour corriger la sortie des séquences de brouillon de l'assembleur Flye.
Le traitement d'un projet de séquence à partir de sources alternatives (par exemple, la sortie de Canu ou WTDBG2) peut conduire à différents résultats.
Les modèles de correction historique de Medaka ont été formés pour corriger les séquences de brouillon de la sortie de l'assembleur Canu avec Racon appliqué une fois, soit quatre fois itérative. Pour les modèles contemporains, ce n'est pas le cas et Medaka doit être utilisé directement sur la sortie de Flye.
Nous remercions Joanna Pineda et Jared Simpson d'avoir fourni des échantillons de code HTSLIB qui ont aidé considérablement le développement du code de génération de fonctionnalités optimisé et de tester les candidats à la version 0.4.
Nous remercions Devin Drown d'avoir travaillé grâce à medaka
avec son GPU RTX 2080.
Licence et droit d'auteur
© 2018- Oxford Nanopore Technologies Ltd.
medaka
est distribué en vertu des termes d'Oxford Nanopore Technologies plc. Licence publique Version 1.0
Version de recherche
Les versions de recherche sont fournies en tant que manifestants technologiques pour fournir un accès précoce aux fonctionnalités ou stimuler le développement communautaire d'outils. La prise en charge de ce logiciel sera minime et n'est fournie que directement par les développeurs. Les demandes de fonctionnalités, les améliorations et les discussions sont les bienvenues et peuvent être mises en œuvre par les demandes de fourniture et de traction. Bien que nous aimerions rectifier chaque problème et élément de rétroaction que les utilisateurs peuvent avoir, les développeurs peuvent avoir une ressource limitée pour la prise en charge de ce logiciel. Les versions de recherche peuvent être instables et soumises à une itération rapide par les technologies d'Oxford Nanopore.