Contig Annotation Tool (CAT) и Bin Annotation Tool (BAT) представляют собой конвейеры для таксономической классификации длинных последовательностей ДНК и геномов, собранных в метагеном (MAG / бункеры) как известных, так и (в высшей степени) неизвестных микроорганизмов, полученных в результате современных метагеномных исследований. Основной алгоритм обеих программ включает вызов генов, сопоставление предсказанных ORF с базой данных белков и классификацию всего контига / MAG на основе голосования на основе классификации отдельных ORF. CAT и BAT можно запускать на промежуточных этапах, если файлы имеют соответствующий формат.
Документ, описывающий алгоритм вместе с обширными тестами, можно найти по адресу https://doi.org/10.1186/s13059-019-1817-x. Если вы используете CAT или BAT в своих исследованиях, было бы здорово, если бы вы процитировали нас:
Read Annotation Tool (RAT) оценивает таксономический состав метагеномов с использованием результатов CAT и BAT. Рукопись, описывающую RAT с тестами, можно найти по адресу https://doi.org/10.1038/s41467-024-47155-1. Если вы используете RAT в своих исследованиях, было бы здорово, если бы вы процитировали:
Процитируем сам код:
Python 3, https://www.python.org/.
АЛМАЗ, https://github.com/bbuchfink/diamond.
Блудный сын, https://github.com/hyattpd/Prodigal.
RAT дополнительно требует (не требуется для CAT и BAT):
БВА, https://github.com/lh3/bwa.
SAMtools, http://www.htslib.org/download/.
CAT, BAT и RAT были тщательно протестированы в системах Linux и также должны работать в macOS.
Никакой установки не требуется. Вы можете запустить CAT, BAT и RAT, указав абсолютный путь:
$ ./CAT_pack/CAT_pack --help
Альтернативно, если вы добавите файлы из каталога CAT_pack в переменную $PATH
, вы сможете запускать CAT, BAT и RAT из любого места:
$ CAT_pack --version
Чтобы начать работу с CAT/BAT/RAT, вам необходимо получить файлы базы данных в вашей системе. Вы можете загрузить готовые файлы базы данных или создать их самостоятельно.
Чтобы загрузить файлы базы данных, найдите самую последнюю версию на tbb.bio.uu.nl/tina/CAT_pack_prepare/, загрузите и извлеките ее, и все готово!
Для номера NCBI:
$ wget tbb.bio.uu.nl/tina/CAT_pack_prepare/20240422_CAT_nr.tar.gz
$ tar -xvzf 20240422_CAT_nr.tar.gz
Для ГТДБ:
$ wget tbb.bio.uu.nl/tina/CAT_pack_prepare/20231120_CAT_gtdb.tar.gz # release 214
$ tar -xvzf 20231120_CAT_gtdb.tar.gz
Вместо использования предварительно созданной базы данных вы можете создать новую базу данных самостоятельно. Модуль download
можно использовать для загрузки и обработки необработанных данных при подготовке к созданию новой базы данных пакета CAT. Это гарантирует, что все входные зависимости будут соблюдены и правильно отформатированы для CAT_pack prepare
.
В настоящее время поддерживаются две базы данных: NCBI's nr и база данных геномной таксономии (GTDB).
$ CAT_pack download -db nr -o path/to/nr_data_dir
Загрузим фаст-файл с белковыми последовательностями, их сопоставлением с таксидом и информацией о таксономии с ftp-сайта NCBI.
$ CAT_pack download -db gtdb -o path/to/gtdb_data_dir
Файлы, необходимые для создания базы данных пакета CAT, предоставляются на странице загрузок GTDB.
CAT_pack download
извлекает необходимые файлы и выполняет дополнительную обработку, чтобы подготовить их к CAT_pack prepare
:
nodes.dmp
и names.dmp
в стиле NCBI.gtdb_proteins_aa_reps.tar.gz
и подвергаются циклу дедупликации. Дедупликация уменьшает избыточность в базе данных DIAMOND, тем самым упрощая процесс выравнивания. Точные повторяющиеся последовательности идентифицируются на основе комбинации суммы MD5 белковых последовательностей и их длины. Сохраняется только одна репрезентативная последовательность, причем все дубликаты закодированы в заголовке fasta. Эта информация позже используется CAT_pack prepare
для соответствующего присвоения LCA последовательности белка в файле .fastaid2LCAtaxid
.root
узел для создания файла all.tree
. Этот файл не используется пакетом CAT, но может пригодиться для дальнейшего анализа. После успешного завершения загрузки и обработки файлов вы можете создать базу данных CAT-пакета с помощью CAT_pack prepare
.
Все доступные параметры командной строки см.
$ CAT_pack download -h
и
$ CAT_pack prepare -h
Для пользовательской базы данных пакета CAT перед запуском CAT_pack prepare
необходимо подготовить следующие входные данные.
Файл fasta, содержащий все белковые последовательности, которые вы хотите включить в свою базу данных.
Файл names.dmp
, содержащий сопоставления таксидов с их рангами и научными названиями. Формат должен быть таким же, как names.dmp
стандарта NCBI (в качестве разделителя полей используется t|t
).
Пример выглядит следующим образом:
1 | root | scientific name |
2 | Bacteria | scientific name |
562 | Escherichia coli | scientific name |
nodes.dmp
, описывающий дочерние и родительские отношения узлов в дереве таксономии и их (официальный) ранг. Формат должен быть таким же, как стандартный nodes.dmp
NCBI (в качестве разделителя полей используется t|t
).Пример выглядит следующим образом:
1 | 1 | root |
2 | 1 | superkingdom |
1224 | 2 | phylum |
1236 | 1224 | class |
91437 | 1236 | order |
543 | 91347 | family |
561 | 543 | genus |
562 | 561 | species |
Дополнительную информацию о файлах nodes.dmp
и names.dmp
см. в файле Taxdump_readme.txt NCBI.
accession.version taxid
.Пример выглядит так
accession.version taxid
protein_1 562
protein_2 123456
Как только все вышеперечисленные требования будут выполнены, вы можете запустить CAT_pack prepare
. Все входные данные должны быть явно указаны для CAT_pack prepare
к работе, например:
$ 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
создаст output_dir
, который будет выглядеть так
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
Примечания:
db
и tax
, содержащие все необходимые файлы.nodes.dmp
и names.dmp
в tax
каталоге копируются из исходного местоположения. Это необходимо для того, чтобы флаг -t
CAT, BAT и RAT работал.<YYYY-MM-DD>_CAT_pack
. Вы можете настроить его с помощью опции --common_prefix
.Все доступные параметры командной строки см.
$ CAT_pack prepare -h
Файлы базы данных необходимы при последующих запусках CAT/BAT/RAT. Их нужно создавать/загружать только один раз или всякий раз, когда вы захотите обновить базу данных.
Для запуска CAT/BAT/RAT соответственно:
$ CAT_pack contigs # Runs CAT.
$ CAT_pack bins # Runs BAT.
$ CAT_pack reads # Runs RAT.
Если вы не уверены, какие параметры есть у программы, вы всегда можете добавить к команде --help
. Это отличный способ начать работу с CAT, BAT или RAT.
$ CAT_pack --help
$ CAT_pack contigs --help
$ CAT_pack summarise --help
Если вы не уверены в том, какие входные файлы требуются, вы можете просто запустить CAT/BAT/RAT, поскольку в случае неправильного форматирования генерируются соответствующие сообщения об ошибках.
После того, как файлы базы данных появятся в вашей системе, вы можете запустить CAT, чтобы аннотировать свой набор конфигов:
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder}
Будет создано несколько выходных файлов и файл журнала. Окончательные файлы классификации будут называться out.CAT.ORF2LCA.txt
и out.CAT.contig2classification.txt
.
В качестве альтернативы, если у вас уже есть фаст-файл прогнозируемых белков и/или таблица выравнивания, например, из предыдущих запусков, вы можете передать их в CAT, который затем пропустит уже выполненные шаги и начнет с этого:
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
Заголовки в фаст-файле предсказанных белков должны выглядеть так >{contig}_{ORFnumber}
, чтобы CAT мог связывать контиги с ORF. Файл выравнивания должен быть разделен табуляцией, с запрошенной ORF в первом столбце, регистрационным номером белка во втором и битовой оценкой в 12-м.
Чтобы запустить BAT на наборе MAG:
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder}
Альтернативно, BAT можно запустить на одном MAG:
$ CAT_pack bins -b {bin fasta} -d {database folder} -t {taxonomy folder}
Будет создано несколько выходных файлов и файл журнала. Окончательные файлы классификации будут называться out.BAT.ORF2LCA.txt
и out.BAT.bin2classification.txt
.
Подобно CAT, BAT можно запустить с промежуточных этапов, если предсказание и выравнивание генов уже были выполнены один раз:
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
Если вы ранее запускали CAT на наборе контигов, из которых происходят MAG, вы можете использовать ранее предсказанные файлы белков и выравниваний для классификации 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}
Это отличный способ запустить CAT и BAT на наборе MAG без необходимости дважды выполнять прогнозирование и выравнивание белков!
Вывод ORF2LCA выглядит следующим образом:
ОРФ | количество попаданий (r: 10) | родословная | бит-оценка |
---|---|---|---|
contig_1_ORF1 | 7 | 1;131567;2;1783272 | 574,7 |
Где происхождение представляет собой полную таксономическую линию классификации ORF, а битовый балл - это битовый рейтинг с наибольшим попаданием, который присваивается ORF для голосования. Выходной файл BAT ORF2LCA имеет дополнительный столбец, в котором ORF связаны с MAG, в котором они находятся.
Вывод contig2classification и bin2classification выглядит следующим образом:
контиг или корзина | классификация | причина | родословная | баллы по происхождению (f: 0,3) |
---|---|---|---|---|
контиг_1 | назначено такси | на основе ORF 14/15 | 1;131567;2;1783272 | 1,00; 1,00; 1,00; 0,78 |
контиг_2 | назначено такси (1/2) | на основе ORF 10/10 | 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 |
контиг_2 | назначено такси (2/2) | на основе ORF 10/10 | 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 |
контиг_3 | такси не назначено | ORF не найдены |
Где оценки происхождения представляют долю поддержки битовых оценок для каждой классификации. contig_2 имеет две классификации. Это может произойти, если параметр f выбран ниже 0,5. Объяснение классификации, отмеченной звездочкой , см. в разделе «Отметка звездочкой наводящих на размышления таксономических присвоений».
Чтобы добавить имена таксидам в любом выходном файле, запустите:
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder}
Это покажет вам, что, например, contig_1 классифицируется как группа Terrabacteria. Чтобы получить только официальный ранг ( т.е. суперкоролевство, тип,...):
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder} --only_official
Или, альтернативно:
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder} --only_official --exclude_scores
Если вы дали файлу классификации CAT или BAT официальные имена, вы можете получить сводную информацию о классификации, в которой для контигов рассчитываются общая длина и количество ORF, поддерживающих таксон, а также количество MAG на встретившийся таксон для классификации 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
в настоящее время не поддерживает файлы классификации, в которых некоторые контиги/MAG имеют несколько классификаций (как contig_2 выше).
Когда мы хотим уверенно спуститься на самый низкий таксономический уровень, возможный для классификации, важным предположением является то, что на этом уровне мог возникнуть конфликт между классификациями. А именно, если бы существовали конфликтующие классификации, алгоритм сделал бы классификацию более консервативной, поднявшись на уровень выше. Поскольку этого не произошло, мы можем доверять классификации низкого уровня. Однако возникновение конфликта не всегда возможно, поскольку в некоторых случаях в базе данных отсутствуют другие последовательности из клады. Это справедливо, например, для семейства Dehalococcoidaceae, которое в наших базах данных является единственным представителем отряда Dehalococcoidales. Таким образом, здесь мы не можем с уверенностью утверждать, что классификация на уровне семейства более правильна, чем классификация на уровне отряда. В этих случаях CAT и BAT отмечают происхождение звездочками, начиная с классификации самого низкого уровня до уровня, на котором мог возникнуть конфликт, поскольку клада содержит несколько таксонов с записями в базе данных. Пользователю рекомендуется более тщательно исследовать отмеченные звездочкой таксоны, например, анализируя идентичность последовательностей между предсказанными ORF и совпадениями, или перейти вверх по линии к достоверной классификации (т. е. к первой классификации без звездочки).
Если вам не нужны звездочки в выходных файлах, вы можете добавить флаг --no_stars
в CAT или BAT.
Запуск CAT и BAT может занять некоторое время и потребовать довольно много оперативной памяти и дискового пространства. В зависимости от того, что вы цените больше всего, вы можете настроить CAT и BAT, чтобы максимизировать одно и минимизировать другие. Сам алгоритм классификации работает быстро и экономно расходует память и дисковое пространство. Самый дорогой шаг — это выравнивание с помощью DIAMOND, поэтому настройка параметров выравнивания будет иметь наибольшее влияние:
-n / --nproc
позволяет выбрать количество ядер для развертывания.--sensitive
. Это повысит чувствительность, но значительно замедлит выравнивание.--block_size
уменьшит использование памяти и временного дискового пространства. Установка более высокого значения повысит производительность.--index_chunks
равным 1 (в настоящее время значение по умолчанию). Этот параметр не влияет на использование временного дискового пространства.--tmpdir
.Получение справки по запуску утилиты подготовки:
$ CAT_pack prepare --help
Запустите CAT на наборе конфигов с настройками параметров по умолчанию, развернув 16 ядер для выравнивания DIAMOND. Назовите выходные данные классификации контигов официальными именами и создайте сводку:
$ 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
Запустите BAT на наборе MAG, который был выделен из этих контигов, повторно используя прогнозы белков и файл выравнивания DIAMOND, созданный ранее во время классификации контигов:
$ 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
Снова запустите алгоритм классификации контигов с настройками пользовательских параметров и назовите выходные данные всеми именами в линии, исключая оценки:
$ 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
Запустите BAT на наборе MAG с настраиваемыми настройками параметров, подавляя многословие и не записывая файл журнала. Затем добавьте имена в выходной файл 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/
Мы часто используем комбинацию CAT/BAT для исследования возможного загрязнения внутри 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
Контиги, которые имеют таксономический сигнал, отличный от классификации MAG, вероятно, являются контаминацией.
В качестве альтернативы вы можете посмотреть на загрязнение с точки зрения MAG, установив для параметра f низкое значение:
$ 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 будет выводить любой таксономический сигнал с поддержкой не менее 1%. Расходящиеся сигналы с низкой оценкой являются явным признаком загрязнения!
RAT оценивает таксономический состав метагеномов путем интеграции таксономических сигналов от MAG, контигов и ридов. RAT был добавлен в пакет CAT начиная с версии 6.0. Чтобы использовать RAT, вам потребуются файлы базы данных пакета CAT (дополнительную информацию см. в разделе «Начало работы»).
RAT создает интегрированный профиль, используя MAG/бины, контиги и операции чтения. Чтобы указать, какие элементы следует интегрировать, используйте аргумент --mode
. Возможные буквы для --mode
: m
(для MAG), c
(для контигов) и r
(для чтения). Возможны все комбинации трех букв, кроме одной r
. Чтобы запустить полный рабочий процесс RAT, укажите режим, файлы чтения, файлы конфигурации, папку bin и файлы базы данных:
$ 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/
В настоящее время RAT поддерживает файлы одиночного чтения, а также файлы чтения парных концов. Чересстрочное чтение файлов в настоящее время не поддерживается. RAT запустит CAT и BAT на контигах и MAG, сопоставит чтения обратно с контигами, а затем попытается аннотировать любые несопоставленные чтения отдельно. Если у вас уже есть отсортированный файл сопоставления, вы можете предоставить его, и RAT пропустит этап сопоставления:
$ 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/
Если CAT и/или BAT уже применялись к вашим данным, вы можете передать выходные файлы в RAT, чтобы пропустить запуск CAT и 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
Аналогично, если предыдущий запуск RAT завершился сбоем после того, как несопоставленные чтения уже были выровнены с базой данных с помощью ромба, вы можете предоставить промежуточные файлы для продолжения запуска:
$ 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
После завершения запуска RAT вы можете запустить add_names для файлов изобилия (только для запусков RAT с базой данных nr):
$ CAT_pack add_names -i RAT.completete_abundance_file.txt -o RAT.completete_abundance_file_with_names.txt -t tax/
Подобно CAT и 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/ --path_to_samtools /path/to/samtools
Выход RAT состоит из:
r
в --mode
).