macでインフォマティクス

macでインフォマティクス

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

メタゲノムの微生物の存在/不在を検出するANIベースの統計テスト YACHT

 

 採取したDNAから環境に関連する微生物群集を研究するメタゲノミクスにおいて、最も基本的な計算タスクの1つは、リファレンスデータベースから、与えられたサンプルメタゲノムにどのゲノムが存在するか、または存在しないかを決定することである。この問いに答えるツールは存在するが、これまでの既存のアプローチはすべて点推定値であり、それに関連する信頼性や不確実性については得られない。このため、特に低存在量の生物については、誤った予測の「ノイズの多いテイル」に存在することが多いため、実務者はこれらのツールからの結果を解釈する際に困難を感じることになっている。さらに、リファレンスデータベースは不完全であることが多く、環境由来のメタゲノムには、公共のゲノムの正確なレプリカが含まれていることはほとんどない、という事実を考慮したツールは今のところ存在しない。本研究では、YACHT : Y es/No A nswers to C ommunity membership via H ypothesis T esting というアルゴリズムを導入することで、これらの問題に対する解決策を提示する。このアプローチは、リファレンスゲノムとサンプルゲノムの間の配列の乖離を、平均塩基同一性と不完全な配列の深さの観点から説明する統計的枠組みを導入し、サンプルにリファレンスゲノムが存在するか否かを決定する仮説検定を提供するものである。本アプローチを紹介した後、その統計的検出力を定量化し、パラメータを変化させた場合にどのように変化するかを理論的に定量化する。その後、シミュレーションとリアルデータの両方を用いた大規模な実験を行い、本アプローチの精度とスケーラビリティを確認する。このアプローチを実装したコードと、実施したすべての実験は、https://github.com/KoslickiLab/YACHT で入手できる。

 

インストール

レポジトリで推奨されている通り、環境を作って導入した。

Github

mamba create -n yacht python
conda activate yacht
git clone https://github.com/KoslickiLab/YACHT.git
cd YACHT
mamba install -c conda-forge -c bioconda -c anaconda --file requirements.txt
mamba install pandas #導入されなかった

> python run_YACHT.py -h

usage: run_YACHT.py [-h] --ref_matrix REF_MATRIX --ksize KSIZE --sample_file SAMPLE_FILE [--ani_thresh ANI_THRESH] [--significance SIGNIFICANCE] [--min_coverage MIN_COVERAGE] --outfile OUTFILE

 

This script estimates the abundance of microorganisms from a reference database matrix and metagenomic sample.

 

options:

  -h, --help            show this help message and exit

  --ref_matrix REF_MATRIX

                        Reference database matrix in npz format (default: None)

  --ksize KSIZE         Size of kmers used in sketch (default: None)

  --sample_file SAMPLE_FILE

                        Metagenomic sample in .sig format (default: None)

  --ani_thresh ANI_THRESH

                        mutation cutoff for species equivalence. (default: 0.95)

  --significance SIGNIFICANCE

                        Minimum probability of individual true negative. (default: 0.99)

  --min_coverage MIN_COVERAGE

                        To compute false negative weight, assume each organism has this minimum coverage in sample. Should be between 0 and 1. (default: 1)

  --outfile OUTFILE     csv destination for results (default: None)

 

 

データベース

YACHTはsourmashのGTDBデータベースを使用することを提案している。作成済みのR207データベースをダウンロードする。

wget https://farm.cse.ucdavis.edu/~ctbrown/sourmash-db/gtdb-rs207/gtdb-rs207.genomic-reps.dna.k31.zip

カスタムデータベースを使用する場合、そのリファレンスデータベースのSourmashスケッチを作成する必要がある。

cd <change>/<to>/<fasta_dir>/
sourmash sketch dna -f -p k=31,scaled=1000,abund *.fasta -o ../training_database.sig.zip

 

 

実行方法

1、YACHTを使うにはまずサンプルのスケッチを作成する。

sourmash sketch dna -f -p k=31,scaled=1000,abund *.fasta -o sample.sig.zip

 

2、スケッチファイルをYACHTで使用可能な形式に変換する。

python make_training_data_from_sketches.py --ref_file 'gtdb-rs207.genomic-reps.dna.k31.zip' --ksize 31 --out_prefix 'gtdb_ani_thresh_0.95' --ani_thresh 0.95

gtdb_ani_thresh_0.95processed_org_idx.csvができる。

このコマンドでは、ANI閾値に近い2つの生物で「区別がつかない」と判断した場合は、そのうちの1つを削除する。これは"--ani_thresh"オプションで制御できる。ANI値以上だと、最大のものだけがリファレンス辞書マトリックスに保持される(デフォルトは0.95)。

 

3、YACHTの実行

python run_YACHT.py --ref_matrix gtdb_ani_thresh_0.95ref_matrix_processed.npz --sample_file sample.sig.zip --ani_thresh 0.95 --significance 0.99 --min_coverage 1 --outfile 'yacht_results.csv' --ksize 31

"--significance"パラメータは信頼度に近く、その生物が存在することをどの程度確信したいのか、で調整する。高いほど精度が上がり偽陰性も増え、低いほど感度が上がり偽陽性も強くなる。"--min_coverage"パラメータは、サンプルに含まれるk-mer(全ゲノム)のうち、何%([0,1]の値)がシークエンシングされていれば、その生物が存在すると判断できるかを指定するものになる。1に設定すると通常は安全だが、カバレッジが非常に低いサンプルの場合は、この値を下げることが推奨される。高く設定すると偽陰性が多くなり、低く設定するとかなり急速に偽陽性が多くなる(マニュアルより)。

 

出力例

yacht_results.csv

  • organism: 生物名
  • in_sample_est: この値は0または1を取る。0であればこの生物がサンプルに存在すると主張するのに十分な証拠がなかったことを示している。
  • p_vals帰無仮説を仮定して、与えられたANI閾値でこの結果またはそれ以上の極端な結果が観察される確率を示す。
  • num_exclusive_kmers: この生物にいくつのk-mersが見つかり、他には見つからなかったか。
  • num_matches: この生物とサンプルで見つかったk-mer数
  • accept_threshold_*: 与えられたANI閾値で「存在する」と見なすには、この生物に何個のk-merが見つからなければならないか。
  • alt_confidence_mut_rate: 変異率(1-ANI)は、偽陽性と有意差1の偽陰性率を一致させるために必要な値。

 

引用
YACHT: an ANI-based statistical test to detect microbial presence/absence in a metagenomic sample

David Koslicki, Stephen White, Chunyu Ma, Alexei Novikov

bioRxiv. 2023 Apr 20;2023.04.18.537298

 

2024/01/26追記

YACHT: an ANI-based statistical test to detect microbial presence/absence in a metagenomic sample 
David Koslicki, Stephen White, Chunyu Ma, Alexei Novikov Author Notes
Bioinformatics, Published: 24 January 2024