Evident は、マイクロバイオーム データに対して効果サイズと検出力の計算を実行するツールです。
次のコマンドを使用して、PyPi から Evident の最新バージョンをインストールできます。
pip install evident
Evident は QIIME 2 プラグインとしても利用できます。 QIIME 2 環境がアクティブ化されていることを確認し、上記と同じインストール コマンドを実行してください。
Evident が正しくインストールされていることを確認するには、コマンド ラインから次のコマンドを実行します。
qiime evident --help
Evident が正しくインストールされている場合は、次のような内容が表示されるはずです。
Usage: qiime evident [OPTIONS] COMMAND [ARGS]...
Description: Perform power analysis on microbiome data. Supports
calculation of effect size given metadata covariates and supporting
visualizations.
Plugin website: https://github.com/biocore/evident
Getting user support: Please post to the QIIME 2 forum for help with this
plugin: https://forum.qiime2.org
Options:
--version Show the version and exit.
--example-data PATH Write example data and exit.
--citations Show citations and exit.
--help Show this message and exit.
Commands:
multivariate-effect-size-by-category
Multivariate data effect size by category.
multivariate-power-analysis Multivariate data power analysis.
plot-power-curve Plot power curve.
univariate-effect-size-by-category
Univariate data effect size by category.
univariate-power-analysis Univariate data power analysis.
univariate-power-analysis-repeated-measures
Univariate data power analysis for repeated
measures.
visualize-results Tabulate evident results.
Evident は、次の 2 種類のデータを操作できます。
単変量データはアルファ多様性になる可能性があります。対数比、PCoA 座標など。多変量データは通常、ベータ ダイバーシティ距離行列です。
このチュートリアルではアルファ ダイバーシティ値を使用しますが、コマンドはベータ ダイバーシティ距離行列の場合とほぼ同じです。
まず、Python を開いて Evident をインポートします
import evident
次に、多様性ファイルとサンプル メタデータを読み込みます。
import pandas as pd
metadata = pd . read_table ( "data/metadata.tsv" , sep = " t " , index_col = 0 )
faith_pd = metadata [ "faith_pd" ]
Evident の主なデータ構造は「DataHandler」です。これは、Evident が電力計算用のデータとメタデータを保存する方法です。アルファ ダイバーシティの例では、Evident からUnivariateDataHandler
クラスを読み込みます。 UnivariateDataHandler
多様性値を含む pandas シリーズと、サンプル メタデータを含む pandas DataFrame を入力として受け取ります。デフォルトでは、Evident は最大 5 レベルのメタデータ列のみを考慮します。 5 つを超えるグループを持つ列は技術的な列 (例: 件名 ID) を示す可能性があるため、デフォルト値として 5 つのサンプルを選択します。この動作を変更するには、 max_levels_per_category
引数の値を指定します。この値を -1 に設定すると、列を削除するレベルの上限を設けなくなります。さらに、Evident は、サンプルが 3 つ未満で表されるカテゴリ レベルを考慮しません。サンプル数が 3 つ未満のレベルでは分散が大きくなる可能性があるため、デフォルト値として 3 つのサンプルを選択します。この動作を変更するには、 min_count_per_level
引数を使用します (1 より大きい必要があります)。
adh = evident . UnivariateDataHandler ( faith_pd , metadata )
次に、2 つのサンプル グループ間の多様性の差の効果量を取得したいとします。この例では、クローン病患者の 2 つのグループを比較するメタデータの「分類」列があります。まず、これら 2 つのグループ間の信仰の PD の平均を調べます。
metadata . groupby ( "classification" ). agg ([ "count" , "mean" , "std" ])[ "faith_pd" ]
その結果、
count mean std
classification
B1 99 13.566110 3.455625
Non-B1 121 9.758946 3.874911
この 2 つのグループの間にはかなり大きな違いがあるようです。ここで私たちがやりたいのは、この差の効果量を計算することです。 2 つのグループのみを比較しているため、コーエンの d を使用できます。 Evident は、計算する正しい効果サイズを自動的に選択します。カテゴリが 2 つしかない場合はコーエンの d、カテゴリが 2 つ以上ある場合はコーエンの f のいずれかです。
adh . calculate_effect_size ( column = "classification" )
これは、効果サイズが 1.03 であることを示しています。
ここで、この差を 0.8 の検出力で検出できるようにするために必要なサンプルの数を確認したいとします。 Evident を使用すると、検出力分析のアルファ、検出力、または合計観測値の引数を簡単に指定できます。次に、これらの結果を検出力曲線としてプロットして、データを要約します。
from evident . plotting import plot_power_curve
import numpy as np
alpha_vals = [ 0.01 , 0.05 , 0.1 ]
obs_vals = np . arange ( 10 , 101 , step = 10 )
results = adh . power_analysis (
"classification" ,
alpha = alpha_vals ,
total_observations = obs_vals
)
plot_power_curve ( results , target_power = 0.8 , style = "alpha" , markers = True )
このプロットを検査すると、異なる有意性と検出力レベルで同じ効果量を観察するために収集する必要があるサンプルの数がわかります。
Evident を使用すると、ユーザーは Bokeh を使用してエフェクト サイズとパワーの計算をインタラクティブに実行できます。 Bokeh アプリを作成するには、次のコマンドを使用します。
from evident . interactive import create_bokeh_app
create_bokeh_app ( adh , "app" )
これにより、必要なファイルが新しいディレクトリapp/
に保存されます。 app/
含むディレクトリ ( app/
自体ではありません) に移動し、ターミナルから次のコマンドを実行します。
bokeh serve --show app
これにより、ブラウザ ウィンドウが開き、インタラクティブな視覚エフェクトが表示されます。 「概要」タブには、データと効果のサイズ/威力の概要が表示されます。バイナリ カテゴリとマルチクラス カテゴリの両方のメタデータの効果サイズを示す棒グラフ (降順でランク付け) が表示されます。右側は、メタデータ列の検出力分析を示す動的検出力曲線です。タブの左側にあるコントロール パネルを使用して、有意水準、合計観察範囲、および選択した列を変更できます。
上部のバーを使用して「データ」タブに切り替えます。ここでは、各メタデータ カテゴリのデータの箱ひげ図を確認できます。ドロップダウンから列を選択して、表示するデータを変更します。 [散布点を表示] チェックボックスをオンにして、生データを箱ひげ図にオーバーレイすることもできます。
エビデントは Python を使用して電力計算を実行するため、現時点ではこの対話型アプリをスタンドアロン Web ページに埋め込むことはできないことに注意してください。
Evident は、マイクロバイオーム データ分析の人気のある QIIME 2 フレームワークのサポートを提供します。このチュートリアルでは、コマンドラインでの QIIME 2 の使用に慣れていることを前提としています。そうでない場合は、Evident を始める前に優れたドキュメントを読むことをお勧めします。 Evident は QIIME 2 バージョン 2021.11 でのみテストされていることに注意してください。別のバージョンを使用していてエラーが発生した場合は、問題を通じてお知らせください。
電力を計算するには、次のコマンドを実行できます。
qiime evident univariate-power-analysis
--m-sample-metadata-file metadata.qza
--m-sample-metadata-file faith_pd.qza
--p-data-column faith_pd
--p-group-column classification
--p-alpha 0.01 0.05 0.1
--p-total-observations $(seq 10 10 100)
--o-power-analysis-results results.qza
内部でマージされるため、QIIME 2 には複数のサンプル メタデータ ファイルが提供されています。 --p-data-column
の値を指定して、マージされたメタデータのどの列に数値が含まれているかを Evident が認識できるようにする必要があります (これは単変量分析の場合にのみ必要です)。この場合、 faith_pd.qza
ベクトルの名前はfaith_pd
なので、それを入力として使用します。
$(seq 10 10 100)
使用して--p-total-observations
引数に入力を提供したことに注目してください。 seq
、一連の数値を生成する UNIX 系システム上のコマンドです。この例では、 seq
使用して 10 から 100 までの値を 10 間隔 (10、20、...、100) で生成しました。
この結果アーティファクトを使用すると、検出力曲線を視覚化し、検出力が観測数と有意水準によってどのように変化するかを把握できます。次のコマンドを実行します。
qiime evident plot-power-curve
--i-power-analysis-results results.qza
--p-target-power 0.8
--p-style alpha
--o-visualization power_curve.qzv
view.qiime2.org でこの視覚化をブラウザで直接表示できます。
Evident は、joblib を介して効果サイズ計算の並列化をサポートします。並列化は、 effect_size_by_category
およびpairwise_effect_size_by_category
を使用する場合、異なる列にわたって実行されます。関心のあるサンプルやさまざまなメタデータ カテゴリが多数ある場合は、並列化を検討してください。デフォルトでは、並列化は実行されません。
Python の場合:
from evident . effect_size import effect_size_by_category
effect_size_by_category (
adh ,
[ "classification" , "cd_resection" , "cd_behavior" ],
n_jobs = 2
)
QIIME 2 の場合:
qiime evident univariate-effect-size-by-category
--m-sample-metadata-file metadata.qza
--m-sample-metadata-file faith_pd.qza
--p-data-column faith_pd
--p-group-columns classification sex cd_behavior
--p-n-jobs 2
--o-effect-size-results alpha_effect_sizes.qza
Evident でバグが発生した場合は、GitHub の問題を投稿してください。できるだけ早く対応いたします。私たちはあらゆるアイデアやドキュメントの更新/修正を歓迎します。Evident をより良くすることについて考えがある場合は、問題やプル リクエストを送信してください。
Evident の QIIME 2 バージョンに関する質問の場合は、QIIME 2 フォーラムへの投稿を検討してください。必要に応じて、コミュニティ プラグイン サポート ボードで問題をオープンし、@gibsramen をタグ付けできます。
仕事で Evident を使用する場合は、bioRxiv のプレプリントを引用してください。