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
سلسلة الباندا مع قيم التنوع وDataFrame الباندا التي تحتوي على بيانات تعريف العينة كمدخل. افتراضيًا، سيأخذ Evident في الاعتبار فقط أعمدة البيانات التعريفية التي تحتوي على 5 مستويات كحد أقصى. نختار 5 عينات كقيمة افتراضية لأن الأعمدة التي تحتوي على أكثر من 5 مجموعات قد تشير إلى أعمدة فنية (مثل معرف الموضوع). لتعديل هذا السلوك، قم بتوفير قيمة للوسيطة max_levels_per_category
. يمكنك تعيين هذه القيمة إلى -1 لعدم توفير حد أعلى للمستويات التي يمكن إسقاط العمود عندها. بالإضافة إلى ذلك، لن تأخذ Evident في الاعتبار أي مستويات فئة ممثلة بأقل من 3 عينات. نختار 3 عينات كقيمة افتراضية لأن المستويات التي تحتوي على أقل من 3 عينات قد تظهر تباينات عالية. لتعديل هذا السلوك، استخدم الوسيطة min_count_per_level
(يجب أن تكون > 1).
adh = evident . UnivariateDataHandler ( faith_pd , metadata )
بعد ذلك، لنفترض أننا نريد الحصول على حجم تأثير فروق التنوع بين مجموعتين من العينات. لدينا في مثالنا عمود في "تصنيف" البيانات الوصفية يقارن بين مجموعتين من المرضى المصابين بمرض كرون. أولاً، سننظر إلى متوسط PD لدى Faith بين هاتين المجموعتين.
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
يبدو أن هناك فرقًا كبيرًا جدًا بين هاتين المجموعتين. ما نود أن نفعله الآن هو حساب حجم تأثير هذا الاختلاف. ولأننا نقارن بين مجموعتين فقط، يمكننا استخدام دالة كوهين د. يختار Evident تلقائيًا حجم التأثير الصحيح لحسابه - إما Cohen's d إذا كان هناك فئتان فقط أو Cohen's f إذا كان هناك أكثر من 2.
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
سيؤدي هذا إلى فتح نافذة متصفح تحتوي على تصورات تفاعلية. توفر علامة التبويب "الملخص" نظرة عامة على البيانات وأحجام/قوة التأثير. يتم عرض Barplots التي توضح أحجام تأثير البيانات الوصفية لكل من الفئات الثنائية ومتعددة الفئات (مرتبة بترتيب تنازلي). يوجد على اليمين منحنى طاقة ديناميكي يوضح تحليل الطاقة لأعمدة البيانات التعريفية. يمكن تعديل مستوى الأهمية ونطاق المراقبة الإجمالي والأعمدة المختارة باستخدام لوحة التحكم الموجودة على الجانب الأيسر من علامة التبويب.
قم بالتبديل إلى علامة التبويب "البيانات" باستخدام الشريط الموجود في الأعلى. هنا يمكنك رؤية مخططات مربعة للبيانات لكل فئة من فئات البيانات التعريفية. حدد عمودًا من القائمة المنسدلة لتغيير البيانات المعروضة. يمكنك أيضًا تحديد مربع "إظهار نقاط التشتت" لتراكب البيانات الأولية على المخططات المربعة.
لاحظ أنه نظرًا لأن Clear يستخدم Python لإجراء حسابات الطاقة، فمن غير الممكن حاليًا تضمين هذا التطبيق التفاعلي في صفحة ويب مستقلة.
يوفر Evident الدعم لإطار عمل QIIME 2 الشهير لتحليل بيانات الميكروبيوم. نفترض في هذا البرنامج التعليمي أنك على دراية باستخدام QIIME 2 في سطر الأوامر. إذا لم يكن الأمر كذلك، فنوصيك بقراءة الوثائق الممتازة قبل البدء في استخدام Evident. لاحظ أننا اختبرنا Evident فقط على الإصدار 2021.11 من QIIME 2. إذا كنت تستخدم إصدارًا مختلفًا وواجهت خطأً، فيرجى إخبارنا عبر المشكلة.
لحساب الطاقة يمكننا تشغيل الأمر التالي:
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
)
مع كيم 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.