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 可以對兩種類型的資料進行操作:
單變量資料可以是阿爾法多樣性。對數比率、PCoA 座標等。
在本教程中,我們將使用 alpha 多樣性值,但 beta 多樣性距離矩陣的指令幾乎相同。
首先,打開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 儲存功率計算資料和元資料的方式。對於我們的 alpha 多樣性範例,我們將從 Evident 載入UnivariateDataHandler
類別。 UnivariateDataHandler
將具有多樣性值的 pandas Series 和包含範例元資料的 pandas DataFrame 作為輸入。預設情況下,Evident 將只考慮最多 5 個層級的元資料列。我們選擇5個樣本作為預設值,因為超過5組的欄位可能表示技術列(例如主題ID)。若要修改此行為,請為max_levels_per_category
參數提供一個值。您可以將此值設為 -1,以不提供刪除列的等級上限。此外,Evident 不會考慮少於 3 個樣本代表的任何類別等級。我們選擇 3 個樣本作為預設值,因為少於 3 個樣本的水平可能會表現出較高的變異數。若要修改此行為,請使用min_count_per_level
參數(必須 > 1)。
adh = evident . UnivariateDataHandler ( faith_pd , metadata )
接下來,假設我們想要得到兩組樣本之間多樣性差異的效果量。在我們的範例中,元資料「分類」中有一個欄位比較兩組克隆氏症患者。首先,我們來看看這兩組之間 Faith 的 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
看來這兩個群體之間存在著相當大的差異。我們現在要做的是計算這種差異的影響大小。因為我們只比較兩組,所以我們可以使用 Cohen 的 d。 Evident 會自動選擇正確的效應大小進行計算 - 如果只有兩個類別,則選擇 Cohen's d;如果類別多於 2 個,則選擇 Cohen's f。
adh . calculate_effect_size ( column = "classification" )
這告訴我們效應量是 1.03。
現在假設我們想看看需要多少樣本才能以 0.8 的功效檢測到這種差異。 Evident 讓您輕鬆指定 alpha、功效或功效分析的總觀測值的參數。然後我們可以將這些結果繪製為功率曲線來總結數據。
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 來執行功效計算,因此目前無法將此互動式應用程式嵌入到獨立網頁中。
Evident 為流行的 QIIME 2 微生物組數據分析框架提供支援。在本教程中,我們假設您熟悉在命令列上使用 QIIME 2。如果沒有,我們建議您在開始使用 Evident 之前閱讀優秀的文件。請注意,我們僅在 QIIME 2 版本 2021.11 上測試了 Evident。如果您使用不同的版本並遇到錯誤,請透過問題告知我們。
要計算功率,我們可以執行以下命令:
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 (10, 20, ..., 100) 為間隔產生從 10 到 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 變得更好的想法,請提交問題和/或拉取請求。
如果您的問題與 QIIME 2 版本的 Evident 有關,請考慮在 QIIME 2 論壇上發佈。如果需要,您可以在社群插件支援板上提出問題並標記@gibsramen。
如果您在工作中使用 Evident,請引用我們在 bioRxiv 上的預印本。