2024/03/5 更新
2024/04/9 追記
MetaCerberusは、超並列、高速、低メモリ、スケーラブルなアノテーションツールであり、ゲノムからメタコミュニティにわたる遺伝子機能を推論する。MetaCerberusは、HMM/HMMERベースのツールを低メモリで高速に提供する。KEGG(KO)、COGs、CAZy、FOAM、そしてVOGsやPHROGsなどのウイルスに特化したデータベースを含む主要な公開データベースに対して、シングルゲノムからメタコミュニティまで、スケーラブルな遺伝子解明を提供する。MetaCerberusはシングルノードでeggNOG-mapper v2より1.3倍高速で、HMM/HMMERモードのみを使用した場合、5倍少ないメモリで実行できた。直接比較すると、MetaCerberusはDRAM、Prokka、InterProScanよりもウイルス、ファージ、古細菌ウイルスのアノテーションが優れている。MetaCerberusは、DRAMと比較して、186倍小さいデータベースと63倍少ないメモリで、ドメイン間でより多くのKOをアノテーションする。MetaCerberusは、差分統計ツール(DESeq2やedgeRなど)、パスウェイエンリッチメント(GAGE R)、pathview Rを使用した統計とパスウェイの自動解析のために完全に統合されている。
MetaCerberusはPythonで書かれており、BSD-3ライセンスの下で配布されている。MetaCerberusのソースコードはPython 3と互換性があり、Mac OS XとLinuxの両方で動作する::https://github.com/raw-lab/metacerberus。MetaCerberusはbiocondaを使って簡単にインストールすることもできる: mamba create -n metacerberus -c bioconda -c conda-forge metacerberus。
Our tool for rapid functional annotation for phages, viruses, bacteria, archaea, eukaryotes, and communities is finally published.
— Richard Allen White III, PhD (@raw9371) 2024年3月1日
Supports a variety of databases: KEGG/KO, FOAM, COG, PHROG, VOG, pVOG, CAZy, EC.
Updates soon for a variety of other dbshttps://t.co/D9m1hRxYId
レポジトリより
MetaCerberusは、生のショットガン・メタオミクスシーケンスデータをナリッジに変換する。メタゲノムFunctional Ontology Assignments for Metagenomes(FOAM)である。KEGG、CAZy、VOG/pVOG、PHROG、COGデータベースを生態系全体のメタボローム解析のための隠れマルコフモデル(HMM)を介して汎用的に解析するためのスタートからゴールまでのPythonコードとして機能する。MetaCerberusは、DESeq2/EdgeRを使用した自動統計差分解析、GAGEを使用したパスウェイエンリッチメント解析、Pathview Rを使用したパスウェイの可視化も提供する。
インストール
Apple siliconのMacへの導入もサポートされている(レポジトリ参照)。ここではcondaを使ってubuntu20.04 LTSに導入した。
依存
- python >= 3.8
-
fastqc
-
fastp
-
porechop
-
bbmap
-
prodigal
-
HMMER
mamba create -n metacerberus python=3.10 -y
conda activate metacerberus
mamba install -c conda-forge -c bioconda metacerberus -y
> metacerberus.py -h
usage: metacerberus.py [-c CONFIG] [--prodigal PRODIGAL] [--fraggenescan FRAGGENESCAN] [--super SUPER] [--prodigalgv PRODIGALGV] [--phanotate PHANOTATE] [--protein PROTEIN] [--rollup ROLLUP] [--illumina | --nanopore | --pacbio]
[--setup] [--uninstall] [--dir_out DIR_OUT] [--meta] [--scaffolds] [--minscore MINSCORE] [--evalue EVALUE] [--skip_decon] [--skip_pca] [--cpus CPUS] [--chunker CHUNKER] [--grouped] [--replace] [--keep]
[--hmm HMM] [--class CLASS] [--tmpdir TMPDIR] [--version] [-h] [--adapters ADAPTERS] [--qc_seq QC_SEQ]
options:
--illumina Specifies that the given FASTQ files are from Illumina
--nanopore Specifies that the given FASTQ files are from Nanopore
--pacbio Specifies that the given FASTQ files are from PacBio
Required arguments
At least one sequence is required.
<accepted formats {.fastq .fasta .faa .fna .ffn}>
Example:
> metacerberus.py --prodigal file1.fasta
> metacerberus.py --config file.config
*Note: If a sequence is given in .fastq format, one of --nanopore, --illumina, or --pacbio is required.:
-c CONFIG, --config CONFIG
Path to config file, command line takes priority
--prodigal PRODIGAL Prokaryote nucleotide sequence (includes microbes, bacteriophage)
--fraggenescan FRAGGENESCAN
Eukaryote nucleotide sequence (includes other viruses, works all around for everything)
--super SUPER Run sequence in both --prodigal and --fraggenescan modes
--prodigalgv PRODIGALGV
Giant virus nucleotide sequence
--phanotate PHANOTATE
Phage sequence
--protein PROTEIN, --amino PROTEIN
Protein Amino Acid sequence
--rollup ROLLUP Rolled up annotations from HMMER
optional arguments:
--setup Set this flag to ensure dependencies are setup [False]
--uninstall Set this flag to remove downloaded databases and FragGeneScan+ [False]
--dir_out DIR_OUT path to output directory, creates "pipeline" folder. Defaults to current directory. [./results-metacerberus]
--meta Metagenomic nucleotide sequences (for prodigal) [False]
--scaffolds Sequences are treated as scaffolds [False]
--minscore MINSCORE Score cutoff for parsing HMMER results [60]
--evalue EVALUE E-value cutoff for parsing HMMER results [1e-09]
--skip_decon Skip decontamination step. [False]
--skip_pca Skip PCA. [False]
--cpus CPUS Number of CPUs to use per task. System will try to detect available CPUs if not specified [Auto Detect]
--chunker CHUNKER Split files into smaller chunks, in Megabytes [Disabled by default]
--grouped Group multiple fasta files into a single file before processing. When used with chunker can improve speed
--replace Flag to replace existing files. [False]
--keep Flag to keep temporary files. [False]
--hmm HMM Specify a coma seperated list of databases for HMMER. Use quotes around the list, or avoid spaces. (KOFam_all, KOFam_eukaryote, KOFam_prokaryote, COG, CAZy, PHROG, COG) [KOFam_all]
--class CLASS path to a tsv file which has class information for the samples. If this file is included scripts will be included to run Pathview in R
--tmpdir TMPDIR temp directory for RAY [system tmp dir]
--version, -v show the version number and exit
-h, --help show this help message and exit
--adapters ADAPTERS FASTA File containing adapter sequences for trimming
--qc_seq QC_SEQ FASTA File containing control sequences for decontamination
Args that start with '--' can also be set in a config file (specified via -c). Config file syntax allows: key=value, flag=true, stuff=[a,b,c] (for details, see syntax at https://goo.gl/R74nmi). In general, command-line values override
config file values which override defaults.
データベース
OSFで管理されている。--setupオプションでダウンロード出来る。
metacerberus.py --setup
- --setup Set this flag to ensure dependencies are setup [False]
- --uninstall Set this flag to remove downloaded databases and FragGeneScan+ [False]
ダウンロードには40分ほどかかった。
実行方法
ゲノムアセンブリのfastaファイル、プロテオームのfastaファイル、Illumina, PacBio, Oxford Nanoporeなどの主要なHTSのfastqフォーマットに対応している。
1、fastaファイルを使用 : ゲノムアセンブリを指定してゲノムの機能的アノテーションを行う(.fasta, .fa, .fna, .ffn)。遺伝子予測して得たprotein fastaにも対応。
バクテリアやバクテリオファージなら”--prodigal”でfastaを指定する。真核生物やバクテリオファージ以外のウィルスなら”--fraggenescan”でfastaを指定する。”--hmm”でデータベースを指定する。
#bacteriaの例
#全データベース指定
metacerberus.py --prodigal lambda.fna --hmm "KOFam_all, COG, VOG, PHROG, CAZy" --dir_out lambda_dir
#KOFam_all DBのみ
metacerberus.py --prodigal lambda.fna --hmm "KOFam_all" --dir_out lambda_ko-only_dir
#KOFam_prokaryote DBのみ
metacerberus.py --prodigal ecoli.fna --hmm "KOFam_prokaryote" --dir_out ecoli_ko-only_dir
#KOFam_eukaryote DBのみ
metacerberus.py --fraggenescan human.fna --hmm "KOFam_eukaryote" --dir_out human_ko-only_dir
#Viral/Phage DBのみ
metacerberus.py --prodigal lambda.fna --hmm "VOG, PHROG" --dir_out lambda_vir-only_dir
#複数fasta、全データベース指定(4つ以上あるなら)
metacerberus.py --prodigal fasta_dir/ --hmm "KOFam_all, COG, VOG, PHROG, CAZy" --dir_out lambda_dir
- --hmm Specify a coma seperated list of databases for HMMER. Use quotes around the list, or avoid spaces. (KOFam_all, KOFam_eukaryote, KOFam_prokaryote, COG, CAZy, PHROG, COG) [KOFam_all]
- --dir_out path to output directory, creates "pipeline" folder. Defaults to current directory. [./results-metacerberus]
- --prodigal Prokaryote nucleotide sequence (includes microbes, bacteriophage)
2、fastqを使用 : fastqを指定して(メタ)コミュニティの機能的プロファイリングを行う(.fastq format)。非圧縮のfastqを認識する。
リードを指定した場合、リード全ての機能的アノテーションが行われる。
#illlumina fastq
#バクテリア、アーキア、バクテリオファージのmetagenomes/metatranscriptomes
metacerberus.py --prodigal [input_folder] --illumina --meta --dir_out [out_folder]
#真核生物とウィルスのmetagenomes/metatranscriptomes
metacerberus.py --fraggenescan [input_folder] --illumina --meta --dir_out [out_folder]
(レポジトリではPacBioとNanoporeのリードを使う例も書かれている。)
DRAMより遥かに高速化されているが、それでもHmmerのサーチとフィルタリングにはそれなりの時間がかかる。細菌ゲノム1つを使ってランすると30~40分ほどかかり、細菌ゲノム50個ほど使うと3~4時間かかった(結果をパースしたりsummaryを作るために時間がかかる)。さらに100MBx2のfastqを1組だけ使うと30分ほどかかった(いずれも3990X使用、デフォルトで全CPUが使用される)。デフォルトでクラスタに対応しているので、よりリッチな計算機環境でランすることが推奨される。
出力例
--dir_outで出力ディレクトリを指定しなかった場合、results-metacerberus/が作成され、ステップごとにサブディスプレイに結果が保存される。
results-metacerberus/
step_08-hmmer/
step_09-parse/
step_10-visualizeData/prodigal~
sunburst_KEGG.html
クリックする事でインタラクティブに操作可能。
(COGとFOAMもKEGGと同様にプロットされる、metatranscriptomeやmetagenomeでもこのプロットは得られるので、コミュニティの中でエンリッチされてる機能的アノテーションを推測できる)
step_10-visualizeData/prodigal~/annotation_summary.tsv
step_10-visualizeData/combine/
stats.html
アノテーションされたタンパク質数とタンパク質長、アノテーションデータベースごとのアノテーション数などのstats。
4つ以上のサンプルを使ってランした場合、各アノーテーションごとのサンプルの類似性を調べるためのPCA plotなども出力される。step_10-visualizeData/にはサンプルごとのサブディレクトリができ、combineのファイル構造も変化する。
step_10-visualizeData/combine/
stats.html - サンプルごとの統計。画像はゲノムそれぞれのデータベースごとのアノテーションカウント値。
アノテーションそれぞれについて、インタラクティブなPCA plot.htmlも出力される。
その他
- HMMファイルを処理した後、MetaCerberusはKEGG/FOAMからKO(KEGG Orthology)カウントテーブルを計算し、GAGEとPathViewで処理する。パスウェイエンリッチメント解析にはGAGEを、代謝パスウェイの可視化にはPathViewが推奨される。この解析を実行するには、--class オプションで "class "ファイルが必要である。また、このタイプの解析には少なくとも4つのサンプルを使用する必要がある。
- MetaCerberusはRAYによるマルチプロセッシング/マルチコンピューティングに対応している。ジョブはlocal Ray instanceとしてwebブラウザ上で管理できる。
- 真核生物では、珪藻でテストされている。しかし、他の真核生物についてもベータテスターが必要。
- マルチコアの計算機で複数サンプルを提供してランした場合、計算が終わったサンプルからstepごとにサブディレクトリに保存されていく。全部のサンプルの終了までに時間差が生じる。
コメント
これまでのメタコミュニティの機能的アノテーションを行うツールは、インストールでエラーが発生しやすい(snakemakeやnextflowの環境が作れないことも含む)、データベースのダウンロードエラーが起きやすい( NCBIなどがデータのURLを変更するため)、などでトラブルが高確率で起きるのがネックで、使えるようになるまで1日溶けることも珍しくありませんでしたが、MetaCerberusは一度もエラーの発生が無く最後までランできました。非常に使いやすい印象です。注意点として、テストのために1つのワークステーションで並行して2つのジョブを実行すると、後から実行した方のHMMプロファイリングがスキップされる現象が発生しました。ジョブ管理されているはずですが、1つずつランした方が良いかもしれません。
引用
MetaCerberus: distributed highly parallelized HMM-based processing for robust functional annotation across the tree of life
Jose L Figueroa, Eliza Dhungel, Madeline Bellanger, Cory Brouwer, Richard Allen White, III
Bioinformatics, Published: 29 February 2024
関連