بحث
مقال
أخرى

مقال

تاريخ النشر: آخر تحديث: 50 مشاهدة 0 تعليق 9 دقائق قراءة
50 مشاهدة
0 إعجاب
0 تعليق
موثوق 95%

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

الهدف
تدريب نموذج لتوقع تأثير إسكات جين على خلية باستخدام تقنية CRISPR.

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

لتدريب هذه الشبكة العصبية، سنحتاج إلى بيانات. لقد قامت آرك بتجميع مجموعة بيانات تحتوي على حوالي 300,000 ملف تسلسل RNA أحادي الخلية. قد يكون من المفيد مراجعة المبدأ المركزي قبل المتابعة. ستبني هذه المقالة على ذلك لتوفير الحد الأدنى من المعرفة البيولوجية التي ستحتاجها للتحدي.

بيانات التدريب

تتكون مجموعة التدريب من مصفوفة متفرقة وبعض البيانات الوصفية المرتبطة. بشكل أكثر تحديدًا، لدينا 220,000 خلية، ولكل خلية لدينا ترانسكريبتوم. هذا الترانسكريبتوم هو متجه صفري متفرق، حيث كل إدخال هو العدد الخام لجزيئات RNA (الترانسكريبتات) التي يشفرها الجين المقابل (عمودنا). من بين 220,000 خلية، حوالي 38,000 هي غير متأثرة، مما يعني أنه لم يتم إسكات أي جين باستخدام CRISPR. تعتبر هذه الخلايا الضابطة حاسمة كما سنرى قريبًا.

لفهم مجموعة البيانات بشكل أكثر وضوحًا، دعونا نختار جينًا، TMSB4X (أكثر الجينات إسكاتًا في مجموعة البيانات) ونقارن عدد جزيئات RNA المكتشفة لخلايا ضابطة وخلايا متأثرة.


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

نمذجة التحدي

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

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

بشكل أكثر رسمية، يمكننا نمذجة التعبير الجيني الملحوظ في الخلايا المتأثرة كما يلي:

X^pT^p(Dbasal)+H(Dbasal)+ε,εPε \hat{X}_p \sim \hat{T}_p(\mathcal{D}_{\text{basal}}) + H(\mathcal{D}_{\text{basal}}) + \varepsilon, \quad \varepsilon \sim P_\varepsilon X^pT^p(Dbasal)+H(Dbasal)+ε,εPε

حيث:

  • X^p\hat{X}_pX^p: قياسات التعبير الجيني الملحوظة في الخلايا المتأثرة ppp
  • DbasalDbasal: توزيع مجموعة الخلايا غير المتأثرة، الأساسية.
  • T^p(Dbasal)\hat{T}_p(\mathcal{D}_{\text{basal}})T^p(Dbasal): التأثير الحقيقي الناجم عن التأثير ppp على المجموعة.
  • H(Dbasal)H(\mathcal{D}_{\text{basal}})H(Dbasal): التباين البيولوجي للسكان الأساسيين.
  • εε: الضوضاء الفنية الخاصة بالتجربة، المفترض أنها مستقلة عن حالة الخلايا غير المتأثرة وDbasalDbasal.

    STATE: الأساس من آرك

    قبل تحدي الخلية الافتراضية، أصدرت آرك نموذج STATE، محاولتهم الخاصة لحل التحدي باستخدام زوج من النماذج المعتمدة على المحولات. وهذا يشكل أساسًا قويًا للمشاركين للبدء به، لذا سنستكشفه بالتفصيل.

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

    نموذج انتقال الحالة (ST)


    نموذج انتقال الحالة هو نموذج محول بسيط نسبيًا مع هيكل Llama يعمل على ما يلي:

    1. مجموعة من النسخ الجينية (أو تمثيلات SE) لخلايا قاعدية متطابقة من حيث المتغيرات.
    2. مجموعة من المتجهات ذات البعد الواحد تمثل تأثيرات الجينات لكل خلية.

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

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

    نموذج تمثيل الحالة (SE)


    نموذج تمثيل الحالة هو نموذج تشفير ذاتي مشابه لـ BERT. لفهم ذلك بشكل أعمق، يجب علينا أولاً أن نقوم بجولة صغيرة للحصول على فهم بيولوجي أكثر.

    جولة بيولوجية صغيرة


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

    العودة إلى النموذج

    مع هذا الفهم الأساسي، يمكننا الانتقال إلى كيفية عمل نموذج SE. تذكر، هدفنا الأساسي من SE هو إنشاء تمثيلات خلوية ذات مغزى. لتحقيق ذلك، يجب علينا أولاً إنشاء تمثيلات جينية ذات مغزى.

    لإنتاج تمثيل جيني واحد، نحصل أولاً على تسلسل الأحماض الأمينية (مثل SDKPDMAEI exttt{SDKPDMAEI}SDKPDMAEI... لجين TMSB4X) لجميع أشكال البروتين المختلفة التي يرمز لها الجين المعني. ثم نقوم بإدخال هذه التسلسلات إلى ESM2، وهو نموذج لغة بروتين يحتوي على 15 مليار معلمة من FAIR. ينتج ESM تمثيلًا لكل حمض أميني، ونقوم بتجميعها معًا للحصول على تمثيل "نسخة" (المعروف أيضًا باسم شكل البروتين).

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

    g~j=SiLU(LayerNorm(gjWg+bg)) \tilde{g}_j = \text{SiLU}(\text{LayerNorm}(g_j \mathbf{W}_g + \mathbf{b}_g)) g~j=SiLU(LayerNorm(gjWg+bg))

    لقد حصلنا الآن على تمثيل جيني، لكن ما نريده حقًا هو تمثيل خلوي. لتحقيق ذلك، يمثل Arc كل خلية كأعلى 2048 جين مرتبين حسب مستوى التعبير اللوغاريتمي.

    ثم نقوم بإنشاء "جملة خلوية" من تمثيلات الجينات الـ 2048 كما يلي: c~(i)=[zcls,g~1(i),g~2(i),,g~L(i),zds]R(L+2)×h \tilde{\mathbf{c}}^{(i)} = \left[\mathbf{z}_{\text{cls}}, \tilde{\mathbf{g}}_1^{(i)}, \tilde{\mathbf{g}}_2^{(i)}, \ldots, \tilde{\mathbf{g}}_L^{(i)}, \mathbf{z}_{\text{ds}}\right] \in \mathbb{R}^{(L+2) \times h} c~(i)=[zcls,g~1(i),g~2(i),,g~ ل(i),zds]RL+2)×h

    نضيف رمز [CLS] exttt{[CLS]}[CLS] ورمز [DS] exttt{[DS]}[DS] إلى جملتنا. يتم استخدام رمز [CLS] exttt{[CLS]}[CLS] كـ "تمثيل خلوي" (شبيه جدًا بـ BERT) بينما يُستخدم رمز [DS] exttt{[DS]}[DS] لـ "فصل التأثيرات المحددة للبيانات". على الرغم من أن الجينات مرتبة حسب مستوى التعبير اللوغاريتمي، فإن Arc يفرض أيضًا شدة تعبير كل جين من خلال دمج النسخة الجينية بطريقة مشابهة للتضمينات الموضعية. من خلال خوارزمية "تجميع ناعم" غريبة و2 MLPs، يقومون بإنشاء بعض "ترميزات التعبير" التي يضيفونها بعد ذلك إلى كل تمثيل جيني. يجب أن تعدل هذه العملية شدة كل تمثيل جيني حسب مدى تعبيره في النسخة الجينية.

    لتدريب النموذج، يقومون بإخفاء 1280 جين لكل خلية، ويُطلب من النموذج التنبؤ بها. يتم اختيار الجينات الـ 1280 بحيث تغطي مجموعة واسعة من شدة التعبير. بالنسبة للمهتمين بالرسوم البيانية، توضح الصورة أدناه كيفية بناء الجملة الخلوية.


    التقييمات

    فهم كيفية تقييم تقديمك هو مفتاح النجاح. المعايير الثلاثة للتقييم التي اختارها Arc هي تمييز التأثيرات، التعبير التفاضلي ومتوسط الخطأ المطلق. نظرًا لأن متوسط الخطأ المطلق بسيط تمامًا كما يبدو، سنقوم باستبعاده من تحليلنا.

    تمييز التأثيرات


    يهدف تمييز التأثيرات إلى تقييم مدى قدرة نموذجك على كشف الاختلافات النسبية بين التأثيرات. للقيام بذلك، نقوم بحساب المسافات المانهاتنية لجميع النسخ الجينية المتأثرة المقاسة في مجموعة الاختبار (الحقيقة الأساسية التي نحاول التنبؤ بها، yty_tyt وجميع النسخ الجينية المتأثرة الأخرى، ypny_p^nypn) إلى النسخة الجينية المتوقعة y^t\hat{y}_ty^t. ثم نقوم بترتيب مكان الحقيقة الأساسية بالنسبة لجميع النسخ الجينية كما يلي:

    بعد ذلك، نقوم بتطبيع النتائج بناءً على العدد الإجمالي للترانسكريبتومات:

    PDisct=rtT \text{PDisc}_t = \frac{r_t}{T}

    حيث 00 سيكون تطابقًا مثاليًا. يتم حساب الدرجة الإجمالية لتوقعاتك كمتوسط جميع $$\text{PDisc}_t$$. ثم يتم تطبيعها إلى:

    PDiscNorm=12PDisc \text{PDiscNorm} = 1 - 2\text{PDisc}

    نقوم بضربها في 2 لأنه بالنسبة لتوقع عشوائي، سيكون ~نصف النتائج أقرب والنصف الآخر أبعد.

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

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

    بعد ذلك، نطبق إجراء بنجاميني-هوشبرغ، وهو ببساطة بعض الإحصائيات لتعديل قيم pp، كما هو الحال مع 20,00020,000 جين وعتبة قيمة pp تبلغ 0.050.05، ستتوقع 1,0001,000 إيجابيات خاطئة. نحدد مجموعة الجينات المعبر عنها تفاضليًا المتوقعة لدينا Gp,predG_{p,pred}، ومجموعة الجينات المعبر عنها تفاضليًا الحقيقة Gp,trueG_{p,true}.

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

    DEp=Gp,predGp,truenp,true DE_p = \frac{G_{p,pred} \cap G_{p,true}}{n_{p,true}}

    إذا كانت حجم مجموعتنا أكبر من حجم مجموعة الحقيقة، نقوم باختيار المجموعة الفرعية التي نتوقع أنها الأكثر تعبيرًا تفاضليًا (توقعاتنا الأكثر ثقة، المشار إليها بـ G~p,pred\tilde{G}_{p,pred})، نأخذ تقاطعها مع مجموعة الحقيقة، ثم نقسم على العدد الحقيقي.

    DEp=G~p,predGp,truenp,true DE_p = \frac{\tilde{G}_{p,pred} \cap G_{p,true}}{n_{p,true}}

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

    الخاتمة

    إذا كانت هذه التحدي قد أثارت اهتمامك، كيف يمكنك البدء؟ لحسن الحظ، قدمت Arc دفتر ملاحظات Colab الذي يشرح العملية الكاملة لتدريب نموذج STATE الخاص بهم. علاوة على ذلك، سيصل نموذج STATE إلى transformers قريبًا، لذا سيكون البدء مع نماذجهم المدربة مسبقًا بسيطًا كما يلي:

    import torch from transformers import StateEmbeddingModel model_name = "arcinstitute/SE-600M" model = StateEmbeddingModel.from_pretrained(model_name) input_ids = torch.randn((1, 1, 5120), dtype=torch.float32) mask = torch.ones((1, 1, 5120), dtype=torch.bool) mask[:, :, 2560:] = False outputs = model(input_ids, mask) 

    نتمنى حظًا سعيدًا لجميع المشاركين!

    تم نشر هذه المقالة في الأصل هنا.

    المجتمع

    andreywpaddaone

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

    في هذا المشروع، openforge.io/mobile-measures-case-study، وهو منصة لنتائج العلاج الطبيعي، رأينا كيف يمكن أن تحول حتى الرؤى البسيطة في الوقت الحقيقي المدمجة في واجهات الهاتف المحمول قرارات مقدمي الرعاية. لذا من المثير تخيل كيف يمكن أن يتطور شيء مثل هذا إلى أدوات قابلة للاستخدام للأطباء أو الباحثين في المستقبل. أتساءل ما إذا كان أي شخص هنا قد استكشف التطبيقات السريرية لنماذج مثل STATE؟