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 坐标等。多元数据通常是 beta 多样性距离矩阵。
在本教程中,我们将使用 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 上的预印本。