وحدة 2 / 11

أساسيات تحليل البيانات البيولوجية مع بايثون

المكاسب:

  • القدرة على الثقة في المخرجات الحتمية عن طريق كتابة التعليمات البرمجية التي تقرأ البيانات البيولوجية وتنظفها للذكاء الاصطناعي وتشغيلها بنفسها باستخدام Pandas وNumPy وBiopython
  • القدرة على تجنب مخاطر "عمل التعليمات البرمجية الخاطئة بدون أخطاء" عن طريق اختبار الكود بموقف صغير تكون نتيجته معروفة واختبار التأكيد.
  • القدرة على إنشاء تحليل قابل للتكرار من خلال تثبيت الإصدار وبذر العشوائية وعادات الحفاظ على البيانات الأولية

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

لا تحتاج إلى معرفة كيفية البرمجة في هذه الوحدة؛ سوف تتعلم التعبير عن النية بشكل صحيح وتقديم المخرجات.

لماذا بايثون وأي مكتبات؟

مكتبات بايثون الأكثر استخدامًا (المكتبة: حزمة الوظائف الجاهزة) في علم الأحياء هي:

  • الباندا: لقراءة البيانات الجدولية (CSV وExcel) وتنفيذ عمليات الصفوف والأعمدة. أداة أساسية لتصفية جدول التعبير الجيني وتجميعه ودمجه.
  • NumPy: للمصفوفات الرقمية وعمليات المصفوفة؛ إنه يجري تحت الباندا.
  • Biopython: للعمل مع تسلسلات DNA/RNA/البروتين، وقراءة ملفات FASTA، والترجمة (ترجمة الحمض النووي إلى بروتين).
  • matplotlib / seaborn: لتخطيط المؤامرات.
  • SciPy/statsmodels: للاختبارات الإحصائية.

الذكاء الاصطناعي يعرف هذه المكتبات جيدًا. مهمتك هي أن تحدد بوضوح ما تريد أن تفعله بالمكتبة التي تريد تشغيلها والتحقق من الكود الذي تم إنشاؤه.

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

خطوة بخطوة: مسح جدول العد

لنفترض أن لديك counts.csv: الصفوف عبارة عن جينات، والأعمدة عبارة عن عينات، والخلايا عبارة عن أعداد قراءة أولية. الخطوات الأولى النموذجية:

  1. التحميل: اقرأ الجدول مع الباندا.
  2. الاكتشاف: التحقق من الحجم (كم عدد الجينات، كم عدد العينات)، والقيم المفقودة، وأسماء الجينات المكررة.
  3. التصفية: تجاهل الجينات التي لا تتم قراءتها في أي عينة (العدد الإجمالي 0)؛ هذه ضوضاء.
  4. تلخيص: حساب العدد الإجمالي للقراءات لكل عينة (حجم المكتبة)؛ قد تكون العينة المنخفضة جدًا قد فشلت.

يمكنك الاستعانة بمصادر خارجية لسير العمل هذا للذكاء الاصطناعي على النحو التالي:

الدور: أنت مساعد بايثون وتركز على المعلوماتية الحيوية. المهمة: قراءة ملف counts.csv مع الباندا. البيانات: الصفوف عبارة عن جينات (index=gene_id)، والأعمدة عبارة عن 24 عينة، والقيم عبارة عن أعداد أولية صحيحة. أريد: (1) طباعة الحجم، (2) تجاهل الجينات التي لم تتم قراءتها مطلقًا، (3) إظهار إجمالي القراءات لكل عينة في رسم بياني شريطي. أضف تعليقات تركية قصيرة إلى كل سطر. مجرد إعطاء رمز العمل.

يولد رمز النموذج. قمت بتشغيله. إذا رأيت 24 عمودًا وعددًا معقولًا من الجينات (على سبيل المثال، 15000-25000) في المخرجات، فأنت على المسار الصحيح. إذا كانت إحدى العينات تحتوي على عُشر عدد القراءات الموجودة في العينات الأخرى، فاكتب تلك العينة.

ثلاث حالات صغيرة

الحالة 1 - فخ القيمة المفقودة: حصل الطالب على المتوسط ​​المحسوب في جدول التمثيل الغذائي المكون من 30 عينة؛ وكانت النتيجة سخيفة. المشكلة: تمت تعبئة الخلايا المفقودة بالنص "ND" بدلاً من NaN (وليس رقمًا)، لذا تمت قراءة العمود كنص. تم إصلاحه عندما جعلت الذكاء الاصطناعي يقول "اصنع قيم ND NaN وقم بتحويل العمود إلى أرقام". الدرس المستفاد: استكشف دائمًا البيانات الأولية أولاً.

الحالة 2 - خطأ في الدمج: قام أحد الباحثين بدمج جدولين (التعبير والشرح الجيني) ولكن تم فقدان 2000 جين. السبب: في أحد الجداول كانت المعرفات "ENSG00000141510"، وفي الجدول الآخر كانت "ENSG00000141510.14" (مع رقم الإصدار). كتب النموذج سطرًا واحدًا من التعليمات البرمجية لمسح رقم الإصدار؛ تم تقليل الخسارة إلى 40 جينًا. الدرس: محاذاة تنسيقات المعرفات قبل دمجها.

الحالة 3 - فقدان البيانات الصامت: لم يلاحظ الفني أنه بعد التصفية، انخفض عدد الجينات من 22000 إلى 8000؛ تم تعيين العتبة بشكل غير صحيح (> 10 إجماليًا بدلاً من> 10 قراءات في كل عينة). كان الجين المعروف (جين التدبير المنزلي: جينات مثل GAPDH التي يتم التعبير عنها باستمرار في كل خلية) مفقودًا في النهاية. الدرس المستفاد: التحقق من وجود جين "يجب أن يكون" بعد التصفية.

الاختبار مع الوضع المعروف (العادة الأكثر أهمية)

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

أضف اختبارًا إلى كود التصفية الذي كتبته: قم بإنشاء DataFrame صغير يتكون من 5 جينات و3 عينات، وقم بتعيين جينتين على الصفر عمدًا، وتحقق مع التأكيد على أن الفلتر يتجاهل هذين الجينين بالضبط. اجعل الاختبار قابلاً للتنفيذ.

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

موجه ضعيف / موجه قوي

ضعيف: "تنظيف المخطط الخاص بي."

قوي: "counts.csv: صفوف الجينات (فهرس_معرف_الجينات)، عينة مكونة من 24 عمودًا، قيم عدد صحيح خام. قم بما يلي: الإبلاغ عن القيم المفقودة، وتجاهل الجينات التي يبلغ مجموعها 0 في جميع العينات، وطباعة إجمالي القراءات لكل عينة، ومقارنة عدد الجينات قبل / بعد الفلتر. ما عليك سوى إعطاء رمز Python العملي والتعليق عليه."

الفرق: تحدد المطالبة القوية بنية البيانات والخطوات ومخرجات التحقق من الصحة (قبل/بعد المقارنة). ليس من الضروري أن يخمن النموذج.

مخطط المقارنة: الذكاء الاصطناعي أم اليدوي؟

معاملة

الطباعة إلى الذكاء الاصطناعي

التحقق من ذلك بنفسك

قراءة CSV وتحويل التنسيق

نعم

التحقق من الحجم والأنواع

التصفية، التجميع

نعم

عد قبل / بعد

اختبار الإحصاء

نعم (رمز)

تأكيد الافتراضات والاختبار

"كم عدد الخطوط المتبقية؟"

لا (دع الكود يحسب)

قراءة الإخراج

المعنى البيولوجي للنتيجة

جزئيا

مطلوب تعليق الخبراء

الأخطاء الشائعة

  • بالاعتماد على الرقم الذي ينتجه النموذج: “ما هو التعبير المتوسط؟” اطرح السؤال على الكود وليس النموذج.
  • عدم التحقق من أنواع البيانات: تُرجع أعمدة الأرقام التي تُقرأ مثل النص نتائج غير صحيحة بصمت.
  • عدم التحقق من مرحلة ما بعد التصفية: تأكد من أن الجين المتوقع لا يزال موجودًا.
  • نسيان بذرة العشوائية: إذا لم تكن البذرة ثابتة في الكود الذي يحتوي على عمليات عشوائية، فإن النتيجة تتغير في كل مرة؛ التكرار ضعيف.
  • تشغيل الكود دون قراءته: على الأقل اقرأ التعليقات واتبع المنطق.
تنبيه: مجرد عمل الكود لا يعني أن الكود صحيح. "الكود الخاطئ الذي يعمل بدون أخطاء" هو أخطر موقف في علم الأحياء؛ لأن النتيجة الخاطئة يتم إنتاجها بصمت. الاختبار مع حالة معروفة يزيل هذا الخطر.

الاستنساخ: القيمة العلمية للكود

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

ثلاث عادات مهمة للتحليل المتكرر. الأول هو تثبيت الإصدار: لاحظ إصدار المكتبة الذي تستخدمه (على سبيل المثال، pandas 2.2)؛ إصدار مختلف قد يعطي نتائج مختلفة. والثاني هو بذرة العشوائية: قم بإصلاح البذرة في كل كود يحتوي على عمليات عشوائية بحيث تكون النتيجة هي نفسها في كل عملية تشغيل. ثالثًا، لا تقم أبدًا بتغيير البيانات الأولية: لا تلمس الملف الأصلي، وقم بإجراء جميع التحويلات في التعليمات البرمجية بحيث يمكن استرجاعه.

أضف أسطرًا تطبع إصدارات المكتبات المستخدمة في بداية كود التحليل الذي كتبته، وإذا كانت هناك عملية عشوائية، فقم بإصلاح البذرة باستخدام sanp.random.seed(42). لا تقم بتغيير ملف CSV الخام على الإطلاق، واحفظ جميع المخرجات في ملف منفصل.

دفتر Jupyter: مزيج من التحليل والسرد

البيئة الأكثر استخدامًا في المعلوماتية الحيوية هي دفتر Jupyter (المفكرة: أداة تجمع بين الكود والمخرجات والوصف في نفس المستند). إن قيام الذكاء الاصطناعي بإنشاء التعليمات البرمجية وفقًا لخلايا دفتر الملاحظات، مع فصل كل خطوة عن طريق شرح Markdown، يجعل من السهل عليك وعلى زملائك متابعة التحليل. وهذا يجعل التحليل بمثابة دفتر مختبري قابل للقراءة، وليس "صندوقًا أسود".

التعرف على صيغ الملفات البيولوجية

عند معالجة البيانات البيولوجية باستخدام بايثون، ستواجه دائمًا تنسيقات ملفات معينة. قبل أن يتمكن النموذج من قراءة الملف بشكل صحيح، يجب أن يعرف التنسيق الموجود به؛ إذا أخطأت في التنسيق، فسوف تقع في فخ "الرمز الخاطئ الذي يعمل بدون أخطاء". الأكثر شيوعا هي:

تنسيق

المحتوى

مركبة مناسبة

CSV/TSV

بيانات الجدول (التعبير والقياس)

الباندا

فاستا (.fa/.fasta)

تسلسل الحمض النووي/الحمض النووي الريبي/البروتين

com.biopython

فاستق (.fq)

يقرأ التسلسل الخام + الجودة

Biopython، أدوات مخصصة

VCF

قائمة المتغيرات (الطفرة).

الباندا/بيسام

جي إف إف/جي تي إف

شرح الجينوم (مواقع الجينات)

الباندا، جفوتيلز

إذا لم تتعرف على أحد التنسيقات، فاطلب أولاً من النموذج التعرف عليه من خلال عرض بضعة أسطر نموذجية، ثم اطلب رمز القراءة:

سأعطي الأسطر الخمسة الأولى من الملف أدناه. ما هو تنسيق الملف الحيوي هذا؟ اشرح معنى الأعمدة/الحقول، ثم أعط رمزًا يقرأ بأمان (التحقق من التنسيق) هذا الملف في بايثون. أول 5 أسطر: [لصق]

يمنع هذا النهج الأخطاء الصامتة الناشئة عن افتراض الشكل في المقام الأول.

باختصار

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

مهمة التطبيق

اطبع رمزًا يجعل الذكاء الاصطناعي يقرأ جدول CSV لديك (أو نموذجًا واحدًا)، واطبع حجمه، وقم بتصفية الجينات الفارغة. ثم قم بإضافة اختبار التأكيد من النموذج مع 5 أسطر من البيانات الوهمية. قم بتشغيل الكود لاحظ عدد الجينات قبل وبعد التصفية. تأكد من أن جين التدبير المنزلي (مثل GAPDH/ACTB) لا يزال موجودًا في النتيجة.

قائمة مرجعية

  • [ ] لقد قمت بالتحقق من حجم وأنواع البيانات قبل معالجتها.
  • [ ] لقد تعاملت بشكل واضح مع القيم المفقودة.
  • [ ] قمت بمقارنة عدد الصفوف قبل/بعد الفلتر.
  • [ ] لقد أضفت اختبار تأكيد بشرط معروف.
  • [ ] تركت العد/الحساب للكود، وليس للنموذج.
  • [ ] قرأت تعليقات الكود واتبعت المنطق.