Evident é uma ferramenta para realizar cálculos de tamanho de efeito e potência em dados de microbioma.
Você pode instalar a versão mais atualizada do Evident do PyPi usando o seguinte comando:
pip install evident
Evident também está disponível como um plugin QIIME 2. Certifique-se de ter ativado um ambiente QIIME 2 e execute o mesmo comando de instalação acima.
Para verificar se o Evident foi instalado corretamente, execute o seguinte na linha de comando:
qiime evident --help
Você deverá ver algo assim se o Evident estiver instalado corretamente:
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.
O Evident pode operar em dois tipos de dados:
Dados univariados podem ser diversidade alfa. razões logarítmicas, coordenadas PCoA, etc. Os dados multivariados são geralmente uma matriz de distância de diversidade beta.
Para este tutorial usaremos valores de diversidade alfa, mas os comandos são quase os mesmos para matrizes de distância de diversidade beta.
Primeiro, abra o Python e importe o Evident
import evident
Em seguida, carregue seu arquivo de diversidade e metadados de amostra.
import pandas as pd
metadata = pd . read_table ( "data/metadata.tsv" , sep = " t " , index_col = 0 )
faith_pd = metadata [ "faith_pd" ]
A principal estrutura de dados do Evident é o 'DataHandler'. É assim que o Evident armazena os dados e metadados para cálculos avançados. Para nosso exemplo de diversidade alfa, carregaremos a classe UnivariateDataHandler
do Evident. UnivariateDataHandler
toma como entrada a série pandas com os valores de diversidade e o DataFrame do pandas contendo os metadados de amostra. Por padrão, o Evident considerará apenas colunas de metadados com, no máximo, 5 níveis. Escolhemos 5 amostras como valor padrão porque colunas com mais de 5 grupos podem ser indicativas de colunas técnicas (por exemplo, ID do assunto). Para modificar esse comportamento, forneça um valor para o argumento max_levels_per_category
. Você pode definir esse valor como -1 para não fornecer um limite superior de níveis nos quais uma coluna será descartada. Além disso, a Evident não considerará nenhum nível de categoria representado por menos de 3 amostras. Escolhemos 3 amostras como valor padrão porque níveis com menos de 3 amostras podem apresentar variações altas. Para modificar esse comportamento, use o argumento min_count_per_level
(deve ser > 1).
adh = evident . UnivariateDataHandler ( faith_pd , metadata )
A seguir, digamos que queremos obter o tamanho do efeito das diferenças de diversidade entre dois grupos de amostras. Temos em nosso exemplo uma coluna na “classificação” de metadados comparando dois grupos de pacientes com doença de Crohn. Primeiro, veremos a média do PD de Faith entre esses dois grupos.
metadata . groupby ( "classification" ). agg ([ "count" , "mean" , "std" ])[ "faith_pd" ]
o que resulta em
count mean std
classification
B1 99 13.566110 3.455625
Non-B1 121 9.758946 3.874911
Parece que há uma grande diferença entre esses dois grupos. O que gostaríamos de fazer agora é calcular o tamanho do efeito dessa diferença. Como estamos comparando apenas dois grupos, podemos usar o d de Cohen. O Evident escolhe automaticamente o tamanho do efeito correto para calcular - o d de Cohen se houver apenas duas categorias ou o f de Cohen se houver mais de 2.
adh . calculate_effect_size ( column = "classification" )
Isso nos diz que nosso tamanho de efeito é 1,03.
Agora digamos que queremos ver quantas amostras precisamos para detectar essa diferença com um poder de 0,8. Evidente permite especificar facilmente argumentos para observações alfa, de potência ou total para análise de potência. Podemos então representar graficamente esses resultados como uma curva de potência para resumir os dados.
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 )
Quando inspecionamos esse gráfico, podemos ver quantas amostras precisaríamos coletar para observar o mesmo tamanho de efeito em diferentes níveis de significância e poder.
O Evident permite que os usuários executem interativamente cálculos de tamanho e potência do efeito usando Bokeh. Para criar um aplicativo Bokeh, use o seguinte comando:
from evident . interactive import create_bokeh_app
create_bokeh_app ( adh , "app" )
Isso salvará os arquivos necessários em um novo diretório app/
. Navegue até o diretório que contém app/
( não app/
em si) e execute este comando em seu terminal:
bokeh serve --show app
Isso deve abrir uma janela do navegador com visualizações interativas. A guia "Resumo" fornece uma visão geral dos dados e dos tamanhos/potência do efeito. São mostrados gráficos de barras que mostram os tamanhos dos efeitos dos metadados para categorias binárias e multiclasse (classificadas em ordem decrescente). À direita está uma curva de potência dinâmica mostrando a análise de potência para colunas de metadados. O nível de significância, o intervalo total de observação e as colunas escolhidas podem ser modificados usando o painel de controle no lado esquerdo da guia.
Mude para a guia “Dados” usando a barra na parte superior. Aqui você pode ver boxplots dos dados para cada categoria de metadados. Selecione uma coluna no menu suspenso para alterar quais dados são mostrados. Você também pode marcar a caixa "Mostrar pontos de dispersão" para sobrepor os dados brutos nos boxplots.
Observe que, como o evidente usa Python para realizar os cálculos de potência, no momento não é possível incorporar este aplicativo interativo em uma página da web independente.
Evident fornece suporte para a popular estrutura QIIME 2 de análise de dados de microbioma. Neste tutorial, presumimos que você esteja familiarizado com o uso do QIIME 2 na linha de comando. Caso contrário, recomendamos que você leia a excelente documentação antes de começar a usar o Evident. Observe que testamos o Evident apenas no QIIME 2 versão 2021.11. Se você estiver usando uma versão diferente e encontrar um erro, informe-nos por meio de um problema.
Para calcular a potência, podemos executar o seguinte comando:
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
Fornecemos vários arquivos de metadados de amostra para o QIIME 2 porque eles são mesclados internamente. Você deve fornecer um valor para --p-data-column
para que o Evident saiba qual coluna nos metadados mesclados contém os valores numéricos (isso só é necessário para análise univariada). Neste caso, o nome do vetor faith_pd.qza
é faith_pd
então usamos isso como entrada.
Observe como usamos $(seq 10 10 100)
para fornecer informações para o argumento --p-total-observations
. seq
é um comando em sistemas do tipo UNIX que gera uma sequência de números. No nosso exemplo, usamos seq
para gerar os valores de 10 a 100 em intervalos de 10 (10, 20, ..., 100).
Com este artefato de resultados, podemos visualizar a curva de poder para ter uma noção de como o poder varia com o número de observações e o nível de significância. Execute o seguinte comando:
qiime evident plot-power-curve
--i-power-analysis-results results.qza
--p-target-power 0.8
--p-style alpha
--o-visualization power_curve.qzv
Você pode visualizar esta visualização em view.qiime2.org diretamente em seu navegador.
Evident fornece suporte para paralelizar cálculos de tamanho de efeito por meio de joblib. A paralelização é executada em diferentes colunas ao usar effect_size_by_category
e pairwise_effect_size_by_category
. Considere a paralelização se você tiver muitas amostras e/ou muitas categorias de metadados de interesse diferentes. Por padrão, nenhuma paralelização é executada.
Com Python:
from evident . effect_size import effect_size_by_category
effect_size_by_category (
adh ,
[ "classification" , "cd_resection" , "cd_behavior" ],
n_jobs = 2
)
Com 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
Se você encontrar um bug no Evident, poste um problema no GitHub e resolveremos isso o mais rápido possível. Agradecemos quaisquer ideias ou atualizações/correções de documentação, portanto, envie um problema e/ou uma solicitação de pull se você tiver ideias sobre como melhorar o Evident.
Se sua dúvida for sobre a versão QIIME 2 do Evident, considere postar no fórum QIIME 2. Você pode abrir um problema no quadro de suporte do plugin da comunidade e marcar @gibsramen, se necessário.
Se você usa Evident em seu trabalho, cite nossa pré-impressão no bioRxiv.