Evident ist ein Tool zur Durchführung von Effektgrößen- und Leistungsberechnungen für Mikrobiomdaten.
Sie können die aktuellste Version von Evident von PyPi mit dem folgenden Befehl installieren:
pip install evident
Evident ist auch als QIIME 2-Plugin verfügbar. Stellen Sie sicher, dass Sie eine QIIME 2-Umgebung aktiviert haben und führen Sie denselben Installationsbefehl wie oben aus.
Um zu überprüfen, ob Evident korrekt installiert wurde, führen Sie Folgendes über die Befehlszeile aus:
qiime evident --help
Wenn Evident korrekt installiert wurde, sollte etwa Folgendes angezeigt werden:
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 kann mit zwei Arten von Daten arbeiten:
Univariate Daten können Alpha-Diversität sein. Log-Verhältnisse, PCoA-Koordinaten usw. Multivariate Daten sind normalerweise eine Beta-Diversity-Distanzmatrix.
Für dieses Tutorial verwenden wir Alpha-Diversity-Werte, die Befehle sind jedoch für Beta-Diversity-Distanzmatrizen nahezu identisch.
Öffnen Sie zunächst Python und importieren Sie Evident
import evident
Laden Sie als Nächstes Ihre Diversity-Datei und Beispielmetadaten.
import pandas as pd
metadata = pd . read_table ( "data/metadata.tsv" , sep = " t " , index_col = 0 )
faith_pd = metadata [ "faith_pd" ]
Die Hauptdatenstruktur in Evident ist der „DataHandler“. Auf diese Weise speichert Evident die Daten und Metadaten für Leistungsberechnungen. Für unser Alpha-Diversity-Beispiel laden wir die UnivariateDataHandler
-Klasse von Evident. UnivariateDataHandler
verwendet als Eingabe die Pandas-Serie mit den Diversitätswerten und den Pandas-DataFrame, der die Beispielmetadaten enthält. Standardmäßig berücksichtigt Evident nur Metadatenspalten mit maximal 5 Ebenen. Wir wählen 5 Stichproben als Standardwert, da Spalten mit mehr als 5 Gruppen möglicherweise auf technische Spalten hinweisen (z. B. Betreff-ID). Um dieses Verhalten zu ändern, geben Sie einen Wert für das Argument max_levels_per_category
an. Sie können diesen Wert auf -1 festlegen, um keine Obergrenze für die Ebenen festzulegen, bei denen eine Spalte abgelegt werden soll. Darüber hinaus berücksichtigt Evident keine Kategorieebenen, die durch weniger als 3 Proben repräsentiert werden. Wir wählen 3 Stichproben als Standardwert, da Ebenen mit weniger als 3 Stichproben möglicherweise hohe Varianzen aufweisen. Um dieses Verhalten zu ändern, verwenden Sie das Argument min_count_per_level
(muss > 1 sein).
adh = evident . UnivariateDataHandler ( faith_pd , metadata )
Nehmen wir als Nächstes an, wir möchten die Effektgröße der Diversitätsunterschiede zwischen zwei Stichprobengruppen ermitteln. In unserem Beispiel haben wir eine Spalte in den Metadaten „Klassifizierung“, in der zwei Gruppen von Patienten mit Morbus Crohn verglichen werden. Zunächst betrachten wir den Mittelwert von Faiths PD zwischen diesen beiden Gruppen.
metadata . groupby ( "classification" ). agg ([ "count" , "mean" , "std" ])[ "faith_pd" ]
was dazu führt
count mean std
classification
B1 99 13.566110 3.455625
Non-B1 121 9.758946 3.874911
Es sieht so aus, als gäbe es einen ziemlich großen Unterschied zwischen diesen beiden Gruppen. Was wir nun tun möchten, ist die Effektgröße dieser Differenz zu berechnen. Da wir nur zwei Gruppen vergleichen, können wir Cohens d verwenden. Evident wählt automatisch die richtige Effektgröße zur Berechnung aus – entweder Cohens d, wenn es nur zwei Kategorien gibt, oder Cohens f, wenn es mehr als zwei gibt.
adh . calculate_effect_size ( column = "classification" )
Dies sagt uns, dass unsere Effektgröße 1,03 beträgt.
Nehmen wir nun an, wir möchten sehen, wie viele Stichproben wir benötigen, um diesen Unterschied mit einer Potenz von 0,8 erkennen zu können. Mit Evident können Sie ganz einfach Argumente für Alpha-, Potenz- oder Gesamtbeobachtungen für die Power-Analyse angeben. Anschließend können wir diese Ergebnisse als Leistungskurve darstellen, um die Daten zusammenzufassen.
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 )
Wenn wir dieses Diagramm untersuchen, können wir sehen, wie viele Stichproben wir sammeln müssten, um die gleiche Effektgröße bei unterschiedlichen Signifikanz- und Aussagekraftniveaus zu beobachten.
Evident ermöglicht Benutzern die interaktive Durchführung von Effektgrößen- und Leistungsberechnungen mithilfe von Bokeh. Um eine Bokeh-App zu erstellen, verwenden Sie den folgenden Befehl:
from evident . interactive import create_bokeh_app
create_bokeh_app ( adh , "app" )
Dadurch werden die erforderlichen Dateien in einem neuen Verzeichnis app/
gespeichert. Navigieren Sie zu dem Verzeichnis app/
enthält ( nicht app/
selbst) und führen Sie diesen Befehl von Ihrem Terminal aus aus:
bokeh serve --show app
Dadurch sollte sich ein Browserfenster mit den interaktiven Visualisierungen öffnen. Der Reiter „Zusammenfassung“ gibt einen Überblick über die Daten und die Effektstärken/-stärken. Es werden Balkendiagramme angezeigt, die die Metadateneffektgrößen sowohl für binäre als auch für Mehrklassenkategorien (in absteigender Reihenfolge) zeigen. Auf der rechten Seite sehen Sie eine dynamische Leistungskurve, die die Leistungsanalyse für Metadatenspalten zeigt. Das Signifikanzniveau, der gesamte Beobachtungsbereich und die ausgewählten Spalten können über das Bedienfeld auf der linken Seite der Registerkarte geändert werden.
Wechseln Sie über die Leiste oben zum Reiter „Daten“. Hier können Sie Boxplots der Daten für jede Metadatenkategorie sehen. Wählen Sie eine Spalte aus der Dropdown-Liste aus, um zu ändern, welche Daten angezeigt werden. Sie können auch das Kontrollkästchen „Streupunkte anzeigen“ aktivieren, um die Rohdaten über die Boxplots zu legen.
Beachten Sie, dass es derzeit nicht möglich ist, diese interaktive App in eine eigenständige Webseite einzubetten, da Evidence Python zur Durchführung der Leistungsberechnungen verwendet.
Evident bietet Unterstützung für das beliebte QIIME 2-Framework der Mikrobiom-Datenanalyse. Wir gehen in diesem Tutorial davon aus, dass Sie mit der Verwendung von QIIME 2 auf der Befehlszeile vertraut sind. Wenn nicht, empfehlen wir Ihnen, die hervorragende Dokumentation zu lesen, bevor Sie mit Evident beginnen. Beachten Sie, dass wir Evident nur auf QIIME 2 Version 2021.11 getestet haben. Wenn Sie eine andere Version verwenden und ein Fehler auftritt, teilen Sie uns dies bitte über ein Problem mit.
Um die Leistung zu berechnen, können wir den folgenden Befehl ausführen:
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
Wir stellen QIIME 2 mehrere Beispielmetadatendateien zur Verfügung, da diese intern zusammengeführt werden. Sie sollten einen Wert für --p-data-column
angeben, damit Evident weiß, welche Spalte in den zusammengeführten Metadaten die numerischen Werte enthält (dies ist nur für die univariate Analyse erforderlich). In diesem Fall lautet der Name des Vektors faith_pd.qza
faith_pd
also verwenden wir ihn als Eingabe.
Beachten Sie, wie wir $(seq 10 10 100)
verwendet haben, um Eingaben für das Argument --p-total-observations
bereitzustellen. seq
ist ein Befehl auf UNIX-ähnlichen Systemen, der eine Zahlenfolge generiert. In unserem Beispiel haben wir seq
verwendet, um die Werte von 10 bis 100 in Intervallen von 10 (10, 20, ..., 100) zu generieren.
Mit diesem Ergebnisartefakt können wir die Leistungskurve visualisieren, um ein Gefühl dafür zu bekommen, wie die Leistung mit der Anzahl der Beobachtungen und dem Signifikanzniveau variiert. Führen Sie den folgenden Befehl aus:
qiime evident plot-power-curve
--i-power-analysis-results results.qza
--p-target-power 0.8
--p-style alpha
--o-visualization power_curve.qzv
Sie können diese Visualisierung unter view.qiime2.org direkt in Ihrem Browser ansehen.
Evident bietet Unterstützung für die Parallelisierung von Effektgrößenberechnungen über joblib. Bei Verwendung effect_size_by_category
pairwise_effect_size_by_category
wird die Parallelisierung über verschiedene Spalten hinweg durchgeführt. Ziehen Sie eine Parallelisierung in Betracht, wenn Sie viele Beispiele und/oder viele verschiedene Metadatenkategorien von Interesse haben. Standardmäßig wird keine Parallelisierung durchgeführt.
Mit Python:
from evident . effect_size import effect_size_by_category
effect_size_by_category (
adh ,
[ "classification" , "cd_resection" , "cd_behavior" ],
n_jobs = 2
)
Mit 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
Wenn Sie in Evident auf einen Fehler stoßen, posten Sie bitte ein GitHub-Problem und wir werden uns so schnell wie möglich darum kümmern. Wir freuen uns über alle Ideen oder Dokumentationsaktualisierungen/-korrekturen. Bitte reichen Sie daher ein Problem und/oder eine Pull-Anfrage ein, wenn Sie darüber nachdenken, Evident zu verbessern.
Wenn sich Ihre Frage auf die QIIME 2-Version von Evident bezieht, sollten Sie einen Beitrag im QIIME 2-Forum posten. Sie können ein Problem im Community-Plugin-Support-Board eröffnen und bei Bedarf @gibsramen taggen.
Wenn Sie Evident in Ihrer Arbeit verwenden, zitieren Sie bitte unseren Vorabdruck auf bioRxiv.