macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

ゲノムからメタコミュニティの幅広いデータに対応したロバストな機能アノテーションを行うツール MetaCerberus

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 XLinuxの両方で動作する::https://github.com/raw-lab/metacerberus。MetaCerberusはbiocondaを使って簡単にインストールすることもできる: mamba create -n metacerberus -c bioconda -c conda-forge metacerberus。

 

 

レポジトリより

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

Github

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オプションでダウンロード出来る。

https://osf.io/3uz2j/

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

 

関連

https://kazumaxneo.hatenablog.com/entry/2022/02/10/000615