مثال عن استعمال لغة الآر لتحليل البيانات الحيوية

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

(مصدر الصورة)

بسم الله الرحمن الرحيم,

في المقال السابق قدمنا فكرة عامة عن لغة الـ R لكن لم نقدم مثالا يوضح كيفية استعمالها من أجل تحليل البيانات الحيوية. في هذا المقال سوف نحاول أن نأخذ مثالا عمليا نعطي من خلاله نبذة عن تحليل البيانات باستعمال R.

البيانات المستعملة:

في هذا المقال سوف نأخذ كمثال البيانات المستعملة من طرف الباحث Sabina Chiaretti وزملائه من أجل دراسة خصائص التعبير الجيني في مرض ابيضاض الدم اللمفاوي الحاد (Acute Lymphocytic Leukemia) أو اختصارا ALL وهو نوع من أنواع سرطان الدم ( Leukemia) والذي يتميز بالتكاثر الغير طبيعي للخلايا الأرومية الليمفاوية (lymphoblasts) في نخاع العظم وهي عبارة عن خلايا دم بدائية غير ناضجة وغير متمايزة. يصيب هذا المرض كلا من الخلايا البائية (B-Cells) و التائية ( T-Cells ).

رسم تخطيطي يوضح الفرق بين التركيبة الخلوية للدم في الحالة العادية وفي حالة السرطان (مصدر الصورة)

في هذه الدراسة قام الباحثون بقياس التعبير الجيني لـ 12625 جين باستعمال رقائق الحمض النووي ( Microarray ) لـ 128 مريض شخصوا حديثا  بمرض الـ ALL حيث أن مجموعة منهم مصابة في الخلايا البائية و مجموعة في الخلايا التائية.

تحميل البيانات وتحضير البيئة البرمجية:

سبب اختيارنا لهذا المثال هو توفر البيانات مباشرة في موقع Biocondctor في حزمة ALL  بالاضافة إلى هذه البيانات نحتاج أيضا إلى تثبيت الحزم التالية affy و RColorBrewer. يمكننا تثبيت هذه الحزم  باستعمال الأوامر التالية:

اخذ نظرة على البيانات:

لو تكلمنا بمصطلحات لغة البرمجة, نلاحظ أن البيانات محفوضة في كائن ( object ) من نوع ExpressionSet المصمم خصيصا لحفض بيانات التعبير الجيني لتجارب الرقائق الدقيقة حيث أنه يحتوي على نتائج كل عينة و معلومات عامة عن التجربة كإسم التقنية المستعملة, عدد الجينات, معلومات حول المرضى والورقة البحثية المنشورة... إلخ.  يمكننا رؤية بعض هذه المعلومات كالتالي:

مثلا لو أردنا معرفة نوع البيانات المتوفرة عن المرضى يمكننا استعمال دالتي phenoData و varMetadata  كالتالي:

هناك أمران يستعملان بكثرة لمعرفة كيفية توزيع البيانات, الأول وهو table وتسعمل في حالة التعامل مع البيانات الفئوية (مثلا: ذكر, أنثى أو  1,2,3) وتسمح باحصاء عدد البيانات من كل صنف. الثانية هي hist لرسم الجدول التكراري للبيانات وتستعمل في حالة البيانات المستمرة أو المتقطعة. في العادة ترسم المخططات التكرارية مع دالة الكثافة الاحتمالية باستعمال الأمر density.

يمكننا استعمال هذه الأوامر للتعرف على توزيع البيانات التي لدينا , مثلا كم عدد المرضي المصابين في الخلايا التائية والخلايا البائية, التوزيع العمري للمرضي, ... الخ.

مخطط تكراري لتوزيع الفئات العمرية

نلاحظ من المخطط التكراري وجود قمتين واحدة كبيرة متمركزة قرب عمر 18 سنة والثانية أصغر قرب 52 سنة مما يعطينا فكرة أولية على أن هناك العينات تحتوي على نسبة كبيرة من الشباب ونسبة اخرى من الكهول.

دراسة تعبير بعض الجينات:

لتبسيط المثال نفرض أنه لدينا الجينات التالية المعروفة في مساهتها في موت الخلية (apoptosis) ونريد أن نرى الفرق بين  نسبة نشاطها في المرضى المصابين في الخلايا التائية و المرضى المصابين في الخلايا البائية. حيث نعلم أن الخلايا السرطانية هي خلايا تنموا بطريقة غير طبيعة ولا تستجيب إلى الإشارات القادمة من المحيط الخلوي التي تدعوها عن التوقف عن التكاثر أو الموت. كما أنها لا تستجيب إلى الأدوية الكيمائية التي تحفزها على الموت. لنفرض إذا أننا ندرس الجينات التالية:

بما أننا نتسعمل الرقائق الدقيقية يجب علينا أولا أن نحول أسماء الجينات إلى الـ ID المقابل في الرقائق الدقيقة, يمكننا استعمال  R او مباشرة موقع DAVID فتحصل على الـ ID التالية:

مثلا نأخد التعبير الجيني لهذه الجينات في 15 مريضا مصابا في الخلايا البائية و 15 مريضا مصاب في الخلايا التائية كالتالي:

من بين المخططات التي يمكننا استعمالها لأخذ نظرة أولية عن نشاط هذه الجينات في هذه المجموعة من المرضى هي الخرائط الحرارية, حيث يمكننا رسم مصفوفة كل سطر فيها يمثل جين وكل عمود يمثل مريضا من المرضى. ونلون كل خانة على حسب نسبة نشاط الجين. للحصول على معلومات اكثر، نُرتب المرضى في المصفوفة على حسب نسبة تشابه التعبير الجيني. يمكننا القيام بهذا اتوماتيكيا باستعمال خوارزمية من خوارزميات التجميع (clustering) مثلا هنا نستعمل الـ hierarchical clustering.

قبل رسم الخريطة الحرارية نختار مجموعة من الألوان ذات دلالة لكي نتمكن من الرؤية بوضوح كالتالي:

ثم نعيد تسمية المرضى حيث نرمز بـ T للمرضى المصابين في الخلايا التائية و B للمرضى المصابين في الخلايا البائية.

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

الآن يمكننا رسم الخريطة الحرارية :

خريطة حرارية تبين تعبير الجينات المختارة في الـ30 مريض

نلاحظ أن بعض المرضى (اعمدة) لهم تعبير جينى متقارب في أغلبية الجينات و بعضهم يتشابه في بعض الجينات (موضحة في المربع الأسود) لكن هذا المخطط بهذه الطريقة لا يعطينا معلومات كافية أو ربما ليس من السهل قراءته من الوهلة الأولى . يمكننا أن نبذل جهد و نعتمد على نتائج خوارزمية التجميع الموضحة على حواشي البيان  حيث تم تجميع المرضى على شكل مخطط هرمي لكن يمكننا التمثيل بطريقة أحسن.

 سيكون من الاحسن إذن لو استطعنا حساب مدى التشابه بين التعبير الجيني بين المرضى عن طريق استعمال طريقة حسابية تعطينا قيمة تمثل هذا التشابه. لو اعتبرنا كل عمود على أنه شعاع,  يمكننا حساب المسافة بين هذه الأشعة باستعمال طرق كلاسكية مثلا بحساب المسافة الاقليدية (Euclidian distanc) والتي تحسب المسافة بين شعاعين $X$ و $Y$  كالتالي:

$d=\sqrt{\sum_{i=1}^{n} (x_i-y_i)^2}$

يمكن أيضا حساب معامل الارتباط ( في العادة تكون النتائج أحسن). من بين معاملات الارتباط المستعملة بكثرة هو معامل سبيرمان ( Spearman correlation coefficient) كالتالي:

$\rho = \frac{\sum_i(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_i (x_i-\bar{x})^2 \sum_i(y_i-\bar{y})^2}}$

يمكننا كتابة دالة لحساب هذه المعاملات أو مباشرة استعمال الدالة cor.dist لحساب معامل ارتباط  سبيرمان و الدالة euc لحساب المسافة الاقليدية. هذه الدوال متواجدة في حزمة bioDist في موقع Bioconducor.

في المثال التالي سوف نقوم بحساب قيم تشابه التعبير الجيني للجينات في كل المرضى (أو بصيغة أخرى التشابه بين أسطر الخريطة الحرارية في المثال الأول) باستعمال كلا الطريقتين (معامل الارتباط والمسافة) و حساب تشابه التعبير الجينى بين المرضي في كل الجينات (الأعمدة). وذللك كالتالي:

يمكننا تجميع هذه الخرائط الحرارية في صورة لنتحصل على نظرة أشمل

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

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

يمكننا أن تستنتج أن التعبير الجينى يتغير على حسب الخلايا المريضة, أما بالنسبة للمريضين الذان لم يصنفا من أقرانهما هناك احتمالان إما انه كانت هناك بعض الاخطاء في التجربة أو ربما حقا النتيجة صحيحة. مثلا يمكن للباحث ان يأخذ هذان العينتان ويقوم بدراسة ادق لفهم سبب تشابهما مع الصنف الآخر أو القيام بالتجربة مرة أخرى بالنسبة لهذين المريضين والتأكد.

نأمل أن هذا القدر من الأمثلة سوف يساعد القارئ على الحصول نوعا ما على فكرة عن كيفية استعمال لغة الـ R  للتحليل البيانات حتى و ان لم يكن المثال شاملا (مثلا كيف تختار الجينات, ماهي الادوات الاحصائية التي يمكن استعمالها, ... الخ).

هذا المثال مقتبس من هذا الدرس.

رابط المقالة : المعلوماتية الحيوية بالعربي » مثال عن استعمال لغة الآر لتحليل البيانات الحيوية

معجب (6)