التعامل مع الشبكات الحيوية برمجيا باستعمال لغة الآر

برمجة nadhir 1660℃ 0تعليق

بِسْم الله الرحمن الرحيم،

في المقال السابق عرَّفنا بشبكات التفاعل الحيوي و أهمية دراستها . في هذا المقال سوف نكمل الحديث عن شبكات التفاعل الحيوي لكن من الجانب العملي، حيث سوف نحاول ان نعطي لمحة عن كيفية التعامل مع شبكات التفاعل الحيوي برمجيا باستعمال لغة R و نُعَرف ببعض الأدوات التي يمكن استعمالها من طرف المبرمجين. لكن قبل الخوض في البرمجة سوف نقوم اولا بتعريف الشبكات تعريفا رياضيا من وجهة نظر نظرية المخططات (Graph theory).

التعريف الرياضي للشبكات

تُعَرف الشبكة (المخطط او البيان) G  رياضيا على انها زوح مرتب G=(V,E) حيث تمثل V مجموعة العقد (nodes) في المخطط و  تمثل E = \{(i, j) | i, j \in V\} مجموعة الأضلاع (edges) . تصنف الشبكات على حسب نوع اضلاعها الى نوعين:

  • الشبكات الغير موجهة: لايهم اتجاه الاضلاع فيها, مثلا في شبكات التفاعل بين البروتينات.
  • الشبكات الموجهة: وفيها تكون الاضلاع. يسمي الضلع الاول المصدر والثاني الهدف. مثلا في شبكات التنظيم الجيني تمثل الاتجاهات الجين المؤَثر والجين المتأثر.
  • الشبكات الموزونة: وهي شبكات تكون أضلاعها ذات اهمية متفاوتة, لهذا يعطى لكل ضلع وزن يتناسب مع اهميته. يمكن لهذه الشبكات ان تكون موجهة او غير موجهة.
  • الشبكات الغير الموزونة: وهي شبكات ذات اضلاع متساوية الاهمية.

رسم بياني يبين انواع المخططات

تَعرف نظرية المخططات رواجا واسعا في عدة مجالات , خاصة في مجال تحليل الشبكات الرقمية و الشبكات الاجتماعية. في هذا المقال سوف نهتم باستعمالها في مجال الشبكات الحيوية لكن يكن استعمال كل هذه المفاهيم في العديد من المجالات مع الاختلاف في تفسير النتاءج.

يسمى المجال الذي يهتم بدمج الشبكات و المعلومات البيولجية بمجال الـ  System biology.  الكثير من العاملين في هذا المجال هم باحثين ذو خلفيات في الاعلام الآلي والعلوم الرياضية. لكن مع تزايد اهتمام البيولوجين والاطباء ادى الى تطوير خورزميات اكثر مناسبة للمشاكل البيولوجية

في العادة نهتم ببعض الخصائص الطبولوجية للمخطط حيث تساعدنا في فهم التكوين الداخلي للشبكة و معرفة العلاقة التي تربط الرؤوس ( في حالتنا الرؤوس هي المكونات الحيوية) . يساعدنا حساب بعض المعايير في دراسة خصائص الشبكة كتوزيع درجة العقد, قطرالشبكة, اهم العناصر في الشبكة, اقصر طريق,....الخ.  في الفقرة القادمة سوف نعرف ببعض المعايير.

بعض المعايير المستعملة لدراسة خصائص الشبكات

من اهم المعايير المستعملة في دراسة خصائص الشبكات هي المعايير المركزية. يمكن تعريف المعايير المركزية على انها دوال C تعطي لكل راس v قيمة C(v). تسمح لنا هذه القيمة بترتيب الرووس على حسب اهميتها. نقول ان العنصر u اهم من العنصر v اذا كانت C(u)> C(v). في هذه الفقرة سوف نقوم بالتعريف ببعض المعاير المركزية الاكثر استعمالا في تحليل الشبكات البيولوجية.

المركزيات المتعلقة بالرؤوس

1) مركزية درجة العُقَد (Degree centrality): وهي من المعايير البديهية في ترتيب الرؤوس, حيث تزداد اهمية الرأس (العقدة) مع زيادة درجتها.  بالنسبة للشبكات الموجهة يتم حساب الـ in-degree وهو عدد الأضلاع المتجهة نحو الرأس و الـ out-degree وهو عدد الأضلاع الخارجة من الرأس ويساوي مجموعهما درجة الرأس (او العقدة). تعتبر مركزية درجة العقد كمعيار موضعي (او خاص بالراس) حيث تعطي معلومة عن عدد الاتصالات المباشرة بين الرأس والرؤوس المجاورة. مثلا في الشبكات البروتينية هذه المركزية تتناسب طردا مع البروتينات الأساسية. لكن المشكلة في مركزية درجة العقد انها متحيزة نحو العناصر المتصلة بكثرة. مثلا في الشبكات البروتينية هناك بروتينات تتركز عليها الدراسة بكثرة كبروتين P53 (الذي يؤدي توقفه الى حدوث العديد من السرطانات) وغيره من البروتينات المشهورة, وبالتالي في الشبكات البروتينية تكون هذه البروتينات مرتبطة بكثرة لتوفر معلومات اكثر عن البروتينات التي تتفاعل معها. اما البروتينات الغير مشهورة فتكون قليلة الارتباط ليس لانها غير مهمة لكن لاننا نجهل العديد من البروتينات التي تتفاعل معها.

2) مركزية القُرْبْ (Closeness centrality):  يستعمل هذا المعيار لمعرفة الرؤوس التي تتمركز في مناطق كثيفة من الشبكة, حيث يتم حساب المسافة بين الرأس وكل الرؤوس الاخرى. رياضيا يتم حساب مركزية القرب للعنصر v كمقلوب مجموع المسافات نحو العناصر الاخرى:

C(v)=1/( \sum_{u \in V} dist(u,v) )

في العادة تستعمل هذه المركزية في الشبكات الكثيفة. في مجال المعلوماتية الحيوية يمكن استعمال هذه المركزية لتحدير مراكز تسهيل التفاعل في شبكات التفاعل الايضي.

3) مركزية الوسطية (Betweenness centrality):  تسعمل هذه الوسطية لتحديد الرؤوس التي يمكنها التحكم في الاتصلات داخل الشبكة, حيث تزداد اهمية العنصر كلما زادت قدرته على مراقبة الاتصالات. تحسب المركزية الوسطية لرأس من الرؤوس v كالتالي:

C(v) = \sum_{s \ne v \in V} \sum_{t \ne v \in V} \delta_{st}(v)/\delta_{st}

حيث تمثل \delta_{st}(v) عدد المسارات بين الرئسين s و t التي تمر عبر v. بالاضافة الى المعايير الاخرى, استُعملت المركزية الوسطية في العديد من الدراسات. مثلا من اجل دراسة البروتينات الرئيسية في شبكات التفاعل البروتيني (خاصة البروتينات ذات مركزية وسطية عالية و درجة ضعيفة) حيت تعتبر انها مهمة للدعم البنيوي للشبكة.

المركزيات المتعلقة بالأضلاع

في بعض الاحيان نكون مهتمين بالأضلاع اكثر من الرؤوس, مثلا لمعرفة ماهي الاتصالات الاكثر اهمية في الشبكة او ماهو التفاعل الاكثر اهمية في الشبكة البولوجية. تقريبا تُعَرف مركزيات الاضلاع بطريقة مشابهة لمركزيات الرؤوس. من ابسط طرق ترتيب الاضلاع هي اعطائها اوزان مختلفة, مثلا بحساب المسافة بينها او نسبة التشابه او نسبة الارتباط (correlation) بينها. بالاضافة الى ذلك يمكننا ايضا حساب المركزية الوسطية للاضلاع باستعمال نفس تعريف المركزية الوسطيه للرؤوس.

بالإضافة الى هذه المركزيات (للرؤوس والأضلاع) هناك العديد من المركزيات الأخرى يمكن الاطلاع عليها في المراجع المقترحة.

diverse-centrality-measures-v00

رسم بياني يوضح بعض انواع المركزيات

التعامل مع الشبكات الحيوية بلغة الآر

في لغة الآر كما في الغات الاخرى تم تطوير العديد من الحزم التي تتعامل مع الشبكات. برمجيا تمثل الشبكات على شكل مصفوفات كما هو مبين في البيان. حيث تمثل القيمة في المصفوفة وزن الضلع الرابط بين عنصرين. تسمى هذه المصفوفة بـ "مصفوفة المحاذات" (Adjacency Matrix).

Screen Shot 2016-02-20 at 6.06.01 PM

رسم بياني يوضح مفهوم مصفوفة المحاذات

هناك عدة حزم للتعامل مع الشبكات في لغة الآر, لكن من أشهرها حزمة igraph . تحتوي حزمة igraph على العديد من الدوال لانشاء الشبكات, اظافة خصائص لها, حساب بعض الخصائص, ايجاد المجوعات المترابطة و رسم الشبكات.

إنشاء الشبكات باستعمال igraph

يحتوي igraphعلى العديد من الدوال لانشاء الشبكات. يمكن تصنيف هذه الدوال الى ثلاثة انواع:

  •    دوال انشاء الشبكات من الملفات: مثل ملفات GML, pajek او ncol وغيرها من ملفات حفظ الشبكات.
  •  دوال انشاء الشبكات باستعمال مصفوفة المحاذات: حيث يمكن اعطائه مباشرة المصفوفة ويقوم بانشاء الشبكة (المخطط).
  • دوال انشاء الشبكات باستعمال عبارات مخصصة: توفر igraph لغة مبسطة لانشاء شبكات صغيرة من اجل القيام ببعض الإختبارات.

في العادة لما نتعامل مع الشبكات البيولوجية نقوم باستعمال شبكات كبيرة تكون محفوظة على شكل ملفات. من بين الصيع المستعملة هي ncol والتي تعطي معلومات عن كل ضلع في الشبكة. يُمَثل كل ضلع بثلاث معلومات: الرأس الأول, الرأس الثاني و وزن الضلع. اذا لم يحدد وزن الاضلاع فسيعتبرها igraph ان الاوزان مساوية لـ 1.
الصيغ الاخرى مثل GML مثلا هي على شكل ملفات xml وتحتوي على معلومات اكثر (مثلا الالوان و بعض خصائص كل رأس وضلع).

في igraphنقوم بقراءة هذه الملفات باستعمال دالة read.graphمع تحديد نوع الملف الذي نريد قراءته. مثلا ليكن لدينا الشبكة البروتينية التالية المحفوظة في الملف test_graph.ncol :

نقوم بقراءة الملف كالتالي:

نلاحظ ان الحزمة اعطتنا بعض المعلومات عن الشبكة. الجملة IGRAPH UN-- 17 20 -- تخبرنا ان المخطط غير موجه UN وانه يحتوي على 17 عنصر تتفاعل فيما بينها عن طريق 20 ضلع.
لرسم شبكة التفاعل يمكننا استعمال دالة plot. تمكننا هذه الدالة من تحديد الكيفية التي نريد رسم المخطط كلون الرؤوس, حجمها, طريقة توزيع الرؤوس في المخطط (او الـ layout مثلا, على شكل دائرة او باستعمال خوازميات تنسيق ).

مثلا هذا المثال يعطينا الشكل التالي:

plot_graph

يمكننا ايضا انشاء الشبكات عن طريق استعمال مصفوفة المحاذات باستعمال دالة graph_from_adjacency_matrix. في العادة نستعمل هذه الطريقة لما نحسب الاضلع بطريقة اوتوماتيكية. مثلا انطلاقا من التعبير الجيني نقوم بحساب معامل الارتباط بين الجينات و نقوم وصل الجينات المترابطة عن طرق الاضلع.
في هذا المثال سوف ننشئ مصفوفة بطريقة عشوائية و نقوم يتحويلها الى شبكة.

مثلا هنا تحصلنا على هذا المخطط

graph_from_adjacency

الطريقة الثالثة التي يمكننا استعمالها لإنشاء المخططات هي استعمال عبارات من لغة مبسط مُعَرفة igraph من طرف  يمكن من خلالها تحديد الطريقة االتي ترتبط بها الرؤوس. الدالة المسؤولة عن قراءة هذه العبارات وتحويلها الى شبكات هي دالة graph_from_literal. العبارات المستعملة تحتوي على معاملات خاصة بالأضلاع وأخرى بالرؤوس. حيث يرمز الى الرؤوس بالستعمال الحروف او الارقام. اما معاملات الأضلاع فهي تتكون من سلسلة من + و -. يرمز - الى ان الضلع غير موجه و الـ + الى اتجاه الضلع.
مثلا: A-B و A-----B تعطي مخطط غير موجه يربط بين الرأسين A و B. لتحديد اتجاه التوجيه يمكننا كتابة A-+B لتوجيه الضلع من A نحو B, او A+-Bلتوجيهه من B نحو A. يمكننا ايضا تجميع الرؤوس في مجموعات مثلاA:B -+ C:D تسمح لنا بربط A و B بكل من C و D. في المثال التالي نوضح بعض الحالات:

حساب بعض خصائص الشبكات

بعد انشاء المخططات في العادة يكون اهتمامنا منصبا على استخراج بعض المعلومات من هذه العلاقة. مثلا ايجاد العناصر الرئيسية, العناصر اكثر ارتباطا, ... الخ من التحليلات التي تهم دراستنا. حزمة igraph توفر العديد من الدوال المفيدة لحساب المعايير. في المثال التالي نبين بعض الدوال التي يمكن استعمالها:

يمكننا تلخيص هذه القيم في هذا الرسم حيث يمثل حجم الرأس قيمة المركزية. نلاحظ انه بالنسبة لهذا المخطط هناك تشبابه في بعض النتائج, لكن بعض الرؤوس المهمة في بعض المركزيات لم تكن مهمة في مركزية اخرى.

بالإضافة الى معايير المركزية, يمكننا ايضا القيام ببعض عمليات التجميع التي تسمح لنا باكتشاف المجموعات المترابطة في الشبكة. توفر حزمة igraph العديد من الخورزميات للقيام بذلك, لكن في هذا المثال سوف نستعمل خوارزمية cluster_fast_greedy. بعد تطبيق هذه الخوارزمية يمكننا الحصول على قائمة المجتمعات باستمعمال دالة groups. لإخبار الآر بأننا نريد رسم حيز حول كل مجموعة نقوم باعطاء قائمة المجموعات باستعمال خاصية mark.groups في دالة plot كما هو موضح في المثال التالي:

Clustering

إضافة بعض الخصائص للرؤوس و الأضلاع

في بعض الاحيان نريد ان نضيف بعض المعلومات للرؤوس و الأضلاع, مثلا لون كل ضلع, خصائص البروتين, وزن الضلع ... الخ من الخصائص. يمكننا إضافة هذه الخصائص بأستعمال دلة V()E() لتغير خصائص الأضلع.
مثلا V(G)$color <- "red" تسمح بتغيير لون كل الرؤوس الى الاحمر. اما V(G)[[1]]$color <- "red" فتسمح فقط بتغير لون الرأس الاول. و E(G)$width = 2 تعطي الوزن 2 لكل الأضلاع. في المثال التالي سوف نقوم بتغيير حجم الرؤوس والاضلع استنادا الى المركزية الوسطية ونقوم بتلوين العنصر الرئيسي باللون الاحمر.

Attributes

خلاصة

في هذا المقال عرفنا ببعض مفاهيم الشبكات من الجانب الرياضي و قمنا باعطاء نظرة مختصرة عن كيفية التعامل مع الشبكات في لغة الآر باستعمال حزمة igraph. بطبيعة الحال ما تم تغطيته في هذا المقال يعتبر فقط مقدمة للمبتدئين في هذا المجال وفي لغة الآر خاصة. بالإضافة الى لغة الآر هناك العديد من اللغات التي تسمح للك بالتعامل مع الشبكات بالإضافة الى بعض البرامج كبرنامج Cytoscape و Gephi وغيرها. شخصيا ان افضل التعامل مع الشبكات باستعمال الآر خاصة في الحالات التي لاتوجد برامج تقوم بما اريد ثم اقوم بحفض المخطط على شكل GML باستعمال دالة write.graph ثم رؤيته باستعمال برامج مثل Gephi.
في الأخير اتمنى ان يكون هناك من استفاد من هذا المقال.

مصادر

  •  Dirk Koschützki and Falk Schreiber (2008). Centrality Analysis Methods for Biological Networks and Their Application to Gene Regulatory Networks. Gene Regul Syst Bio, 2: 193–201.
  • Mahdieh Ghasemi et al (2014). Centrality Measures in Biological Networks. CURRENT BIOINFORMATICS.
  • Gabor Csardi and Tamas Nepusz (2006). The igraph software package for complex network research. InterJournal Complex Systems,, 1695.
  • Zhou et al (2014). Human symptoms–disease network . Nat Commun, 289-293.

رابط المقالة : المعلوماتية الحيوية بالعربي » التعامل مع الشبكات الحيوية برمجيا باستعمال لغة الآر

معجب (6)
  • هشام -اليمن

    المقال أكثر من مفيد ، بارك الله فيك

  • Sirus

    شكرا اخي 🙂