Contig Annotation Tool (CAT) et Bin Annotation Tool (BAT) sont des pipelines pour la classification taxonomique de longues séquences d'ADN et de génomes assemblés par métagénome (MAG/bins) de micro-organismes connus et (hautement) inconnus, tels que générés par les études métagénomiques contemporaines. L'algorithme de base des deux programmes implique l'appel de gènes, la cartographie des ORF prédits par rapport à une base de données de protéines et la classification basée sur le vote de l'ensemble du contig/MAG basée sur la classification des ORF individuels. CAT et BAT peuvent être exécutés à partir d'étapes intermédiaires si les fichiers sont formatés correctement.
Un article décrivant l'algorithme ainsi que de nombreux tests de référence sont disponibles sur https://doi.org/10.1186/s13059-019-1817-x. Si vous utilisez CAT ou BAT dans vos recherches, ce serait bien si vous pouviez nous citer :
Read Annotation Tool (RAT) estime la composition taxonomique des métagénomes à l’aide des sorties CAT et BAT. Un manuscrit décrivant le RAT avec des tests de référence est disponible sur https://doi.org/10.1038/s41467-024-47155-1. Si vous utilisez RAT dans vos recherches, ce serait formidable si vous pouviez citer :
Pour citer le code lui-même :
Python 3, https://www.python.org/.
DIAMANT, https://github.com/bbuchfink/diamond.
Prodigue, https://github.com/hyattpd/Prodigal.
RAT nécessite en outre (pas nécessaire pour CAT et BAT) :
BWA, https://github.com/lh3/bwa.
SAMtools, http://www.htslib.org/download/.
CAT, BAT et RAT ont été minutieusement testés sur les systèmes Linux et devraient également fonctionner sur macOS.
Aucune installation n'est requise. Vous pouvez exécuter CAT, BAT et RAT en fournissant le chemin absolu :
$ ./CAT_pack/CAT_pack --help
Alternativement, si vous ajoutez les fichiers du répertoire CAT_pack à votre variable $PATH
, vous pouvez exécuter CAT, BAT et RAT depuis n'importe où :
$ CAT_pack --version
Pour démarrer avec CAT/BAT/RAT, vous devrez récupérer les fichiers de base de données sur votre système. Vous pouvez soit télécharger des fichiers de base de données préconstruits, soit les générer vous-même.
Pour télécharger les fichiers de la base de données, recherchez la version la plus récente sur tbb.bio.uu.nl/tina/CAT_pack_prepare/, téléchargez et extrayez, et vous êtes prêt à partir !
Pour le numéro NCBI :
$ wget tbb.bio.uu.nl/tina/CAT_pack_prepare/20240422_CAT_nr.tar.gz
$ tar -xvzf 20240422_CAT_nr.tar.gz
Pour GTDB :
$ wget tbb.bio.uu.nl/tina/CAT_pack_prepare/20231120_CAT_gtdb.tar.gz # release 214
$ tar -xvzf 20231120_CAT_gtdb.tar.gz
Au lieu d'utiliser la base de données préconstruite, vous pouvez créer vous-même une nouvelle base de données. Le module download
peut être utilisé pour télécharger et traiter des données brutes, en vue de la création d'une nouvelle base de données CAT Pack. Cela garantira que toutes les dépendances d'entrée sont respectées et correctement formatées pour CAT_pack prepare
.
Actuellement, deux bases de données sont prises en charge, les protéines nr du NCBI et la Genome Taxonomy Database (GTDB).
$ CAT_pack download -db nr -o path/to/nr_data_dir
Télécharge le fichier fasta avec les séquences protéiques, leur mappage à un taxid et les informations de taxonomie depuis le site ftp du NCBI.
$ CAT_pack download -db gtdb -o path/to/gtdb_data_dir
Les fichiers requis pour créer une base de données de pack CAT sont fournis par la page de téléchargements GTDB.
CAT_pack download
récupère les fichiers nécessaires et effectue quelques traitements supplémentaires pour les préparer à CAT_pack prepare
:
nodes.dmp
et names.dmp
de style NCBI.gtdb_proteins_aa_reps.tar.gz
et sont soumises à une série de déduplication. La déduplication réduit la redondance dans la base de données DIAMOND, simplifiant ainsi le processus d'alignement. Les séquences en double exactes sont identifiées sur la base d'une combinaison de la somme MD5 des séquences protéiques et de leur longueur. Une seule séquence représentative est conservée, avec tous les doublons codés dans l'en-tête fasta. Ces informations sont ensuite utilisées par CAT_pack prepare
pour attribuer le LCA de la séquence protéique de manière appropriée dans le fichier .fastaid2LCAtaxid
.root
, pour produire un fichier all.tree
. Ce fichier n'est pas utilisé par le pack CAT mais peut s'avérer utile pour les analyses en aval. Une fois le téléchargement et le traitement des fichiers terminés avec succès, vous pouvez créer une base de données CAT pack avec CAT_pack prepare
.
Pour toutes les options de ligne de commande disponibles, voir
$ CAT_pack download -h
et
$ CAT_pack prepare -h
Pour une base de données CAT pack personnalisée, vous devez disposer de l’entrée suivante avant de lancer une exécution CAT_pack prepare
.
Un fichier fasta contenant toutes les séquences protéiques que vous souhaitez inclure dans votre base de données.
Un fichier names.dmp
qui contient des mappages de taxidés avec leurs rangs et leurs noms scientifiques. Le format doit être le même que celui du standard NCBI names.dmp
(utilise t|t
comme séparateur de champ).
Un exemple ressemble à ceci :
1 | root | scientific name |
2 | Bacteria | scientific name |
562 | Escherichia coli | scientific name |
nodes.dmp
qui décrit la relation enfant-parent des nœuds dans l'arborescence taxonomique et leur rang (officiel). Le format doit être le même que celui du standard NCBI nodes.dmp
(utilise t|t
comme séparateur de champ).Un exemple ressemble à ceci :
1 | 1 | root |
2 | 1 | superkingdom |
1224 | 2 | phylum |
1236 | 1224 | class |
91437 | 1236 | order |
543 | 91347 | family |
561 | 543 | genus |
562 | 561 | species |
Pour plus d'informations sur les fichiers nodes.dmp
et names.dmp
, consultez le fichier NCBI taxdump_readme.txt.
accession.version taxid
.Un exemple ressemble à ceci
accession.version taxid
protein_1 562
protein_2 123456
Une fois que toutes les conditions ci-dessus sont remplies, vous pouvez exécuter CAT_pack prepare
. Toutes les entrées doivent être explicitement spécifiées pour que CAT_pack prepare
à fonctionner, par exemple :
$ CAT_pack prepare
--db_fasta path/to/fasta
--names path/to/names.dmp
--nodes path/to/nodes.dmp
--acc2tax path/to/acc2taxid.txt.gz
--db_dir path/to/output_dir
créera un output_dir
qui ressemblera à ceci
output_dir
├── 2023-11-05_CAT_pack.log
├── db
│ ├── 2023-11-05_CAT_pack.dmnd
│ ├── 2023-11-05_CAT_pack.fastaid2LCAtaxid
│ └── 2023-11-05_CAT_pack.taxids_with_multiple_offspring
└── tax
├── names.dmp
└── nodes.dmp
Remarques :
db
et tax
sont créés et contiennent tous les fichiers nécessaires.nodes.dmp
et names.dmp
du répertoire tax
sont copiés à partir de leur emplacement d'origine. Ceci permet de garantir que l'indicateur -t
de CAT, BAT et RAT fonctionne.<YYYY-MM-DD>_CAT_pack
. Vous pouvez le personnaliser avec l'option --common_prefix
.Pour toutes les options de ligne de commande disponibles, voir
$ CAT_pack prepare -h
Les fichiers de base de données sont nécessaires lors des exécutions ultérieures de CAT/BAT/RAT. Ils ne doivent être générés/téléchargés qu'une seule fois ou à chaque fois que vous souhaitez mettre à jour la base de données.
Pour exécuter respectivement CAT/BAT/RAT :
$ CAT_pack contigs # Runs CAT.
$ CAT_pack bins # Runs BAT.
$ CAT_pack reads # Runs RAT.
Si vous n'êtes pas sûr des options dont dispose un programme, vous pouvez toujours ajouter --help
à une commande. C'est un excellent moyen de vous familiariser avec CAT, BAT ou RAT.
$ CAT_pack --help
$ CAT_pack contigs --help
$ CAT_pack summarise --help
Si vous n'êtes pas sûr des fichiers d'entrée requis, vous pouvez simplement exécuter CAT/BAT/RAT, car les messages d'erreur appropriés sont générés si le formatage est incorrect.
Une fois que vous avez les fichiers de base de données sur votre système, vous pouvez exécuter CAT pour annoter votre ensemble de contigs :
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder}
Plusieurs fichiers de sortie et un fichier journal seront générés. Les fichiers de classification finaux seront appelés out.CAT.ORF2LCA.txt
et out.CAT.contig2classification.txt
.
Alternativement, si vous disposez déjà d'un fichier fasta de protéines prédites et/ou d'une table d'alignement, par exemple issue d'exécutions précédentes, vous pouvez les fournir à CAT, qui ignorera alors les étapes déjà effectuées et repartira de là :
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
Les en-têtes du fichier fasta des protéines prédites doivent ressembler à ceci >{contig}_{ORFnumber}
, afin que CAT puisse coupler des contigs aux ORF. Le fichier d'alignement doit être séparé par des tabulations, avec l'ORF interrogé dans la première colonne, le numéro d'accession de la protéine dans la seconde et le score binaire dans la 12e.
Pour exécuter BAT sur un ensemble de MAG :
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder}
Alternativement, BAT peut être exécuté sur un seul MAG :
$ CAT_pack bins -b {bin fasta} -d {database folder} -t {taxonomy folder}
Plusieurs fichiers de sortie et un fichier journal seront générés. Les fichiers de classification finaux seront appelés out.BAT.ORF2LCA.txt
et out.BAT.bin2classification.txt
.
À l'instar de CAT, BAT peut être exécuté à partir d'étapes intermédiaires si la prédiction et l'alignement des gènes ont déjà été effectués une fois :
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
Si vous avez déjà exécuté CAT sur l'ensemble de contigs d'où proviennent les MAG, vous pouvez utiliser les fichiers de protéines et d'alignement précédemment prédits pour classer les MAG.
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder}
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta from contig run} -a {alignment file from contig run}
C'est un excellent moyen d'exécuter à la fois CAT et BAT sur un ensemble de MAG sans avoir besoin de faire deux fois la prédiction et l'alignement des protéines !
La sortie ORF2LCA ressemble à ceci :
ORF | nombre de coups (r : 10) | lignée | score binaire |
---|---|---|---|
contig_1_ORF1 | 7 | 1;131567;2;1783272 | 574,7 |
Où la lignée est la lignée taxonomique complète de la classification de l'ORF, et le score binaire est le score binaire le plus performant qui est attribué à l'ORF pour le vote. Le fichier de sortie BAT ORF2LCA comporte une colonne supplémentaire dans laquelle les ORF sont liés au MAG dans lequel ils se trouvent.
Le résultat de contig2classification et bin2classification ressemble à ceci :
contig ou bin | classification | raison | lignée | scores de lignée (f : 0,3) |
---|---|---|---|---|
contig_1 | taxi assigné | basé sur 14/15 ORF | 1;131567;2;1783272 | 1h00 ; 1h00 ; 1h00 ; 0,78 |
contig_2 | taxi assigné (1/2) | basé sur 10/10 ORF | 1;131567;2;1783272;17id98711;1117;307596;307595;1890422;33071;1416614;1183438* | 1,00;1,00;1,00;1,00;1,00;1,00;1,00;1,00;1,00;1,00;0,23;0,23 |
contig_2 | taxi assigné (2/2) | basé sur 10/10 ORF | 1;131567;2;1783272;1798711;1117;307596;307595;1890422;33071;33072 | 1,00;1,00;1,00;1,00;1,00;1,00;1,00;1,00;1,00;1,00;0,77 |
contig_3 | aucun taxi assigné | aucun ORF trouvé |
Où les scores de lignée représentent la fraction de la prise en charge des scores binaires pour chaque classification. contig_2 a deux classifications. Cela peut se produire si le paramètre f est choisi en dessous de 0,5. Pour une explication de la classification étoilée , voir Marquage des affectations taxonomiques suggestives avec un astérisque.
Pour ajouter des noms aux taxids dans l'un ou l'autre des fichiers de sortie, exécutez :
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder}
Cela vous montrera que par exemple contig_1 est classé dans le groupe Terrabacteria. Pour obtenir uniquement le rang officiel ( c'est-à-dire super-royaume, phylum, ...) :
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder} --only_official
Ou bien :
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder} --only_official --exclude_scores
Si vous avez nommé un fichier de classification CAT ou BAT avec des noms officiels, vous pouvez obtenir un résumé de la classification, où la longueur totale et le nombre d'ORF prenant en charge un taxon sont calculés pour les contigs, ainsi que le nombre de MAG par taxon rencontré pour la classification MAG :
$ CAT_pack summarise -c {contigs fasta} -i {named CAT classification file} -o {output file}
$ CAT_pack summarise -i {named BAT classification file} -o {output file}
CAT_pack summarise
ne prend actuellement pas en charge les fichiers de classification dans lesquels certains contigs/MAG ont plusieurs classifications (comme contig_2 ci-dessus).
Lorsque nous voulons descendre en toute confiance jusqu'au niveau taxonomique le plus bas possible pour une classification, une hypothèse importante est qu'à ce niveau, un conflit entre les classifications aurait pu survenir. Autrement dit, s’il y avait des classifications contradictoires, l’algorithme aurait rendu la classification plus conservatrice en remontant d’un niveau. Puisque ce n’est pas le cas, nous pouvons faire confiance à la classification de bas niveau. Cependant, il n'est pas toujours possible qu'un conflit survienne, car dans certains cas, aucune autre séquence du clade n'est présente dans la base de données. C'est le cas par exemple de la famille des Dehalococcoidaceae, qui dans nos bases de données est la seule représentative de l'ordre des Dehalococcoidales. Ainsi, nous ne pouvons pas affirmer ici avec certitude qu’une classification au niveau de la famille est plus correcte qu’une classification au niveau de l’ordre. Dans ces cas, CAT et BAT marquent la lignée avec des astérisques, en commençant par le niveau de classification le plus bas jusqu'au niveau où un conflit aurait pu survenir car le clade contient plusieurs taxons avec des entrées dans la base de données. Il est conseillé à l'utilisateur d'examiner plus attentivement les taxons étoilés, par exemple en analysant l'identité de séquence entre les ORF et les hits prédits, ou de remonter dans la lignée jusqu'à une classification sûre (c'est-à-dire la première classification sans astérisque).
Si vous ne voulez pas d'astérisques dans vos fichiers de sortie, vous pouvez ajouter l'indicateur --no_stars
à CAT ou BAT.
L'exécution de CAT et BAT peut prendre un certain temps et utiliser beaucoup de RAM et d'espace disque. En fonction de ce que vous appréciez le plus, vous pouvez régler CAT et BAT pour maximiser l'un et minimiser les autres. L'algorithme de classification lui-même est rapide et respectueux de la mémoire et de l'espace disque. L'étape la plus coûteuse est l'alignement avec DIAMOND, c'est pourquoi le réglage des paramètres d'alignement aura le plus grand impact :
-n / --nproc
permet de choisir le nombre de cœurs à déployer.--sensitive
. Cela augmentera la sensibilité mais rendra l'alignement considérablement plus lent.--block_size
à une valeur inférieure réduira l'utilisation de la mémoire et de l'espace disque temporaire. Le régler plus haut augmentera les performances.--index_chunks
sur 1 (actuellement la valeur par défaut). Ce paramètre n'a aucun effet sur l'utilisation de l'espace disque temporaire.--tmpdir
.Obtenir de l'aide pour exécuter l'utilitaire de préparation :
$ CAT_pack prepare --help
Exécutez CAT sur un ensemble de contigs avec des paramètres par défaut déployant 16 cœurs pour l'alignement DIAMOND. Nommez la sortie de classification contig avec des noms officiels et créez un résumé :
$ CAT_pack contigs -c contigs.fasta -d db/ -t tax/ -n 16 --out_prefix first_CAT_run
$ CAT_pack add_names -i first_CAT_run.contig2classification.txt -o first_CAT_run.contig2classification.official_names.txt -t tax/ --only_official
$ CAT_pack summarise -c contigs.fasta -i first_CAT_run.contig2classification.official_names.txt -o CAT_first_run.summary.txt
Exécutez BAT sur l'ensemble de MAG qui a été regroupé à partir de ces contigs, en réutilisant les prédictions de protéines et le fichier d'alignement DIAMOND généré précédemment lors de la classification des contigs :
$ CAT_pack bins -b bins/ -d db/ -t tax/ -p first_CAT_run.predicted_proteins.faa -a first_CAT_run.alignment.diamond -o first_BAT_run
Exécutez à nouveau l'algorithme de classification contig avec des paramètres personnalisés et nommez la sortie avec tous les noms de la lignée, à l'exclusion des scores :
$ CAT_pack contigs --range 5 --fraction 0.1 -c contigs.fasta -d db/ -t tax/ -p first_CAT_run.predicted_proteins.faa -a first_CAT_run.alignment.diamond -o second_CAT_run
$ CAT_pack add_names -i second_CAT_run.contig2classification.txt -o second_CAT_run.contig2classification.names.txt -t tax/ --exclude_scores
Exécutez BAT sur l'ensemble des MAG avec des paramètres personnalisés, en supprimant la verbosité et en n'écrivant pas de fichier journal. Ensuite, ajoutez des noms au fichier de sortie ORF2LCA :
$ CAT_pack bins -r 3 -f 0.1 -b bins/ -s .fa -d db/ -t tax/ -p first_CAT_run.predicted_proteins.faa -a first_CAT_run.alignment.diamond --o second_BAT_run --quiet --no_log
$ CAT_pack add_names -i second_BAT_run.ORF2LCA.txt -o second_BAT_run.ORF2LCA.names.txt -t tax/
Nous utilisons souvent la combinaison CAT/BAT pour explorer une éventuelle contamination au sein d’un MAG.
$ CAT_pack contigs -c ../bins/interesting_MAG.fasta -d db/ -t tax/ -o CAT.interesting_MAG
$ CAT_pack bins -b ../bins/interesting_MAG.fasta -d db/ -t tax/ -p CAT.interesting_MAG.predicted_proteins.faa -a CAT.interesting_MAG.alignment.diamond -o BAT.interesting_MAG
Les contigs qui ont un signal taxonomique différent de celui de la classification MAG sont probablement une contamination.
Alternativement, vous pouvez examiner la contamination du point de vue MAG, en définissant le paramètre f sur une valeur faible :
$ CAT_pack bins -f 0.01 -b ../bins/interesting_MAG.fasta -d db/ -t tax/ -o BAT.interesting_MAG
$ CAT_pack add_names -i BAT.interesting_MAG.bin2classification.txt -o BAT.interesting_MAG.bin2classification.names.txt -t tax/
BAT produira n’importe quel signal taxonomique avec un support d’au moins 1 %. Les signaux divergents à faible score sont des signes évidents de contamination !
RAT estime la composition taxonomique des métagénomes en intégrant les signaux taxonomiques des MAG, des contigs et des lectures. RAT a été ajouté au pack CAT à partir de la version 6.0. Pour utiliser RAT, vous avez besoin des fichiers de base de données du pack CAT (voir Mise en route pour plus d'informations).
RAT crée un profil intégré à l'aide de MAG/bins, de contigs et de lectures. Pour spécifier quels éléments doivent être intégrés, utilisez l'argument --mode
. Les lettres possibles pour --mode
sont m
(pour les MAG), c
(pour les contigs) et r
(pour les lectures). Toutes les combinaisons des trois lettres sont possibles, sauf r
seul. Pour exécuter le flux de travail complet de RAT, spécifiez le mode, les fichiers de lecture, les fichiers contig, le dossier bin et les fichiers de base de données :
$ CAT_pack reads --mode mcr -b bin_folder/ -c contigs.fasta -1 forward_reads.fq.gz -2 reverse_reads.fq.gz -d db/ -t tax/
Actuellement, RAT prend en charge les fichiers à lecture unique ainsi que les fichiers à lecture appariée. Les fichiers en lecture entrelacée ne sont actuellement pas pris en charge. RAT exécutera CAT et BAT sur les contigs et les MAG, mappera les lectures aux contigs, puis tentera d'annoter séparément toutes les lectures non mappées. Si vous disposez déjà d'un fichier de mappage trié, vous pouvez le fournir et RAT ignorera l'étape de mappage :
$ CAT_pack reads --mode mcr -b bin_folder/ -c contigs.fasta --bam1 mapping_file_sorted.bam -1 forward_reads.fq.gz -2 reverse_reads.fq.gz -d db/ -t tax/
Si CAT et/ou BAT ont déjà été exécutés sur vos données, vous pouvez fournir les fichiers de sortie à RAT pour ignorer les exécutions CAT et BAT :
$ CAT_pack reads --mode mcr -b bin_folder/ -c contigs.fasta -1 forward_reads.fq.gz -2 reverse_reads.fq.gz -d db/ -t tax/ --c2c CAT_contig2classification_file.txt --b2c BAT_bin2classification_file.txt
De même, si une exécution RAT précédente s'est écrasée après que les lectures non mappées ont déjà été alignées sur la base de données avec Diamond, vous pouvez fournir les fichiers intermédiaires pour continuer l'exécution :
$ CAT_pack reads --mode mcr -b bin_folder/ -c contigs.fasta -1 forward_reads.fq.gz -2 reverse_reads.fq.gz -d db/ -t tax/ --c2c CAT_contig2classification_file.txt --b2c BAT_bin2classification_file.txt --alignment_unmapped unmapped_alignment_file.diamond
Une fois une exécution RAT terminée, vous pouvez exécuter add_names sur les fichiers d'abondance (uniquement pour les exécutions RAT avec nr base de données) :
$ CAT_pack add_names -i RAT.completete_abundance_file.txt -o RAT.completete_abundance_file_with_names.txt -t tax/
Semblable à CAT et BAT, les chemins vers toutes les dépendances peuvent être fournis via un argument :
$ CAT_pack reads --mode mcr -b bin_folder/ -c contigs.fasta -1 forward_reads.fq.gz -2 reverse_reads.fq.gz -d db/ -t tax/ --path_to_samtools /path/to/samtools
La sortie RAT comprend :
r
dans --mode
).