MTSV Tools est une suite d'outils de base pour la classification taxonomique des lectures de séquençage métagénomique. MTSV effectue un alignement complet en utilisant un filtre Q-gram assisté par l'index FM, suivi d'un alignement Smith-Waterman accéléré SIMD.
Conda Installer MTSV-TOOLS -C BIOCONDA
MTSV est construit en rouille. Vous aurez besoin:
rustc
et cargo
> = 1,29.0 (rustup.rs est la méthode d'installation la plus simple)Pour exécuter des tests:
$ cargo test
Pour générer un rapport de couverture de code, assurez-vous que KCOV> = 26 est installé sur votre PATH
, puis installez cargo-kcov
:
$ cargo install cargo-kcov
Pour exécuter la couverture:
$ cargo kcov -- --exclude-pattern="/.cargo,vendor/,tests/,bench/,include/,bin/,ssw/"
Cela placera un rapport de couverture de code sous target/kcov/index.html
.
Pour construire les binaires MTSV:
$ cargo build --release
Ils seront disponibles sous target/release/mtsv-*
.
Pour générer la documentation interne:
$ cargo doc [--open]
(Passez l'indicateur --open
si vous souhaitez ouvrir immédiatement les documents dans votre navigateur)
MTSV construit plusieurs binaires:
mtsv-chunk
mtsv-binner
mtsv-build
mtsv-collapse
Tous ces éléments acceptent le drapeau --help
help pour imprimer un message d'aide sur leur utilisation. Voir ci-dessous pour des instructions d'utilisation spécifiques.
MTSV met en œuvre un indice métagénomique personnalisé (Mg-Index) basé sur la structure de données FM-Index. Les indices de référence doivent être construits avant d'effectuer une classification taxonomique.
Pour construire les indices MG, vous aurez besoin d'un fichier multi-fasta de toutes les séquences de référence, avec des en-têtes au format SEQID-TAXID
. Ainsi, une séquence a un ID entier unique 12345 et appartient à l'ID taxonomique NCBI 987, l'en-tête de cette séquence devrait se lire 12345-987
. Les séquences de référence peuvent provenir de n'importe quelle collection de séquences d'ADN (c.-à-d. GenBank, RefSeq, etc.) et personnalisées pour s'adapter à votre projet.
Parce que MTSV a été conçu pour être très parallélisable, nous vous recommandons de construire plusieurs indices à partir de petits morceaux des séquences de référence. Cela permet de réduire les exigences de la mémoire et permet un traitement plus rapide pour le bâtiment et l'attribution de l'index.
$ mtsv-chunk -i PATH_TO_FASTA -o PATH_TO_CHUNK_FOLDER -g NUM_GBS_PER_CHUNK
Cela divisera la référence FastA en une série de fichiers plus petits et les placera dans le répertoire spécifié. Voir le message d'aide pour plus d'informations.
mtsv-chunk 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Split a FASTA reference database into chunks for index generation.
USAGE:
mtsv-chunk [FLAGS] --input <INPUT> --output <OUTPUT> --gb <SIZE_GB>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-i, --input <INPUT> Path(s) to vedro results files to collapse
-o, --output <OUTPUT> Folder path to write split outupt files to.
-g, --gb <SIZE_GB> Chunk size (in gigabytes). [default: 1.0]
Maintenant que vous avez n morceaux de votre base de données FASTA, ils doivent être transformés en indices que MTSV peut utiliser pour l'interrogation. Pendant la construction d'index, les séquences du fichier Fasta en morceaux sont concaténées lors de l'enregistrement de l'emplacement des limites de séquence et du taxi associé à chaque séquence. Un réseau de suffixes, une transformée de burrows-roues (BWT) et un index FM sont construits à partir des séquences concaténées à l'aide du package Rust-Bio V0.39.1. L'index FM et les métadonnées de séquence associés constituent l'index Mg. Un index MG est créé par fichier fasta, et de nouveaux indices peuvent être ajoutés à mesure que la collection de référence se développe sans avoir à reconstruire aucun des indices existants.
$ mtsv-build --fasta /path/to/chunkN.fasta --index /path/to/write/chunkN.index
En utilisant les paramètres par défaut, les indices seront ~ 3,6x de la taille du fichier de référence et nécessitent autant de RAM pour exécuter l'étape de binning. L'intervalle d'échantillonnage par défaut est de 64 pour le tableau d'occasion BWT et 32 pour le tableau de suffixe. Cela peut être remplacé en passant --sample-interval <FM_SAMPLE_INTERVAL>
pour le tableau d'occasion ou --sa-sample <SA_SAMPLE_RATE>
pour le tableau de suffixe. Des valeurs plus faibles augmenteront la taille de l'indice et peuvent fournir une réduction du temps de requête. L'augmentation du drapeau diminuera la taille de l'index jusqu'à un point tout en acceptant un temps de requête plus lent.
Voir le message d'aide pour d'autres options.
$ mtsv-build --help
mtsv-build 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Index construction for mtsv metagenomics binning tool.
USAGE:
mtsv-build [FLAGS] [OPTIONS] --fasta <FASTA> --index <INDEX>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-f, --fasta <FASTA> Path to FASTA database file.
--sample-interval <FM_SAMPLE_INTERVAL>
BWT occurance sampling rate. If sample interval is k, every k-th entry will be kept. [default: 64]
-i, --index <INDEX> Absolute path to mtsv index file.
--sa-sample <SA_SAMPLE_RATE>
Suffix array sampling rate. If sampling rate is k, every k-th entry will be kept. [default: 32]
La commande mtsv-binner
attribue les lectures aux séquences de référence dans l'index MG fourni (une commande de binning distincte doit être exécutée pour chacun des indices MG souhaités). Il commencera par extraire des sous-chaînes qui se chevauchent (graines) de la même taille ( --seed-size
) avec certains décalages ( --seed-interval
) de chaque séquence de requête et son complément inverse. Il utilise ensuite l'index MG pour rechercher des correspondances exactes et non germées pour chaque graine. Les correspondances de graines sont triées par emplacement et regroupées dans des régions candidates à l'aide de fenêtres spécifiées. Le nombre de coups sûrs par candidat est comptabilisé et tout candidat qui ne répond pas au nombre minimum de coups sûrs est filtré. Les postes de candidats restants sont triés par ordre décroissant par le nombre de coups de graines afin que les régions les plus prometteuses soient évaluées en premier.
Pour chaque région candidate, MTSV extrait la plage correspondante de la séquence de référence et regarde le taxi associé à la région de l'index Mg. Si la requête actuelle a déjà été alignée avec succès sur le taxi associé à la région des candidats, aucun alignement supplémentaire n'est tenté et la prochaine région candidate est vérifiée. Sinon, un alignement Smith-Waterman accéléré par SIMD est effectué entre la séquence de référence extraite et la séquence de requête (en utilisant une notation de 1 pour les correspondances et -1 pour les décalages, l'ouverture des écarts et l'extension de l'écart). Si le score d'alignement est suffisamment élevé, il y a un dernier contrôle pour déterminer si la distance de modification est inférieure ou égale à la coupure de distance de modification spécifiée par l'utilisateur ( --edit-rate
). Si l'alignement est considéré comme un succès, aucun autre alignement n'est tenté pour cette requête contre le même taxid. Sauter tous les alignements supplémentaires sur un taxid évite de nombreuses opérations coûteuses et réduit le temps de calcul.
L'étape de filtrage candidat est basée sur un algorithme de filtrage Q-gram qui définit le nombre minimum de correspondances K-Mer exactes (à partir de tous les n-k + 1 qui se chevauchent les K -Mers qui peuvent être attendus entre une lecture de la longueur N et une séquence de référence avec au plus les décalages électroniques. / ( e + 1 --seed-size
> k . --seed-size
) et l'intervalle L ( --seed-interval
) qui établit le nombre de graines comme n_seeds = ceil ((n - k + 1) / l) et parce que cela varie en fonction de la taille de lecture, le nombre minimum de lectures requises Pour faire une affectation ( --min-seed
) est --edit-rate
en pourcentage de ces graines (Min-Seed * n_seeds) . et 1) et la longueur de la lecture, n .
$ mtsv-binner --edit-rate 0.13 --seed-size 18
--seed-interval 2 --threads 8
--index /path/to/chunk1.index
--fastq /path/to/reads.fastq
--results /path/to/write/chunk1_results.txt
Voir le message d'aide pour d'autres options.
$ mtsv-binner --help
mtsv 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Metagenomics binning tool.
USAGE:
mtsv-binner [FLAGS] [OPTIONS] --fasta <FASTA> --fastq <FASTQ> --index <INDEX>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-e, --edit-rate <EDIT_TOLERANCE> The maximum proportion of edits allowed for alignment. [default: 0.13]
-f, --fasta <FASTA> Path to FASTA reads.
-f, --fastq <FASTQ> Path to FASTQ reads.
-i, --index <INDEX> Path to MG-index file.
--max-hits <MAX_HITS> Skip seeds with more than MAX_HITS hits. [default: 20000]
--min-seed <MIN_SEED> Set the minimum percentage of seeds required to perform an alignment.
[default: 0.015]
-t, --threads <NUM_THREADS> Number of worker threads to spawn. [default: 4]
-m, --results <RESULTS_PATH> Path to write results file.
--seed-interval <SEED_INTERVAL> Set the interval between seeds used for initial exact match. [default: 2]
--seed-size <SEED_SIZE> Set seed size. [default: 18]
mtsv-binner
écrit des résultats pour une seule lecture par ligne. Par exemple, si une lecture avec l'en-tête R1_123
mappe aux ID de taxon 562
, 9062
et 100
avec des distances d'édition 5
, 10
et 11
:
R1_123:562=5,9062=10,100=11
Étant donné que chaque fichier de sortie de la commande mtsv-binner
ne représentera que des affectations aux références dans un seul index Mg, les résultats de tous les indices MG doivent être combinés en un seul fichier de résultats pour une analyse plus approfondie.
$ mtsv-collapse /path/to/chunk1_results.txt /path/to/chunk2_results.txt ...
--output /path/to/collapsed_results.txt
Assurez-vous d'inclure tous les fichiers de morceaux. Bien que le collapser puisse être exécuté en plusieurs phases, il est généralement beaucoup plus rapide de les faire tous en même temps. Si le même taxi a été affecté à la même lecture dans plusieurs fichiers, celui avec la distance de modification la plus basse sera enregistré dans la sortie finale.
Voir le message d'aide pour d'autres options.
$ mtsv-collapse --help
mtsv-collapse 2.0.0
Adam Perry <[email protected]>:Tara Furstenau <[email protected]>
Tool for combining the output of multiple separate mtsv runs.
USAGE:
mtsv-collapse [FLAGS] <FILES>... --output <OUTPUT>
FLAGS:
-v Include this flag to trigger debug-level logging.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-o, --output <OUTPUT> Path to write combined outupt file to.
ARGS:
<FILES>... Path(s) to mtsv results files to collapse