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,如果您能引用我們的話那就太好了:
讀取註釋工具 (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) 蛋白質。
$ 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
GTDB 下載頁面提供了建立 CAT 套件資料庫所需的檔案。
CAT_pack download
獲取必要的文件並進行一些額外的處理以使它們為CAT_pack prepare
:
nodes.dmp
和names.dmp
檔案。gtdb_proteins_aa_reps.tar.gz
中提取蛋白質序列,並進行一輪重複資料刪除。重複資料刪除減少了 DIAMOND 資料庫中的冗餘,從而簡化了對齊過程。根據蛋白質序列的 MD5 和及其長度的組合來識別精確的重複序列。僅保留一個代表性序列,所有重複序列均編碼在 fasta 標頭中。 CAT_pack prepare
稍後將使用此資訊在.fastaid2LCAtaxid
文件中適當分配蛋白質序列的 LCA。root
下人工連接,以產生all.tree
檔案。該文件不被 CAT 套件使用,但對於下游分析可能會派上用場。檔案的下載和處理成功完成後,您可以使用CAT_pack prepare
建立 CATpack 資料庫。
對於所有可用的命令列選項,請參閱
$ CAT_pack download -h
和
$ CAT_pack prepare -h
對於自訂 CAT pack 資料庫,您必須在啟動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
檔案的更多信息,請參閱NCBItaxdump_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 將跳過已完成的步驟並從那裡開始:
$ CAT_pack contigs -c {contigs fasta} -d {database folder} -t {taxonomy folder} -p {predicted proteins fasta} -a {alignment file}
預測蛋白質 fasta 檔案中的標頭必須類似於>{contig}_{ORFnumber}
,以便 CAT 可以將重疊群與 ORF 偶聯。比對檔案必須以製表符分隔,第一列是查詢的 ORF,第二列是蛋白質登錄號,第 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}
這是在一組 MAG 上運行 CAT 和 BAT 的好方法,無需進行兩次蛋白質預測和比對!
ORF2LCA 輸出如下所示:
開放閱讀框 | 命中次數 (r: 10) | 血統 | 位分數 |
---|---|---|---|
重疊群_1_ORF1 | 7 | 1;131567;2;1783272 | 574.7 |
其中譜係是 ORF 分類的完整分類譜系,位分數是分配給 ORF 進行投票的最高命中位數分數。 BAT ORF2LCA 輸出檔案有一個額外的列,其中 ORF 連結到它們所在的 MAG。
contig2classification 和 bin2classification 輸出如下所示:
重疊群或容器 | 分類 | 原因 | 血統 | 譜系分數(f:0.3) |
---|---|---|---|---|
重疊群_1 | 計程車分配 | 基於 14/15 ORF | 1;131567;2;1783272 | 1.00; 1.00; 1.00; 0.78 |
重疊群_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 |
重疊群_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 |
重疊群_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 可能需要一段時間才能運行,並且可能使用大量 RAM 和磁碟空間。根據您最重視的內容,您可以調整 CAT 和 BAT,以最大化其中一項並最小化其他項目。分類演算法本身速度快,並且對記憶體和磁碟空間友好。最昂貴的步驟是與 DIAMOND 對齊,因此調整對齊參數將產生最大的影響:
-n / --nproc
參數可讓您選擇要部署的核心數量。--sensitive
標誌在敏感模式下運行 DIAMOND。這將提高靈敏度,但會使對準速度顯著變慢。--block_size
參數設定得較低將減少記憶體和臨時磁碟空間的使用。將其設定得更高會提高效能。--index_chunks
設為 1(目前預設值)。此參數對臨時磁碟空間的使用沒有影響。--tmpdir
參數指定臨時 DIAMOND 檔案的位置。取得執行準備實用程式的協助:
$ 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
對從這些重疊群分箱的 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/
我們經常結合使用 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 分類不同的分類訊號的重疊群可能是污染。
或者,您可以將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、重疊群和讀數的分類訊號來估計宏基因組的分類組成。從 6.0 版本開始,RAT 已新增到 CAT 套件中。要使用 RAT,您需要 CAT 包資料庫檔案(有關更多信息,請參閱入門)。
RAT 使用 MAG/bins、contig 和 read 產生整合的設定檔。若要指定應整合哪些元素,請使用--mode
參數。 --mode
的可能字母為m
(對於 MAG)、 c
(對於重疊群)和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 將在重疊群和 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 運行在未映射的讀取已使用 Diamond 與資料庫對齊後崩潰,您可以提供中間檔案以繼續運行:
$ 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
)。