Contig Annotation Tool (CAT) y Bin Annotation Tool (BAT) son canales para la clasificación taxonómica de secuencias largas de ADN y genomas ensamblados en metagenomas (MAG/bins) de microorganismos conocidos y (altamente) desconocidos, generados por estudios metagenómicos contemporáneos. El algoritmo central de ambos programas implica la llamada de genes, el mapeo de los ORF predichos con una base de datos de proteínas y la clasificación basada en votación de todo el contig/MAG según la clasificación de los ORF individuales. CAT y BAT se pueden ejecutar desde pasos intermedios si los archivos tienen el formato adecuado.
Puede encontrar un artículo que describe el algoritmo junto con extensos puntos de referencia en https://doi.org/10.1186/s13059-019-1817-x. Si utiliza CAT o BAT en su investigación, sería fantástico si pudiera citarnos:
Read Annotation Tool (RAT) estima la composición taxonómica de los metagenomas utilizando resultados CAT y BAT. Puede encontrar un manuscrito que describe RAT con puntos de referencia en https://doi.org/10.1038/s41467-024-47155-1. Si utiliza RAT en su investigación, sería fantástico si pudiera citar:
Para citar el código en sí:
Python 3, https://www.python.org/.
DIAMANTE, https://github.com/bbuchfink/diamond.
Pródigo, https://github.com/hyattpd/Prodigal.
RAT requiere además (no es necesario para CAT y BAT):
BWA, https://github.com/lh3/bwa.
SAMtools, http://www.htslib.org/download/.
CAT, BAT y RAT se han probado exhaustivamente en sistemas Linux y también deberían ejecutarse en macOS.
No se requiere instalación. Puede ejecutar CAT, BAT y RAT proporcionando la ruta absoluta:
$ ./CAT_pack/CAT_pack --help
Alternativamente, si agrega los archivos en el directorio CAT_pack a su variable $PATH
, puede ejecutar CAT, BAT y RAT desde cualquier lugar:
$ CAT_pack --version
Para comenzar con CAT/BAT/RAT, deberá obtener los archivos de la base de datos en su sistema. Puede descargar archivos de bases de datos preconstruidos o generarlos usted mismo.
Para descargar los archivos de la base de datos, busque la versión más reciente en tbb.bio.uu.nl/tina/CAT_pack_prepare/, descárguela y extráigala, ¡y estará listo para comenzar!
Para el número NCBI:
$ wget tbb.bio.uu.nl/tina/CAT_pack_prepare/20240422_CAT_nr.tar.gz
$ tar -xvzf 20240422_CAT_nr.tar.gz
Para GTDB:
$ wget tbb.bio.uu.nl/tina/CAT_pack_prepare/20231120_CAT_gtdb.tar.gz # release 214
$ tar -xvzf 20231120_CAT_gtdb.tar.gz
En lugar de utilizar la base de datos preconstruida, puede crear una base de datos nueva usted mismo. El módulo download
se puede utilizar para descargar y procesar datos sin procesar, en preparación para crear una nueva base de datos de paquete CAT. Esto garantizará que todas las dependencias de entrada se cumplan y estén formateadas correctamente para CAT_pack prepare
.
Actualmente, se admiten dos bases de datos, las proteínas nr del NCBI y la base de datos de taxonomía del genoma (GTDB).
$ CAT_pack download -db nr -o path/to/nr_data_dir
Descargará el archivo fasta con las secuencias de proteínas, su mapeo a un taxid y la información de taxonomía del sitio ftp del NCBI.
$ CAT_pack download -db gtdb -o path/to/gtdb_data_dir
Los archivos necesarios para crear una base de datos del paquete CAT se proporcionan en la página de descargas de GTDB.
CAT_pack download
recupera los archivos necesarios y realiza un procesamiento adicional para prepararlos para CAT_pack prepare
:
nodes.dmp
y names.dmp
de estilo NCBI.gtdb_proteins_aa_reps.tar.gz
y se someten a una ronda de deduplicación. La deduplicación reduce la redundancia en la base de datos DIAMOND, simplificando así el proceso de alineación. Las secuencias duplicadas exactas se identifican basándose en una combinación de la suma MD5 de las secuencias de proteínas y su longitud. Sólo se mantiene una secuencia representativa, con todos los duplicados codificados en el encabezado fasta. Esta información la utiliza posteriormente CAT_pack prepare
para asignar el LCA de la secuencia de proteínas de forma adecuada en el archivo .fastaid2LCAtaxid
.root
para producir un archivo all.tree
. Este archivo no lo utiliza el paquete CAT, pero puede resultar útil para análisis posteriores. Cuando la descarga y el procesamiento de los archivos finalicen correctamente, podrá crear una base de datos de paquetes CAT con CAT_pack prepare
.
Para conocer todas las opciones de línea de comando disponibles, consulte
$ CAT_pack download -h
y
$ CAT_pack prepare -h
Para una base de datos de paquete CAT personalizada, debe tener lista la siguiente entrada antes de iniciar una ejecución CAT_pack prepare
.
Un archivo fasta que contiene todas las secuencias de proteínas que desea incluir en su base de datos.
Un archivo de names.dmp
que contiene asignaciones de taxis a sus filas y nombres científicos. El formato debe ser el mismo que el estándar del NCBI names.dmp
(usa t|t
como separador de campos).
Un ejemplo se parece a este:
1 | root | scientific name |
2 | Bacteria | scientific name |
562 | Escherichia coli | scientific name |
nodes.dmp
que describe la relación padre-hijo de los nodos en el árbol de taxonomía y su clasificación (oficial). El formato debe ser el mismo que el estándar NCBI nodes.dmp
(usa t|t
como separador de campos).Un ejemplo se parece a este:
1 | 1 | root |
2 | 1 | superkingdom |
1224 | 2 | phylum |
1236 | 1224 | class |
91437 | 1236 | order |
543 | 91347 | family |
561 | 543 | genus |
562 | 561 | species |
Para obtener más información sobre los archivos nodes.dmp
y names.dmp
, consulte NCBI taxdump_readme.txt.
accession.version taxid
.Un ejemplo se ve así
accession.version taxid
protein_1 562
protein_2 123456
Una vez que se cumplan todos los requisitos anteriores, puede ejecutar CAT_pack prepare
. Todas las entradas deben especificarse explícitamente para que CAT_pack prepare
para funcionar, por ejemplo:
$ 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
creará un output_dir
que se verá así
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
Notas:
db
e tax
que contienen todos los archivos necesarios.nodes.dmp
y names.dmp
en el directorio tax
se copian de su ubicación original. Esto es para garantizar que el indicador -t
de CAT, BAT y RAT funcione.<YYYY-MM-DD>_CAT_pack
. Puedes personalizarlo con la opción --common_prefix
.Para conocer todas las opciones de línea de comando disponibles, consulte
$ CAT_pack prepare -h
Los archivos de la base de datos son necesarios en ejecuciones CAT/BAT/RAT posteriores. Solo es necesario generarlos/descargarlos una vez o cada vez que desee actualizar la base de datos.
Para ejecutar CAT/BAT/RAT, respectivamente:
$ CAT_pack contigs # Runs CAT.
$ CAT_pack bins # Runs BAT.
$ CAT_pack reads # Runs RAT.
Si no está seguro de qué opciones tiene un programa, siempre puede agregar --help
a un comando. Esta es una excelente manera de comenzar con CAT, BAT o RAT.
$ CAT_pack --help
$ CAT_pack contigs --help
$ CAT_pack summarise --help
Si no está seguro de qué archivos de entrada se requieren, puede simplemente ejecutar CAT/BAT/RAT, ya que se generan los mensajes de error apropiados si el formato es incorrecto.
Una vez que tenga los archivos de la base de datos en su sistema, puede ejecutar CAT para anotar su conjunto de contig:
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder}
Se generarán varios archivos de salida y un archivo de registro. Los archivos de clasificación final se llamarán out.CAT.ORF2LCA.txt
y out.CAT.contig2classification.txt
.
Alternativamente, si ya tiene un archivo fasta de proteínas predichas y/o una tabla de alineación, por ejemplo, de ejecuciones anteriores, puede proporcionárselos a CAT, que luego omitirá los pasos que ya se han realizado y comenzará desde allí:
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
Los encabezados en el archivo fasta de proteínas predichas deben verse así >{contig}_{ORFnumber}
, para que CAT pueda acoplar contigs a ORF. El archivo de alineación debe estar separado por tabulaciones, con el ORF consultado en la primera columna, el número de acceso de proteína en la segunda y la puntuación de bits en la duodécima.
Para ejecutar BAT en un conjunto de MAG:
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder}
Alternativamente, BAT se puede ejecutar en un solo MAG:
$ CAT_pack bins -b {bin fasta} -d {database folder} -t {taxonomy folder}
Se generarán varios archivos de salida y un archivo de registro. Los archivos de clasificación final se denominarán out.BAT.ORF2LCA.txt
y out.BAT.bin2classification.txt
.
De manera similar a CAT, BAT se puede ejecutar desde pasos intermedios si la predicción y alineación de genes ya se han llevado a cabo una vez:
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
Si previamente ha ejecutado CAT en el conjunto de contigs a partir de los cuales se originan los MAG, puede utilizar los archivos de alineación y proteínas predichos previamente para clasificar los 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}
¡Esta es una excelente manera de ejecutar CAT y BAT en un conjunto de MAG sin necesidad de realizar predicción y alineación de proteínas dos veces!
La salida ORF2LCA se ve así:
ORF | número de visitas (r: 10) | linaje | puntuación de bits |
---|---|---|---|
contig_1_ORF1 | 7 | 1;131567;2;1783272 | 574,7 |
Donde el linaje es el linaje taxonómico completo de la clasificación del ORF, y la puntuación de bits es la puntuación de bits de mayor impacto que se asigna al ORF para la votación. El archivo de salida BAT ORF2LCA tiene una columna adicional donde los ORF están vinculados al MAG en el que se encuentran.
La salida de contig2classification y bin2classification se ve así:
contig o bin | clasificación | razón | linaje | puntuaciones de linaje (f: 0,3) |
---|---|---|---|---|
contig_1 | taxi asignado | basado en 14/15 ORF | 1;131567;2;1783272 | 1,00; 1,00; 1,00; 0,78 |
contig_2 | taxid asignado (1/2) | basado en 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 | taxid asignado (2/2) | basado en 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 | no hay taxis asignados | no se encontraron ORF |
Donde las puntuaciones de linaje representan la fracción de soporte de puntuación de bits para cada clasificación. contig_2 tiene dos clasificaciones. Esto puede suceder si el parámetro f se elige por debajo de 0,5. Para obtener una explicación de la clasificación con estrellas , consulte Marcado de asignaciones taxonómicas sugerentes con un asterisco.
Para agregar nombres a los taxids en cualquiera de los archivos de salida, ejecute:
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder}
Esto le mostrará que, por ejemplo, contig_1 está clasificado como grupo Terrabacteria. Para obtener sólo el rango oficial ( es decir , superreino, filo,...):
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder} --only_official
O, alternativamente:
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder} --only_official --exclude_scores
Si ha nombrado un archivo de clasificación CAT o BAT con nombres oficiales, puede obtener un resumen de la clasificación, donde se calcula la longitud total y la cantidad de ORF que respaldan un taxón para los contigs, y la cantidad de MAG por taxón encontrado para la clasificación 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}
Actualmente, CAT_pack summarise
no admite archivos de clasificación en los que algunos contigs/MAG tienen múltiples clasificaciones (como contig_2 arriba).
Cuando queremos descender con confianza al nivel taxonómico más bajo posible para una clasificación, una suposición importante es que en ese nivel podrían haber surgido conflictos entre clasificaciones. Es decir, si hubiera clasificaciones contradictorias, el algoritmo habría hecho que la clasificación fuera más conservadora al subir un nivel. Como no fue así, podemos confiar en la clasificación de bajo nivel. Sin embargo, no siempre es posible que surjan conflictos, porque en algunos casos no hay otras secuencias del clado presentes en la base de datos. Esto es válido, por ejemplo, para la familia Dehalococcoidaceae, que en nuestras bases de datos es el único representante del orden Dehalococcoidales. Por lo tanto, aquí no podemos afirmar con seguridad que una clasificación a nivel familiar sea más correcta que una clasificación a nivel de orden. Para estos casos, CAT y BAT marcan el linaje con asteriscos, comenzando desde el nivel de clasificación más bajo hasta el nivel donde podría haber surgido el conflicto porque el clado contiene múltiples taxones con entradas en la base de datos. Se recomienda al usuario que examine los taxones destacados con más atención, por ejemplo, analizando la identidad de secuencia entre los ORF previstos y los aciertos, o ascendiendo en el linaje hasta una clasificación segura (es decir, la primera clasificación sin asterisco).
Si no desea que los asteriscos aparezcan en sus archivos de salida, puede agregar el indicador --no_stars
a CAT o BAT.
CAT y BAT pueden tardar un poco en ejecutarse y pueden consumir bastante RAM y espacio en disco. Dependiendo de lo que más valore, puede ajustar CAT y BAT para maximizar uno y minimizar otros. El algoritmo de clasificación en sí es rápido y amigable con la memoria y el espacio en disco. El paso más costoso es la alineación con DIAMOND, por lo que ajustar los parámetros de alineación tendrá el mayor impacto:
-n / --nproc
le permite elegir la cantidad de núcleos a implementar.--sensitive
. Esto aumentará la sensibilidad pero hará que la alineación sea considerablemente más lenta.--block_size
a un nivel más bajo disminuirá el uso de memoria y espacio temporal en disco. Configurarlo más alto aumentará el rendimiento.--index_chunks
en 1 (actualmente el valor predeterminado). Este parámetro no tiene ningún efecto sobre el uso del espacio temporal en el disco.--tmpdir
.Obtención de ayuda para ejecutar la utilidad de preparación:
$ CAT_pack prepare --help
Ejecute CAT en un conjunto de contig con configuraciones de parámetros predeterminadas que implementen 16 núcleos para la alineación DIAMOND. Asigne nombres oficiales al resultado de la clasificación contig y cree un resumen:
$ 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
Ejecute BAT en el conjunto de MAG que se separaron de estos contigs, reutilizando las predicciones de proteínas y el archivo de alineación DIAMOND generado previamente durante la clasificación de contig:
$ 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
Ejecute nuevamente el algoritmo de clasificación contig con configuraciones de parámetros personalizadas y asigne un nombre a la salida con todos los nombres del linaje, excluyendo las puntuaciones:
$ 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
Ejecute BAT en el conjunto de MAG con configuraciones de parámetros personalizadas, suprimiendo la detalle y sin escribir un archivo de registro. A continuación, agregue nombres al archivo de salida 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/
A menudo utilizamos la combinación CAT/BAT para explorar una posible contaminación dentro de 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
Los contigs que tienen una señal taxonómica diferente a la clasificación MAG probablemente sean contaminación.
Alternativamente, puede observar la contaminación desde la perspectiva MAG, estableciendo el parámetro f en un valor bajo:
$ 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 generará cualquier señal taxonómica con al menos un 1% de apoyo. ¡Las señales divergentes con puntuaciones bajas son signos claros de contaminación!
RAT estima la composición taxonómica de los metagenomas integrando señales taxonómicas de MAG, contigs y lecturas. RAT se ha agregado al paquete CAT desde la versión 6.0. Para utilizar RAT, necesita los archivos de base de datos del paquete CAT (consulte Introducción para obtener más información).
RAT crea un perfil integrado utilizando MAG/bins, contigs y lecturas. Para especificar qué elementos deben integrarse, utilice el argumento --mode
. Las posibles letras para --mode
son m
(para MAG), c
(para contigs) y r
(para lecturas). Todas las combinaciones de las tres letras son posibles, excepto r
sola. Para ejecutar el flujo de trabajo completo de RAT, especifique el modo, lea archivos, archivos contig, carpeta bin y archivos de base de datos:
$ 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/
Actualmente, RAT admite archivos de lectura única, así como archivos de lectura de extremos emparejados. Actualmente no se admiten archivos de lectura entrelazados. RAT ejecutará CAT y BAT en los contigs y MAG, asignará las lecturas a los contigs y luego intentará anotar las lecturas no asignadas por separado. Si ya tiene un archivo de mapeo ordenado, puede proporcionarlo y RAT omitirá el paso de mapeo:
$ 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 ya se han ejecutado CAT y/o BAT en sus datos, puede proporcionar los archivos de salida a RAT para omitir las ejecuciones de CAT y 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 manera similar, si una ejecución RAT anterior falló después de que las lecturas no asignadas ya se hayan alineado con la base de datos con diamante, puede proporcionar los archivos intermedios para continuar la ejecución:
$ 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
Una vez finalizada una ejecución de RAT, puede ejecutar add_names en los archivos de abundancia (solo para ejecuciones de RAT con nr base de datos):
$ CAT_pack add_names -i RAT.completete_abundance_file.txt -o RAT.completete_abundance_file_with_names.txt -t tax/
De manera similar a CAT y BAT, las rutas a todas las dependencias se pueden proporcionar mediante un argumento:
$ 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 salida RAT consta de:
r
en --mode
).