صندوق الأدوات

أنظمة سير العمل: الطريقة المثلى لتصميم سلاسل معالجة البيانات

سلاسل معالجة البيانات تُحَوِّل البيانات الخام إلى نتائج علمية قابلة للتكرار.

جيفري إم. بيركل

  • Published online:

Illustration by The Project Twins

رغم أنَّه لا جدوى من إعادة اختراع العجلة، كما يُقال، إلا أن المتخصصين في علم الأحياء الحاسوبي يجدون ذلك ضروريًّا في بعض الأحيان. لذلك.. عندما أدرك روب فِن، وفولكر ماير مدى تداخل عمليهما، قررا تجربة نهج مختلف.

فِن هو رئيس فريق «سيكوانس فاميليز» sequence-families في معهد المعلوماتية الحيوية الأوروبي (EBI) في هينكستون بالمملكة المتحدة، بينما ماير هو متخصص في علم الحاسوب بمختبر أرجون الوطني في ليمونت بولاية إلينوي الأمريكية. ويدير كلاهما مَرافق تتيح للباحثين إجراء عمليةٍ تتطلب قدرًا ضخمًا من القدرات الحاسوبية، تُسمَّى «التحليل الميتاجينومي»، حيث تسمح بإعادة تصوُّر بِنْية المجتمعات الميكروبية من أجزاء الحمض النووي. وقد ارتأيا أنَّه سيكون من المفيد أن تتاح لكل منهما تجربة كود البرمجة الخاص بالآخر.. فكانت المشكلة أنَّ أكواد السلاسل التحليلية التي يستخدمانها لمعالجة البيانات - مجموعة العمليات الحاسوبية المتسلسلة والمصممة بعناية، اللازمة لتحويل البيانات الخام إلى معرفةٍ علمية - مكتوبة بلغاتٍ مختلفة.. فبينما كان فريق ماير يستخدم نظامًا، طَوّره مختبره يُسمَّى «إيه دبليو إي» AWE، كان فِن يستخدم حوالي 9500 سطر من أكواد لغة البرمجة «بايثون».

وعن ذلك يقول فِن: "كانت تلك مجموعةٍ مريعة من الأكواد المكتوبة بلغة بايثون"، إذ كانت معقدة وصعبة الصيانة. وأضاف قائلًا: "لقد أُلحقت بها على مدى سبع سنوات إضافات مختلفة لأغراضٍ محددة، طَوّرها أربعة مطورين مختلفين على الأقل"، وقد "كانت شديدة الاعتماد على البِنْية التحتية الحاسوبية"، بمعنى أنَّها صُمِّمت لتعتمد على موارد حاسوبية محددة، وطريقةٍ معينة في تنظيم الملفات. وبالتالي، لا يمكن استخدامها من الأساس خارج معهد المعلوماتية الحيوية الأوروبي. ولأنّ المعهد لم يكن يستخدم نظام «إيه دبليو إي»، كان العكس صحيحًا، ثم عَرفَ فِن وماير بنظام «لغة سير العمل المشتركة» Common Workflow Language، المعروف اختصارًا باسم (CWL).

ونظام «لغة سير العمل المشتركة» هو وسيلةٌ لوصف الأدوات الحاسوبية والسلاسل التحليلية لمعالجة البيانات، وهو واحدٌ من أكثر من 250 نظامًا متاحًا حاليًّا، منها أنظمةٌ شائعة، مثل «سنايك مايك» Snakemake، و«نيكست فلو» Nextflow، و«جالاكسي» Galaxy. ورغم أن هذه الأنظمة تختلف في لغاتها البرمجية والميزات التي تدعمها، إلا أنها تشترك في هدفها؛ وهو جعْل الوسائل الحاسوبية قادرةً على الوصول إلى النتائج نفسها في حال تكرار استخدامها لمعالجة البيانات نفسها، وإتاحة صيانتها، ومشاركتها، وقابلية استخدامها ضمن أنظمة تشغيل أخرى. ونظام «لغة سير العمل المشتركة» هو – في الأساس - لغة تبادل، يمكن للباحثين استخدامها لمشاركة سلاسل معالجة البيانات في أي نظام. ويرى فِن أن تلك اللغة أضفت بعض العقلانية على قاعدة الأكواد الخاصة بنظامه، وقلَّصت حجمها بنسبةٍ تصل إلى 73% تقريبًا. والأهم من ذلك.. أنَّها سهّلت اختبار الوسائل الجديدة، واستخدامها، ومشاركتها، وتشغيلها على السحابة الإلكترونية.

ورغم أنَّ هناك عملية تعلُّم ينبغي المرور بها لاستخدام لغات أنظمة سير العمل، يقول برايان نوتون - مدير البيانات، والمؤسس الشريك لشركة «هيكساجون بيو» Hexagon Bio لاكتشاف الأدوية في مينلو بارك بولاية كاليفورنيا - إنَّ "الطاقة التي توفرها من خلال جعْل كودك قادرًا على الوصول إلى النتائج نفسها عند تكرار تحليل البيانات هي أكثر من كافية لتعويض الطاقة التي تستهلكها في التعلم".

خطوة.. خطوة

بالنسبة إلى المتخصصين في علم الأحياء الحاسوبي، فإن سلاسل معالجة البيانات هي بمثابة إجراءات. وعلى غرار بروتوكولات مختبرات التجارب العملية، يجب توثيقها، لكنها تتألف - في كثير من الأحيان - من عشرات الخطوات. ولذلك.. فتوثيقها ليس هينًّا. ويقدِّر تايتس براون - المتخصص في علم المعلوماتية الحيوية بجامعة كاليفورنيا في مدينة دايفس - أنَّ تمرير ست عينات عبر سلسلة معالجة البيانات التي يستخدمها لتجميع الترانسكربتومات من الصفر – والتي تشمل عمليات تحميل البيانات، ومراقبة جودتها، ومعايرتها، وتجميعها، ووسمها، وتحليلها – يتطلب "أكثر من 100 خطوة". ويجب على الباحثين أن يوثِّقوا بدقة كيفية تنفيذ كل خطوة، إذا كانوا يأملون في تكرارها في وقتٍ لاحق؛ للوصول إلى النتائج نفسها.

ويصوغ الباحثون عادةً أكواد سير العمل باستخدام لغات البرمجة النصية العامة، مثل «بايثون»، أو «باش» Bash، لكنَّ هذه اللغات تفتقر - في كثير من الأحيان - إلى المرونة اللازمة. وسير العمل من الممكن أن يتضمن المئات أو الآلاف من ملفات البيانات، وينبغي لسلسلة معالجة البيانات أن تكون قادرةً على متابعتها، وإيقاف العمل بسلاسةٍ، إذا فشلت أي خطوة. وينبغي لتلك السلاسل أيضًا أن تكون ذكيةً بما يكفي لتحديد المهام التي تحتاج إلى إعادة تنفيذها.

ويقول دايفِس مَكارثي - أخصائي المعلوماتية الحيوية بمعهد سانت فنسنت للبحوث الطبية في فيتزروي بأستراليا - إنَّ لغتَي «بايثون»، و«آر» كانتا أكثر من كافيتين لسير العمل البسيط نسبيًّا، الذي كان يستخدمه في أثناء إعداد رسالة الدكتوراة، لكنَّه حاليًّا يعمل على تحليل مجموعات بيانات خاصة بخلايا مفردة، ويعالج بيانات عيناتٍ أكثر بعشرات المرات، ويفشل في معالجة بعضها، كما هو متوقع، بسبب مشكلات الشبكة التي يعتمد عليها، وقصور الذاكرة الإلكترونية التي يستخدمها. وفي هذا الصدد.. يقول: "لم يكن بإمكاني أن أبني نظامًا من الصفر لتحليلٍ بهذا الحجم". واعتمد - بدلًا من ذلك - على نظام «سنايك مايك» المُشغَّل بسطور الأوامر (انظر: «كيف تعمل أنظمة سير العمل»).

جريًا على العادة المتبعة في علوم الحاسوب، أُعِدُّ مثالًا بسيطًا لتصميم برنامج يعرض رسالة الترحيب الشهيرة "Hello, world!"، بمساعدة يوهانس كوستر، مبتكِر نظام «سنايك مايك» بجامعة دويسبورج إيسن في ألمانيا. وعندما يتلقى نظام سير العمل ملفًّا نصيًّا باسمك، ينشئ رسالة ترحيب، ويقسمها إلى أجزاء، ويكتبها بأحرف إنجليزية كبيرة، ثم يعيد تجميع النص.

ويعتمد نظام «سنايك مايك» في عمله على عددٍ من القواعد. تحدد القاعدة الأولى "all" الملف الذي ترغب في إنشائه، ويستخدم البرنامج القواعد الأخرى لتحديد كيفية بنائه. وكما يوضح تايتس براون، المتخصص في علم المعلوماتية الحيوية بجامعة كاليفورنيا في مدينة دايفِس، فإنَّ هذا يشبه تحديد ما ترغب في تناوله في وجبة العشاء، ثم التفكير في عملية الطهي بترتيبٍ معاكس لخطواتها المعتادة، لتحديد كيفية طهي الطبق. وعلى سبيل المثال.. لتعدّ المكرونة والصلصة، يجب عليك إعداد الصلصة، ولإعدادها.. يجب عليك طهي الطماطم والبصل، وهكذا.

يتضمن سير العمل في هذا المثال ثلاث خطوات: "helloworld"، و"split"، و"toupper". وهناك قاعدة إضافية، هي "clean"، تحذف جميع الملفات التي أنشأها النظام. ويحدد جزءٌ من كود لغة بايثون عدد الملفات التي ستُنشئها قاعدة "split"، وأسماءها.

ولمشاهدة ذلك المثال في أثناء تنفيذه، ثبِّتْ نظام «سنايك مايك» من خلال الرابط التالي: go.nature.com/2p8yhv0، ثم نفذ الأمر "snakemake -s hello_world.smk"، ويُفترض حينها أن ترى ملفًّا جديدًا باسم "hello-world.txt". ولحذف الملفات التي أنشأها النظام، اكتب الأمر التالي: "snakemake -s hello_world.smk clean".

ولتصدير هذه العملية إلى نظام «لغة سير العمل المشتركة»، استخدِم الأمر: "snakemake -s hello_world.smk --export-cwl hello_world.cwl".

وتوفر نسخة ما قبل المراجعة والنشر من دراسةٍ حديثة إرشاداتٍ مفيدة لإنشاء أنظمة سير العمل، ويمكنك تصفُّحها على الرابط التالي: (M. van Vliet Preprint at https://arxiv.org/abs/1904.06163; 2019).

المشكلة الأكبر في أنظمة سلاسل معالجة البيانات تكمن في إمكانية التوسع في استخدامها.. فالبرنامج النصي الذي يعمل على حاسوبٍ محمول يُمكن تشغيله نادرًا على عنقودٍ من الحواسيب أو السحابة الإلكترونية، دون تعديل. وهذه الأنظمة عادةً تتطلب تهيئةً، وضبطًا، وإجراءات تصديق معينة؛ لتصف - على سبيل المثال - موارد الحوسبة اللازمة. كما أنَّ الكثير من سلاسل المعالجة تُصمَّم بإحكام؛ لتناسب البيئة الحاسوبية الخاصة بمختبرٍ بعينه.

ويمكن لأنظمة سير العمل أن تخفف من مدى ذلك التعقيد.. فبعضها - مثل نظام «جالاكسي» - يسمح للمستخدمين ببناء سلاسل معالجة البيانات من خلال واجهة مستخدِم تعمل بالإشارة والنقر، فيما تعمل أنظمةٌ أخرى من خلال سطور الأوامر النصية. ومع ذلك.. فكلها تدعم - عادةً - بضعة وظائف أساسية، منها: «قابلية استئناف العمل»، أي الاستمرار من حيث توقف سير العمل على النظام في مرةٍ سابقة، وأيضًا إمكانية التوسع، والقدرة على تحديد البيئة الحاسوبية لكل خطوة. ويدعم عديدٌ من هذه الأنظمة أدوات تثبيت البرامج، مثل «كوندا» Conda، بالإضافة إلى أنظمة الحاويات، مثل «دوكر» Docker، وهو ما يعني أنَّه يمكن للمستخدمين الآخرين استخدام سلاسل المعالجة، حتى لو اختلفت البِنْية التحتية الحاسوبية الخاصة بأجهزتهم. ويمكن أيضًا لأنظمة سير العمل إعداد تقارير مفصلة عن العمليات التي نفّذتها.

وتقول كارول جوبل - عالمة الحاسوب بجامعة مانشستر في المملكة المتحدة - إنَّ الحاويات – بصفة خاصة - تُعد إضافةً قوية لأنظمة سير العمل، لأنَّها تسمح للباحثين بحَزْم بعض المكونات الحاسوبية اللازمة لتنفيذ كل خطوة في الحاويات، ويمكن للمستخدمين الآخرين بعدئذ تحميل هذه الحاويات، لإعادة إنشاء البيئة الحاسوبية نفسها على أنظمتهم، حتى إنَّ هذه الحاويات تسمح للخطوات المختلفة بأنْ تستخدم مكوناتٍ غير متوافقة مع بعضها، مثل الإصدارات المختلفة من لغة «بايثون». وتضيف جوبل: "حمدًا لله على تلك الحاويات، لأنَّها أحدثت فرقًا هائلًا".

وعلى سبيل المثال.. في عام 2018، صمَّم الباحثون في شبكة المعلوماتية الحيوية الأفريقية «إتش ثري إيه بيو نت» - المعروفة بالإنجليزية باسم H3ABioNet ­­- أربع سلاسل معالجة بيانات، اثنان منها بنظام «لغة سير العمل المشتركة»، واثنان بنظام «نيكست فلو»، وحزموها في حاويات نظام «دوكر»، (انظر: S. Baichoo et al. BMC Bioinform. 19, 457; 2018). وهذا جعل من الممكن تكرار نتائج سلاسل معالجة البيانات، وأتاح إجراء سير العمل على الشبكة، رغم اختلاف الموارد الحاسوبية.

جودة فائقة

وتقول روتشي مونشي - مدير تطوير البرمجيات في معهد برود، التابع لمعهد ماساتشوستس للتكنولوجيا وجامعة هارفارد في كامبريدج بولاية ماساتشوستس - إنَّ المتخصصين في علم الأحياء الحاسوبي في المعهد كانوا متحمسين لتطوير واستخدام نظام سير العمل «كرومويل» Cromwell، واللغة الخاصة به «لغة تعريف سير العمل» Workflow Definition Language - المعروفة اختصارًا باسم (WDL) - لتحسين القدرة على تصميم عمليات سير العمل وفقًا لمعايير موحدة، وزيادة قابلية مشاركتها على مستوى المعهد بالكامل، وتعزيز قابليتها للتوسع، وتسهيل استخدامها لعلماء الأحياء من غير المبرمجين.

وينوّه مونشي إلى أن إمكانية توحيد معايير تصميم عمليات سير العمل هي إحدى الفوائد المميزة لأنظمة سير العمل، إذ إنه في حال لغات البرمجة النصية، توجد طرقٌ عدة لكتابة أكواد سلاسل معالجة البيانات، وهو ما يجعل من الصعب تجميع خطواتٍ مختلفة في سلسلة معالجة جديدة، لكنْ باستخدام إحدى لغات أنظمة سير العمل، يُمكن للباحثين إنشاء مكتباتٍ من الخطوات المتوافقة مع بعضها، يمكن تجميعها مثل لَبِنَات البناء. من هنا، ينشر معهد برود - على سبيل المثال - سلاسل معالجة بيانات قائمة على «لغة تعريف سير العمل» لبرنامج «جي ايه تي كيه» GATK الخاص به، على مِنَصّتي «جيت هاب» GitHub، و«تيرا» Terra، وعلى سجل الحاويات dockstore.org (ويُدرج موقع Dockstore أيضًا آليات سير عمل مبرمجة بنظامي «نيكست فلو»، و«لغة سير العمل المشتركة»).

وهناك أيضًا مشروع «إن إف-كور» nf-core، الذي يصمم مجموعةً فائقة الجودة من سلاسل معالجة البيانات بنظام «نيكست فلو»، لبيانات خاصة بعلم المعلوماتية الحيوية. ويقول فيليب إيويلز، الذي أسس المشروع في «مختبر العلم من أجل الحياة» SciLifeLab في ستوكهولم، إنَّ هدف المشروع هو تصميم سلاسل معالجة بيانات تعمل على نحوٍ متسق، وتدعم مجموعةً موحدة من الميزات، مثل التوافق مع أداة «كوندا»، ونظام «دوكر». ويقول: "إذا كان بإمكانك استخدام إحدى هذه السلاسل، يمكنك استخدامها جميعًا".

وفي المقابل، يهدف نظام «لغة سير العمل المشتركة» إلى إتاحة تشغيل السلاسل من خلال أنظمةٍ أخرى لسير العمل، عن طريق فصل الأجزاء الحاسوبية اللازمة لتنفيذ عمليات سير العمل عن الكود المطلوب لتنفيذها. وتقول جوبل، التي تبني سجلًا يمكن البحث فيه، خاص بعمليات سير العمل المصممة بنظام «لغة سير العمل المشتركة»: "إنّ وظيفة نظام لغة سير العمل المشتركة هي أن يكون بالفعل اللغة المشتركة لتصميم عمليات سير العمل. وهذا كل ما في الأمر. إنَّه يفعل ما يعبر عنه اسمه بالضبط".

إذن، هل تحتاج إلى نظامٍ لسير العمل؟ لا تتطلب كل المهام ذلك، وهناك عملية تعلُّم ينبغي المرور بها لتستخدم هذه الأنظمة. وتكون البرمجة النصية عادةً كافية لتنفيذ المهام غير المتكررة، ولتحليل سلسلة معالجة البيانات نفسها، لكنْ حسبما ترى الغالبية، تحل اللحظة الحرجة عندما تحتاج إلى تشغيل عمليات سير العمل نفسها مرارًا وتكرارًا، أو إذا كان من المحتمل نشر البيانات الناتجة عنها.

ويقول إيويلز إنَّه من السهل تعلُّم تلك اللغات لحسن الحظ، والأمثلة على ذلك عديدة. ويضيف قائلًا: "بمجرد أن تَأْلَفها، ستعتاد استخدامها، ثم ستتساءل كيف كنتَ تعيش دونها من قبل".