Contig Annotation Tool (CAT)およびBin Annotation Tool (BAT)は、現代のメタゲノミクス研究によって生成された、既知微生物と (高度に) 未知の微生物の両方の長い DNA 配列とメタゲノムで組み立てられたゲノム (MAG / bin) を分類学的に分類するためのパイプラインです。両方のプログラムのコア アルゴリズムには、遺伝子呼び出し、タンパク質データベースに対する予測された ORF のマッピング、および個々の ORF の分類に基づくコンティグ/MAG 全体の投票ベースの分類が含まれます。ファイルが適切にフォーマットされていれば、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 には必要ありません)。
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) タンパク質の 2 つのデータベースがサポートされています。
$ CAT_pack download -db nr -o path/to/nr_data_dir
タンパク質配列、タクシドへのマッピング、および分類情報を含む fasta ファイルを NCBI の FTP サイトからダウンロードします。
$ 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 とその長さの組み合わせに基づいて識別されます。代表的なシーケンスは 1 つだけ保持され、すべての重複は fasta ヘッダーにエンコードされます。この情報は後でCAT_pack prepare
によって使用され、 .fastaid2LCAtaxid
ファイル内でタンパク質配列の LCA を適切に割り当てます。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 を実行してコンティグ セットに注釈を付けることができます。
$ 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}
CAT がコンティグを ORF に結合できるように、予測タンパク質 fasta ファイルのヘッダーは>{contig}_{ORFnumber}
のようになっている必要があります。アライメント ファイルはタブで区切る必要があり、最初の列にクエリされた ORF、2 番目の列にタンパク質アクセッション番号、12 列目にビットスコアが含まれます。
一連の MAG で BAT を実行するには:
$ 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}
MAG の元となるコンティグのセットに対して 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}
これは、タンパク質の予測とアライメントを 2 回行う必要がなく、一連の 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 には 2 つの分類があります。これは、 fパラメータが 0.5 より小さい値を選択した場合に発生する可能性があります。星付き分類の説明については、「示唆的な分類学的割り当てにアスタリスクを付ける」を参照してください。
いずれかの出力ファイルのタクシー ID に名前を追加するには、次を実行します。
$ CAT_pack add_names -i {ORF2LCA / classification file} -o {output file} -t {taxonomy folder}
これにより、たとえば contig_1 がテラバクテリア グループとして分類されていることがわかります。公式ランク (つまり、スーパーキングダム、門など) のみを取得するには:
$ 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 科に当てはまります。Dehalococcoidaceae は、私たちのデータベースでは Dehalococcoidales 目の唯一の代表です。したがって、ここでは、家族レベルの分類が目レベルの分類よりも正確であると自信を持って言うことはできません。このような場合、CAT および BAT は系統にアスタリスクを付けます。クレードにはデータベース エントリを持つ複数の分類群が含まれるため、最も低いレベルの分類から競合が発生する可能性のあるレベルまでが続きます。ユーザーは、予測された ORF とヒットの間の配列同一性を分析するなどして、星付きの分類群をより注意深く調べるか、系統を信頼できる分類 (つまり、アスタリスクのない最初の分類) に移動することをお勧めします。
出力ファイルにアスタリスクを入れたくない場合は、CAT または BAT に--no_stars
フラグを追加できます。
CAT と BAT は実行に時間がかかり、大量の RAM とディスク容量を使用する可能性があります。何を最も重視するかに応じて、CAT と BAT を調整して、一方を最大化し、他を最小化することができます。分類アルゴリズム自体は高速で、メモリとディスク容量に優しいです。最もコストがかかるステップは DIAMOND との位置合わせであるため、位置合わせパラメータの調整が最も大きな影響を及ぼします。
-n / --nproc
引数を使用すると、デプロイするコアの数を選択できます。--sensitive
フラグを使用すると、DIAMOND を機密モードで実行することを選択できます。これにより感度は向上しますが、位置合わせが大幅に遅くなります。--block_size
パラメータを低く設定すると、メモリと一時ディスク領域の使用量が減少します。高く設定するとパフォーマンスが向上します。--index_chunks
1 (現在のデフォルト) に設定することをお勧めします。このパラメータは、一時的なディスク領域の使用量には影響しません。--tmpdir
引数を使用して、一時 DIAMOND ファイルの場所を指定できます。準備ユーティリティを実行するためのヘルプを取得するには:
$ CAT_pack prepare --help
DIAMOND アライメント用に 16 コアをデプロイするデフォルトのパラメーター設定を使用して、コンティグ セットで CAT を実行します。コンティグ分類出力に正式名を付けて、概要を作成します。
$ 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
これらのコンティグからビニングされた MAG のセットに対して BAT を実行し、コンティグ分類中に以前に生成されたタンパク質予測と 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
カスタム パラメーター設定を使用して 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、コンティグ、リードからの分類学的シグナルを統合することにより、メタゲノムの分類学的構成を推定します。 RAT はバージョン 6.0 から CAT パックに追加されました。 RAT を使用するには、CAT パック データベース ファイルが必要です (詳細については、「はじめに」を参照してください)。
RAT は、MAG/ビン、コンティグ、リードを使用して統合プロファイルを作成します。どの要素を統合する必要があるかを指定するには、 --mode
引数を使用します。 --mode
に使用できる文字は、 m
(MAG の場合)、 c
(コンティグの場合)、およびr
(読み取りの場合) です。 r
単独を除き、3 文字のすべての組み合わせが可能です。 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 は、コンティグおよび MAG に対して CAT および BAT を実行し、リードをコンティグにマップし直し、マップされていないリードに個別にアノテーションを付けようとします。ソートされたマッピング ファイルがすでにある場合は、それを指定すると、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
なしの場合はオプション)。