Evident — это инструмент для расчета размера и мощности эффекта на данных микробиома.
Вы можете установить самую последнюю версию Evident из PyPi, используя следующую команду:
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 и т. д. Многомерные данные обычно представляют собой матрицу расстояний бета-разнесения.
В этом уроке мы будем использовать значения альфа-разнесения, но команды для матриц расстояний бета-разнесения почти такие же.
Сначала откройте 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 хранит данные и метаданные для расчетов мощности. Для нашего примера альфа-разнообразия мы загрузим класс UnivariateDataHandler
из Evident. UnivariateDataHandler
принимает в качестве входных данных серию pandas со значениями разнообразия и DataFrame pandas, содержащую образцы метаданных. По умолчанию Evident будет учитывать только столбцы метаданных с максимум 5 уровнями. Мы выбираем 5 образцов в качестве значения по умолчанию, поскольку столбцы с более чем 5 группами могут указывать на технические столбцы (например, идентификатор субъекта). Чтобы изменить это поведение, укажите значение аргумента max_levels_per_category
. Вы можете установить это значение равным -1, чтобы не указывать верхний предел уровней, на которых можно удалить столбец. Кроме того, Evident не будет учитывать уровни категорий, представленные менее чем тремя образцами. Мы выбираем 3 выборки в качестве значения по умолчанию, поскольку уровни с менее чем 3 выборками могут иметь высокие отклонения. Чтобы изменить это поведение, используйте аргумент min_count_per_level
(должен быть > 1).
adh = evident . UnivariateDataHandler ( faith_pd , metadata )
Далее, допустим, мы хотим получить величину эффекта различий в разнообразии между двумя группами выборок. В нашем примере есть столбец «классификации» метаданных, в котором сравниваются две группы пациентов с болезнью Крона. Сначала мы посмотрим на среднее значение 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
Похоже, между этими двумя группами существует довольно большая разница. Теперь нам хотелось бы вычислить величину эффекта этой разницы. Поскольку мы сравниваем только две группы, мы можем использовать d Коэна. Evident автоматически выбирает правильную величину эффекта для расчета — либо d Коэна, если категорий только две, либо 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, используйте следующую команду:
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. Обратите внимание, что мы тестировали 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
. Рассмотрите возможность распараллеливания, если у вас много образцов и/или множество различных категорий метаданных, представляющих интерес. По умолчанию распараллеливание не выполняется.
С Питоном:
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.