بناء وتصور رسوم بيانية معرفية حيوية معقدة باستخدام PyBEL: دليل عملي شامل

يقدم هذا الدليل الشامل طريقة عملية لبناء وتحليل رسوم بيانية معرفية حيوية غنية باستخدام بيئة PyBEL، مباشرةً داخل Google Colab. سنتعلم كيفية تعريف البروتينات والعمليات والتعديلات باستخدام لغة PyBEL المبسطة (DSL)، وكيفية إنشاء مسار بيولوجي مرتبط بمرض ألزهايمر، مع التركيز على ترميز العلاقات السببية، وتفاعلات البروتين-البروتين، وأحداث الفسفرة. سنتطرق أيضًا إلى تحليلات الشبكات المتقدمة، بما في ذلك مقاييس المركزية، وتصنيف العقد، واستخراج الرسوم الفرعية، بالإضافة إلى تقنيات استخراج بيانات الاستشهادات والأدلة.

1. إعداد بيئة العمل وتثبيت المكتبات

قبل البدء، يجب تثبيت جميع الحزم اللازمة، بما في ذلك PyBEL، وNetworkX، وMatplotlib، وSeaborn، وPandas. يمكن القيام بذلك بسهولة داخل Google Colab باستخدام الأمر التالي:

pip install pybel pybel-tools networkx matplotlib seaborn pandas -q

بعد التثبيت، نقوم باستيراد الوحدات الأساسية وكتم التحذيرات للحفاظ على وضوح دفتر الملاحظات والتركيز على النتائج:

import pybel
import pybel.dsl as dsl
from pybel import BELGraph
from pybel.io import to_pickle, from_pickle
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from collections import Counter
import warnings
warnings.filterwarnings('ignore')

2. بناء رسم بياني معرفي حيوي لمرض ألزهايمر

سنبدأ بإنشاء رسم بياني BEL (BELGraph) مع بيانات وصفية لمسار مرض ألزهايمر، ثم نحدد البروتينات والعمليات باستخدام PyBEL DSL:

graph = BELGraph(
    name="Alzheimer's Disease Pathway",
    version="1.0.0",
    description="Example pathway showing protein interactions in AD",
    authors="PyBEL Tutorial"
)

app = dsl.Protein(name="APP", namespace="HGNC")
abeta = dsl.Protein(name="Abeta", namespace="CHEBI")
tau = dsl.Protein(name="MAPT", namespace="HGNC")
gsk3b = dsl.Protein(name="GSK3B", namespace="HGNC")
inflammation = dsl.BiologicalProcess(name="inflammatory response", namespace="GO")
apoptosis = dsl.BiologicalProcess(name="apoptotic process", namespace="GO")

graph.add_increases(app, abeta, citation="PMID:12345678", evidence="APP cleavage produces Abeta")
graph.add_increases(abeta, inflammation, citation="PMID:87654321", evidence="Abeta triggers neuroinflammation")
# ... إضافة المزيد من العلاقات ...

هذا الكود يوضح كيفية إضافة العلاقات السببية بين الكيانات الحيوية، مثل زيادة (add_increases) أو الارتباط (add_association)، مع تضمين الاستشهادات والأدلة من المنشورات العلمية.

3. تحليل الشبكة المتقدم

بعد بناء الرسم البياني، يمكننا إجراء تحليلات شبكية متقدمة لفهم بنية وخصائص الشبكة:

3.1 مقاييس المركزية

نقوم بحساب مقاييس المركزية المختلفة، مثل مركزية الدرجة ومركزية الوساطة ومركزية القرب، لتحديد أهمية كل عقدة في الشبكة:

degree_centrality = nx.degree_centrality(graph)
# ... حساب مقاييس المركزية الأخرى ...

3.2 تصنيف الكيانات الحيوية

يمكننا تصنيف كل عقدة حسب وظيفتها (بروتين، عملية بيولوجية، إلخ) وحساب عدد كل نوع:

node_types = Counter()
for node in graph.nodes():
    node_types[node.function] += 1

3.3 تحليل المسارات

يمكننا فصل البروتينات والعمليات البيولوجية لتقييم نطاق وتعقيد المسار، وحساب أنواع العلاقات المختلفة لفهم أنواع التفاعلات السائدة في النموذج.

4. تحليل الأدلة من المراجع العلمية

نستخرج معرفات الاستشهادات وبيانات الأدلة من كل حافة في الرسم البياني لتقييم مدى دعمه بالبحوث المنشورة:

citations = []
evidences = []
for _, _, data in graph.edges(data=True):
    if 'citation' in data:
        citations.append(data['citation'])
    if 'evidence' in data:
        evidences.append(data['evidence'])

5. تحليل الرسوم الفرعية

يمكننا عزل رسوم فرعية محددة، مثل الرسم الفرعي المرتبط بالالتهاب، لفهم التفاعلات المحددة بشكل أفضل:

inflammation_nodes = [inflammation]
# ... استخراج الرسم الفرعي ...

6. الاستعلام عن الرسم البياني

يمكننا استخدام الاستعلامات المتقدمة للبحث عن مسارات محددة بين العقد، مثل المسارات من APP إلى apoptosis:

paths = list(nx.all_simple_paths(graph, app, apoptosis, cutoff=3))

7. تصدير البيانات وتصورها

أخيرًا، نقوم بتحضير مصفوفة الجوار وعلامات العقد لعمل تصورات مرئية للشبكة، مثل الرسم البياني للشبكة، وتوزيعات المركزية، ونسب أنواع العقد، وأنواع الحواف:

adj_matrix = nx.adjacency_matrix(graph)
# ... إنشاء التصورات ...

8. الخلاصة

يُظهر هذا الدليل قوة ومرونة PyBEL في نمذجة الأنظمة البيولوجية المعقدة. يُمكن استخدام هذه التقنيات لتوسيع نطاق الدراسة، ودمج بيانات أوميكس إضافية، وإجراء اختبارات إثراء، أو ربط الرسم البياني بعمليات تعلم الآلة.

المصدر: MarkTechPost