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 좌표 등. 다변량 데이터는 일반적으로 베타 다양성 거리 행렬입니다.
이 튜토리얼에서는 알파 다양성 값을 사용하지만 명령은 베타 다양성 거리 행렬과 거의 동일합니다.
먼저 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 Series와 샘플 메타데이터가 포함된 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 )
다음으로 두 샘플 그룹 간의 다양성 차이의 효과 크기를 얻고 싶다고 가정해 보겠습니다. 우리의 예에는 크론병 환자 두 그룹을 비교하는 메타데이터 "분류" 열이 있습니다. 먼저 두 그룹 간의 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는 계산할 올바른 효과 크기를 자동으로 선택합니다(범주가 2개만 있는 경우 Cohen의 d, 2개보다 많은 경우 Cohen의 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
그러면 대화형 시각화가 포함된 브라우저 창이 열립니다. "요약" 탭에서는 데이터 개요와 효과 크기/강도를 제공합니다. 이진 및 다중 클래스 범주 모두에 대한 메타데이터 효과 크기를 보여주는 막대 그래프(내림차순으로 순위 지정)가 표시됩니다. 오른쪽에는 메타데이터 열에 대한 검정력 분석을 보여주는 동적 검정력 곡선이 있습니다. 탭 왼쪽에 있는 제어판을 사용하여 유의 수준, 전체 관찰 범위 및 선택한 열을 수정할 수 있습니다.
상단의 막대를 사용하여 "데이터" 탭으로 전환합니다. 여기에서 각 메타데이터 범주에 대한 데이터의 상자 그림을 볼 수 있습니다. 표시되는 데이터를 변경하려면 드롭다운에서 열을 선택하세요. 또한 "분산점 표시" 상자를 선택하여 원시 데이터를 상자 그림에 오버레이할 수도 있습니다.
Evidence는 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에 제공합니다. Evident가 병합된 메타데이터의 어느 열에 숫자 값이 포함되어 있는지 알 수 있도록 --p-data-column
에 대한 값을 제공해야 합니다(이는 단변량 분석에만 필요합니다). 이 경우 faith_pd.qza
벡터의 이름은 faith_pd
이므로 이를 입력으로 사용합니다.
--p-total-observations
인수에 입력을 제공하기 위해 $(seq 10 10 100)
어떻게 사용했는지 주목하세요. 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
사용할 때 여러 열에 걸쳐 병렬화가 수행됩니다. 관심 있는 샘플 및/또는 다양한 메타데이터 카테고리가 많은 경우 병렬화를 고려하십시오. 기본적으로 병렬화는 수행되지 않습니다.
파이썬의 경우:
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에서 사전 인쇄를 인용해 주세요.