Contig Annotation Tool(CAT) 및 Bin Annotation Tool(BAT) 은 현대 메타게노믹스 연구에 의해 생성된 알려진 미생물과 (매우) 알려지지 않은 미생물의 긴 DNA 서열 및 메타게놈 조립 게놈(MAG/빈)의 분류학적 분류를 위한 파이프라인입니다. 두 프로그램의 핵심 알고리즘에는 유전자 호출, 단백질 데이터베이스에 대한 예측 ORF 매핑, 개별 ORF 분류를 기반으로 하는 전체 contig/MAG의 투표 기반 분류가 포함됩니다. 파일 형식이 적절하다면 중간 단계에서 CAT 및 BAT를 실행할 수 있습니다.
광범위한 벤치마크와 함께 알고리즘을 설명하는 문서는 https://doi.org/10.1186/s13059-019-1817-x에서 찾을 수 있습니다. 연구에 CAT 또는 BAT를 사용하는 경우 다음 내용을 인용해 주시면 감사하겠습니다.
RAT(Read Annotation Tool)는 CAT 및 BAT 출력을 사용하여 메타게놈의 분류학적 구성을 추정합니다. 벤치마크와 함께 RAT를 설명하는 원고는 https://doi.org/10.1038/s41467-024-47155-1에서 찾을 수 있습니다. 연구에 RAT를 사용하는 경우 다음을 인용할 수 있다면 좋을 것입니다.
코드 자체를 인용하려면:
파이썬 3, https://www.python.org/.
다이아몬드, https://github.com/bbuchfink/diamond.
탕자, https://github.com/hyattpd/Prodigal.
RAT에는 다음이 추가로 필요합니다(CAT 및 BAT에는 필요하지 않음).
BWA, 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
GTDB의 경우:
$ 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의 nr 및 GTDB(Genome Taxonomy Database) 단백질이라는 두 가지 데이터베이스가 지원됩니다.
$ CAT_pack download -db nr -o path/to/nr_data_dir
NCBI의 ftp 사이트에서 단백질 서열, 택시에 대한 매핑 및 분류 정보가 포함된 fasta 파일을 다운로드합니다.
$ CAT_pack download -db gtdb -o path/to/gtdb_data_dir
CAT 팩 데이터베이스를 구축하는 데 필요한 파일은 GTDB 다운로드 페이지에서 제공됩니다.
CAT_pack download
필요한 파일을 가져오고 CAT_pack prepare
위해 몇 가지 추가 처리를 수행합니다.
nodes.dmp
및 names.dmp
파일로 변환됩니다.gtdb_proteins_aa_reps.tar.gz
에서 추출되며 일련의 중복 제거를 거칩니다. 중복 제거는 DIAMOND 데이터베이스의 중복성을 줄여 정렬 프로세스를 단순화합니다. 정확한 중복 서열은 단백질 서열의 MD5sum과 그 길이의 조합을 기반으로 식별됩니다. fasta 헤더에 인코딩된 모든 중복 항목과 함께 하나의 대표 시퀀스만 유지됩니다. 이 정보는 나중에 .fastaid2LCAtaxid
파일에서 단백질 서열의 LCA를 적절하게 할당하기 위해 CAT_pack prepare
에 사용됩니다.root
노드 아래에 연결하여 all.tree
파일을 생성합니다. 이 파일은 CAT 팩에서 사용되지 않지만 다운스트림 분석에 유용할 수 있습니다. 파일 다운로드 및 처리가 성공적으로 완료되면 CAT_pack prepare
사용하여 CAT 팩 데이터베이스를 구축할 수 있습니다.
사용 가능한 모든 명령줄 옵션은 다음을 참조하세요.
$ CAT_pack download -h
그리고
$ CAT_pack prepare -h
사용자 정의 CAT 팩 데이터베이스의 경우 CAT_pack prepare
실행을 시작하기 전에 다음 입력이 준비되어 있어야 합니다.
데이터베이스에 포함하려는 모든 단백질 서열이 포함된 fasta 파일입니다.
택시의 순위 및 학명에 대한 매핑이 포함된 names.dmp
파일입니다. 형식은 NCBI 표준 names.dmp
와 동일해야 합니다( t|t
필드 구분 기호로 사용).
예는 다음과 같습니다.
1 | root | scientific name |
2 | Bacteria | scientific name |
562 | Escherichia coli | scientific name |
nodes.dmp
파일입니다. 형식은 NCBI 표준 nodes.dmp
와 동일해야 합니다( 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
파일에 대한 자세한 내용은 NCBI Taxdump_readme.txt를 참조하세요.
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
생성됩니다.tax
디렉토리의 nodes.dmp
및 names.dmp
원래 위치에서 복사됩니다. 이는 CAT, BAT 및 RAT의 -t
플래그가 작동하도록 하기 위한 것입니다.<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를 실행하여 contig 세트에 주석을 달 수 있습니다.
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder}
여러 출력 파일과 로그 파일이 생성됩니다. 최종 분류 파일은 out.CAT.ORF2LCA.txt
및 out.CAT.contig2classification.txt
입니다.
또는 예를 들어 이전 실행에서 예측된 단백질 fasta 파일 및/또는 정렬 테이블이 이미 있는 경우 이를 CAT에 제공할 수 있습니다. 그런 다음 이미 수행된 단계를 건너뛰고 거기서부터 시작합니다.
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
예측된 단백질 fasta 파일의 헤더는 >{contig}_{ORFnumber}
와 같아야 CAT가 ORF에 contig를 연결할 수 있습니다. 정렬 파일은 탭으로 구분되어야 하며 첫 번째 열에는 쿼리된 ORF, 두 번째 열에는 단백질 접근 번호, 12번째 열에는 비트 점수가 있어야 합니다.
MAG 세트에서 BAT를 실행하려면 다음을 수행하십시오.
$ CAT_pack bins -b {bin folder} -d {database folder} -t {taxonomy folder}
또는 단일 MAG에서 BAT를 실행할 수 있습니다.
$ 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}
이전에 MAG가 발생한 contig 세트에서 CAT를 실행한 경우 이전에 예측된 단백질 및 정렬 파일을 사용하여 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}
이는 단백질 예측과 정렬을 두 번 수행할 필요 없이 MAG 세트에서 CAT와 BAT를 모두 실행할 수 있는 좋은 방법입니다!
ORF2LCA 출력은 다음과 같습니다.
ORF | 히트수(r:10) | 혈통 | 비트스코어 |
---|---|---|---|
contig_1_ORF1 | 7 | 1;131567;2;1783272 | 574.7 |
여기서 계보는 ORF 분류의 전체 분류학적 계보이고, 비트 점수는 투표를 위해 ORF에 할당된 최고 히트 비트 점수입니다. BAT ORF2LCA 출력 파일에는 ORF가 발견된 MAG에 연결되는 추가 열이 있습니다.
contig2classification 및 bin2classification 출력은 다음과 같습니다.
콘티그 또는 빈 | 분류 | 이유 | 혈통 | 계보 점수(f: 0.3) |
---|---|---|---|---|
contig_1 | 택시 배정 | 14/15 ORF 기준 | 1;131567;2;1783272 | 1.00; 1.00; 1.00; 0.78 |
contig_2 | 택시 배정 (1/2) | 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 | 택시 배정 (2/2) | 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 | 배정된 택시가 없습니다 | 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의 총 길이와 수는 contig에 대해 계산되고 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
현재 일부 contig/MAG가 여러 분류(위의 contig_2와 같이)를 갖는 분류 파일을 지원하지 않습니다.
분류에 대해 가능한 가장 낮은 분류학적 수준으로 자신있게 내려가고 싶을 때 중요한 가정은 해당 수준에서 분류 간의 충돌이 발생할 수 있다는 것입니다. 즉, 충돌하는 분류가 있는 경우 알고리즘은 한 수준 위로 이동하여 분류를 더욱 보수적으로 만들었습니다. 그렇지 않았기 때문에 우리는 낮은 수준의 분류를 신뢰할 수 있습니다. 그러나 어떤 경우에는 클레이드의 다른 시퀀스가 데이터베이스에 존재하지 않기 때문에 충돌이 항상 발생할 수 있는 것은 아닙니다. 이는 예를 들어 우리 데이터베이스에서 Dehalococcoidales 목의 유일한 대표자인 Dehalococcoidaceae과의 경우에 해당됩니다. 따라서 여기서는 과 수준의 분류가 목 수준의 분류보다 더 정확하다고 자신 있게 말할 수는 없습니다. 이러한 경우 CAT 및 BAT는 가장 낮은 수준 분류부터 시작하여 계통에 데이터베이스 항목이 있는 여러 분류군이 포함되어 있기 때문에 충돌이 발생할 수 있는 수준까지 별표로 계보를 표시합니다. 사용자는 예를 들어 예측된 ORF와 적중 사이의 서열 동일성을 분석하거나 계통을 신뢰할 수 있는 분류(즉 별표가 없는 첫 번째 분류)로 이동하여 별표가 있는 분류군을 더 주의 깊게 조사하는 것이 좋습니다.
출력 파일에 별표를 원하지 않으면 --no_stars
플래그를 CAT 또는 BAT에 추가할 수 있습니다.
CAT 및 BAT는 실행하는 데 시간이 걸릴 수 있으며 상당히 많은 RAM과 디스크 공간을 사용할 수 있습니다. 가장 중요하게 생각하는 것에 따라 CAT 및 BAT를 조정하여 하나를 최대화하고 다른 것을 최소화할 수 있습니다. 분류 알고리즘 자체는 빠르고 메모리와 디스크 공간에 친숙합니다. 가장 비용이 많이 드는 단계는 DIAMOND를 사용한 정렬이므로 정렬 매개변수 조정이 가장 큰 영향을 미칩니다.
-n / --nproc
인수를 사용하면 배포할 코어 수를 선택할 수 있습니다.--sensitive
플래그를 사용하여 민감 모드에서 DIAMOND를 실행하도록 선택할 수 있습니다. 이렇게 하면 감도가 향상되지만 정렬 속도가 상당히 느려집니다.--block_size
매개변수를 더 낮게 설정하면 메모리와 임시 디스크 공간 사용량이 줄어듭니다. 더 높게 설정하면 성능이 향상됩니다.--index_chunks
1(현재 기본값)로 설정하는 것이 좋습니다. 이 매개변수는 임시 디스크 공간 사용량에 영향을 주지 않습니다.--tmpdir
인수를 사용하여 임시 DIAMOND 파일의 위치를 지정할 수 있습니다.준비 유틸리티 실행에 대한 도움말 보기:
$ CAT_pack prepare --help
DIAMOND 정렬을 위해 16개 코어를 배포하는 기본 매개변수 설정을 사용하여 contig 세트에서 CAT를 실행합니다. 공식 이름으로 contig 분류 출력의 이름을 지정하고 요약을 만듭니다.
$ 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
이전에 contig 분류 중에 생성된 단백질 예측 및 DIAMOND 정렬 파일을 재사용하여 이러한 contig에서 비닝된 MAG 세트에 대해 BAT를 실행합니다.
$ 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
사용자 정의 매개변수 설정을 사용하여 contig 분류 알고리즘을 다시 실행하고 점수를 제외하고 계보의 모든 이름으로 출력 이름을 지정합니다.
$ 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
사용자 정의 매개변수 설정을 사용하여 MAG 세트에서 BAT를 실행하여 자세한 내용을 억제하고 로그 파일을 작성하지 않습니다. 다음으로 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/
우리는 MAG 내에서 발생할 수 있는 오염을 탐색하기 위해 종종 CAT/BAT의 조합을 사용합니다.
$ 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 분류와 다른 분류학적 신호를 갖는 콘티그는 아마도 오염일 가능성이 높습니다.
또는 f 매개변수를 낮은 값으로 설정하여 MAG 관점에서 오염을 볼 수 있습니다.
$ 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, contigs 및 reads의 분류학적 신호를 통합하여 메타게놈의 분류학적 구성을 추정합니다. RAT는 버전 6.0부터 CAT 팩에 추가되었습니다. RAT를 사용하려면 CAT 팩 데이터베이스 파일이 필요합니다(자세한 내용은 시작하기 참조).
RAT는 MAG/bin, contig 및 읽기를 사용하여 통합 프로필을 만듭니다. 통합해야 할 요소를 지정하려면 --mode
인수를 사용합니다. --mode
에 사용할 수 있는 문자는 m
(MAG의 경우), c
(contig의 경우) 및 r
(읽기의 경우)입니다. r
만 제외하고 세 글자의 모든 조합이 가능합니다. RAT의 전체 워크플로우를 실행하려면 모드를 지정하고 파일, contig 파일, 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는 contig와 MAG에서 CAT 및 BAT를 실행하고 읽기를 contig에 다시 매핑한 다음 매핑되지 않은 읽기에 별도로 주석을 달려고 시도합니다. 이미 정렬된 매핑 파일이 있는 경우 이를 제공하면 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를 실행할 수 있습니다(nr 데이터베이스를 사용한 RAT 실행에만 해당).
$ 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 출력은 다음으로 구성됩니다.
--mode
에서 r
없는 선택 사항).