التعامل مع السلاسل البيولوجية بلغة الآر (الجزء الثاني)

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

في الجزء الأول من هذا المقال عَرَفْنا بحزمة Biostrings وأعطينا نظرة عامة عن بعض امكانياتها. في هذا الجزء سوف نواصل من حيث توقفنا في الجزء الأول وسوف نتحدث عن الحزم والدوال المستعملة للتعامل مع الإحداثيات الجينومية وقرائة الملفات مثل BAM أو FASTQ.

التعامل مع الإحداثيات الجينومية

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

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

حزمة IRanges

قبل المرور إلى حزمة GenomicRanges أرى أنه من الظروري التعريف بحزمة IRanges المصممة للتعامل مع المجالات الرقمية. تَم تصميم حزمة IRanges بطريقة تسمح بالقيام بعدة عمليات خاصة بالمجالات الرقمية كالتقاطع بين المجالات, ايجاد اقرب مجال,... إلخ باستعمال خوازميات فعالة مبرمجة في العادة بلغة الـ C++ وبطريقة تسمح باستعمال اقل للذاكرة.

تحتوي الحزمة على فئة IRanges لتمثيل مجموعة من المجالات, حيث يُمَثَلُ كل مجال بنقطتي بداية ونهاية أو بنقطة بداية و عُرض المجال. يمكننا قرائة هذه المعلومات باستعمال الدوال  end,  start و  width كما هو موضح في المثال التالي:

من بين الدوال المُعرفة نجد دالة reduce التي تسمح بدمج المجالات المتقاطعة ودالةdisjoin التي تقوم بفصل المجالات وتعريف مناطق التقاطع على أنها مجالات جديدة. من بين الدوال المهمة أيضا لدينا دالة findOverlaps لايجاد المجالات المتقاطعة و دالة nearest لإيجاد أقرب مجال من مجال آخر, مثلا لايجاد اقرب جين من موقع ارتباط بروتين.

بالاظافة إلى الدوال والكائنات المختصة بتمثيل المجالات توفر حزمة IRanges دوال للتعامل مع الأشعة (الجداول) بطريقة احسن لايسع المجال لذكرها هنا, لكن من بين اهم الفئات المعرفة هي فئة Rleالتي تسمح بضعط البيانات باستعمال خوارزمية Run Length Encoding التي تتفادى حفظ البيانات المتكررة المتتالية مثلا إذا كان لدينا الجدول (1,1,1,2,3,3) فستقوم بحفظ الجدول (1,2,3) وعدد مرات تكرار كل عدد (3,1,2).

حزمة GenomicRanges

تعتبر حزمة GenomicRanges هي الأساس الذي تقوم عليه الكثير من الحزم التي تتعامل مع الاحداثيات الجينية. تعتبر هذه الحزمة الطبقة الوسط ما بين حزمة IRanges والحزم الأخرى مثل BSgenome و ShortReads. من الجانب البرمجي توفر الحزمة الثلاث فئات الممثلة في الجدول التالي:

GRanges تستعمل لتمثيل احداثيات مجموعة من المناطق الجينومية  (مثلا مجموعة اكسونات جين).
GRangesList سِلْسلة من كائنات GRanges, مفيدة لتجميع كائنات GRanges في مجموعات (مثلا مجموعة جينات كل مع اكسوناته).
GAlignments تستعمل لتمثيل نتائج المطابقة الجينومية مع جينوم مرجعي (تقبل الفراغات Gap).

كانئات GRanges

 تعتبر فئة GRanges امتدادا لفئة IRanges بحيث تسمح بتمثيل احداثيات مجموعة من المناطق الجينومية بالاظافة إلى انها تمكن المبرمج من إظافة معلومات إظافية خاصة بكل مجال. مثلا إذا كنا نتعامل مع بيانات Chip-Seq يمكننا اظافة معلومة عن عدد السلاسل المتواجدة في كل قمة,... إلخ.

يمكن استعمال دالة البناء GRanges من أجل تحديد الاحداثيات الجينومية والبيانات الوصفية (Metadata) المتعلقة بهذه البيانات. في حالة عدم تحديد البيانات الوصفية عند الانشاء يمكن استعمال دالة mcols كما هو موضح في المثال التالي:

يمكن التعامل مع هذا الكائن كأنك تتعامل مع جدول, فيمكنك مثلا قراءة اي مجال باستعمال [] أما اذا اردت معرفة نقاط البداية أو النهاية أو اسم الكروموزومات التي تتواجد فيها هذه المجالات يمكنك استعمال دوالend , start و seqnames ولقراءة البيانات الوصفية يمكنك استعمال دالة elementMetadata أو values :

في العادة تكون هذه البيانات في ملفات BED او GTF يمكنك مثلا قراءة الـ BED على شكل data.frame ثم انشاء كائنGRangesيدويا أو يمكن استعمال دالة import في حزمة rtracklayer. في المثال التالي سوف نقوم بقراءة ملف BED x باستعمال دالة import و باستعمال الطريقة الكلاسيكية بدون الحاجة إلى حزم اخرى (للفضولين البيانات المستعملة هي الـ 1 بالمئة من الجينوم البشري التي تم دراستها في المشروع التجريبي لـ ENCODE, لمزيد من المعلومات هنا)

يمكن القيام بعدة عمليات تقاطع أو اظافة مجالات أو غيرها من العمليات على كائناتGRangesالتي يمكن اختصارها في البيان اسفله. هنا لدينا المتغير Gene model الذي يمثل جين ذو منسوخين, حيث مثلنا كل منسوخ بكائنGRanges ووضعناهم في كائنGRangesList. كل العمليات الموضحة في البيان يمكن تطبيقها على كائناتGRanges

رسم تخطيطي يوضح الدوال التي يمكن استعمالها للتعامل مع كائنات GRanges (المصدر)

كانئات GAlignments

الهدف من هذه الفئة هو توفير بيئة للتعامل مع نتائج المطابقة (mapping أو alignment) التي تكون في العادة على شكل ملفات BAM او SAM بطريقة سَلِسَة واستعمال ذكي لذاكرة الكمبيوتر. هناك عدة حزم لقرائة ملفات نتائج المطابقة في هذا المثال سوف نستعمل دالة readGAlignmentsFromBam من حزمة GenomicAlignments. هنا قمنا بتحميل ملف BAM صغير (يحتوي على 204355 سِلْسِلة) بالكامل إلى الذاكرة لكن في العادة نقوم بقرائته على أجزاء أو نقراء منطقة معينة, سنتطرق إلى هذه التفاصيل في بقية المقال. استعملنا الحزمة pasillaBamSubset هنا لاحتوائها على امثلة ملفات BAM ماخوذة من نتائج البحث من طرف Brooks حول ذبابة الفاكهة.

يحتوي كل سطر من كائناتGAlignments على معلومات حول بعض الحقول المهمة من ملفات SAM أو BAM كحقل CIGAR الذي يعطي معلومات حول عدد الجزئيات القاعدية التي تَم أو لم يتم مطابقتها وعدد الفراغات,... إلخ من المعلومات. يمكن الاطلاع على معنى كل حقل في الرابط التالي.

التعامل مع ملفات المطابقة

تعتبر ملفات BAM و SAM من بين الملفات التي يُتَعَامل معها بصفة روتينية في مجال المعلوماتية الحيوية, حيث أنها تحتوي على معلومات حول احداثيات المناطق المُطابقة وجودتها وكيفيتها. في الكثيرمن الاحيان يمكن ان نكتفي بالأدوات الموجودة لكن في بعض الاحيان وخاصة عند التعامل مع بيانات جديدة نحاول كتابة سكريبتات للقيام بذلك. يتوفر مستودع Bioconductor على مجموعة من الحزم التي تساعدنا في التعامل مع هذا النوع من الملفات. في هذا المقال سوف نكتفي بتقديم بعض الحزم المهمة مثل حزمة GenomicAlignments و حزمتي Rsamtools و ShortRead.

حزمة Rsamtools

تعتبر حزمة Rsamtools واجهة للدوال البرامج samtools , bcftool و tabix للتعامل مع ملفات BAM, SAM, BCF و TABIX. من اهم الفئات التي توفرها حزمة Rsamtools هي فئة ScanBamParam التي تسمح بتحديد الحقول والمجالات الجينومية التي نريد قرائتها, ففي حالة توفر ملفات bam indexذات الامتداد bai يمكننا قرائة ملفات كبيرة بسرعة و بدون استهلاك للذاكرة. مثلا في هذا المثال سوف نقوم بقرائة منطقة جينومية من ملف BAM.

يعتبر حقل FLAG من بين اهم الحقول حيث انه يخبرنا عن نوعيةكل مطابقة (هل تطابقت السلسلة مع منطقة واحدة ام لا, هل السِلْسِلة  احادية أم نناية الحد,...إلخ ), يمكنا طباعة ملخص عن بعض الاحصائيات حقل FLAG باستعمال الدالة quickBamFlagSummary :

من بين الدوال المفيدة أيضا لدينا دلة BamSampler التي تقوم بالاختيار العشوائي للسلاسل من ملف BAM, يمكن استعمالها مثلا للتأكد من مدى كفاية عمق عملية السَلْسَلَة (sequencing depth) ورسم بيان مشابه للرسم اسفله الذي يين عدد الجينات التي تم مطابقتها في كل مرة ناخذ جزء من نتائج المطابقة. في حالة ما إذا كانت عملية السَلْسَلة بكمية كافية فانه عند حد معين (مثلا 80%) لن نلاحظ زيادة ملوحة في عدد الجينات المكتشفة مما يدل على اننا غطينا الجينوم بشكل كامل, اما حالة الحصول على منحنى متصاعد إلى غاية 100% فتدل ان السَلْسَلَة لم تكن بالعمق الكاففي.

Sequencing_saturation

رسم تخطيطي يوضح مخططات التشبع (Saturation plot) (المصدر)

إذا كان حجم الملف كبيرا يمكنك قرائته على اجزاء بايستعمال دالة  BamFile وتحديد عدد السلاسل التي تريد قرائها في الحقل: yieldSize

حزمة GenomicAlignments

كما نوهنا إليه سابقا, توفر هذه الحزمة مجموعة من الدوال لقرائة ملفات BAM, تحتوي هذه الجزمة على ثلات فئات رئيسية:

GAlignments تستعمل لتخرين نتائج السلسلة على شكل جدول. في حالة السلاسلة المتعددة مناطق المطابقة, تُمثل كل عن نتيجة مُطَابقة على انها مستقلة عن الاخرى لكن يشتركون في الاسم
GAlignmentPairs تستعمل لتخزين نتائج السلسلة ثنائية النهاية (pair-end). يمكن استعمال دالتيleft و right لقرائة النهايتين.
GAlignmentsList جدول من كائنات GAlignments .

يمكن ايضا استعمال ScanBamParam لتحديد المنطقة التي تريد دراستها. مثلا يمكنك قرائة السلاسل المطابقة لكل كروموزموم في كائن وتحليلهابطريقة متوازية.

البيان التالي يلخص أهم الحزم المستعملة في مختلف مراحل التعامل مع نتائج السَلْسَلة.

Seq_analysis_bioconductor_1

رسم تخطيطي يوضح اهم حزم Bioconductor المستعملة في تحليل نتائج السَلْسَلة (المصدر)

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

مصادر:

  • Lawrence M, Huber W, Pagès H, Aboyoun P, Carlson M, Gentleman R, Morgan M and Carey V (2013). “Software for Computing and Annotating Genomic Ranges.” PLoS Computational Biology, 9.
  • Morgan M, Pagès H, Obenchain V and Hayden N. Rsamtools: Binary alignment (BAM), FASTA, variant call (BCF), and tabix file import. R package version 1.18.2,
  • Bioconductor for Sequence Analysis
  • SAM/BAM and related specifications
  • Angela R W et al, "Quantitative assessment of single-cell RNA-sequencing methods", 2013, Nature Methods.

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

معجب (4)