المشاركات

عرض المشاركات من 2021

برمجة المعلوماتية الحيوية - Bioinformatics Programming

صورة
 كورس برمجة المعلوماتية الحيوية : في هذه الدروس نقوم بتقديم مقدمة لأساسيات التعامل مع البيانات من نوع DNA وRNA هكذا نوع من البيانات هي عبارة عن سلسلة طويلة جدامن الحروف التالية :  ACGT مكررة بتنسيق بحيث يعكس الصفات الوراثية للكائنات الحية. التطبيق العملي باستخدام بايثون دروس هذا الكورس : مقدمة عامة للكورس ( رابط ) DNA sequence validation  ( رابط ) Counting DNA Nucleotides  ( رابط ) DNA to RNA using Python ( رابط ) DNA Reverse Complement using Python ( رابط ) Translating RNA into Protein using Python ( رابط ) Counting Point Mutations using Python ( رابط ) جميع الدروس عبارة 

PyCharm Python Editor

صورة
شرح لاهم خائص محرر الكود المعروف باي جارم.

Getters and Setters الاهمية

صورة
 اذا بدأت بتعلم البرمجة الكائنية ودرست مفهوم التغليف Encapuslation فهذا المفهوم يؤكد على اهمية منع اي شخص من التواصل مع بيانات الكلاس والـ objects من خارج. ولذلك يجب عمل بوابات برمجية للوصول لبيانات الكلاس هذه البوابات هي Getters and Setters Get method تقوم بعملية استرجاع قيمة المتغير. Set method تقوم بعملية احلال قيمة جديدة في المتغير وترجع اهمية هذه ال methods في تقليل الاخطاء البرمجية التي ممكن ان تحصل بسبب ان هناك اكثر من شخص يقوم بعملية تحديث على بيانات الكلاس بدون اتباع ضوابط الكلاس. فمثلا لو كان هناك نظام لادارة بيانات ومعلومات الصحية والرياضية للشخص، وهناك كلاس يتعلق بمعلومات الشخص (طول ، وزن ... الخ). وهناك كلاس اخر يقوم بعملية تحديث على الوزن فمثلا لو كان اللكلاس الاخر تمت برمجته من قبل مبرمج يستخدم الرطل في قياس الوزن والكلاس تستخدم كيلوجرام. فهنا ممكن تحصل مشكلة اذا ما عدل هذا المبرمج على البيانات بشكل مباشر بدون الرجوع الى تعليمات الكلاس ومراجعة البيانات قبل حفظها في المتغير.

مدير حزم والمكتبات في البايثون pip manager

صورة
 اهم ما يمييز لغة البرمجة بايثون هو كثرة مكتباتها وروعتها ومدى فائدتها. فَكر بأي فكرة وستجد هناك مكتبة تسهل عليك 60% من المجهود ومن الوقت. وماجعل الامر افضل هو ان بايثون سهلت علينا طريقة تنصيب وادارة هذه المكتبات عن طريق مدير للمكتبات اسمه pip. هذا بكل بساطة ممكن يساعدك بالتنصيب ، تحديث وازالة المكتبات. قمت بعمل شرح كامل لـ pip manager يمكنك الاطلاع على الشرح الذي يحوي مثال عملي:

الكبسولات البرمجية

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

التجريد والتوثيق في بناء الانظمة

صورة
احدى مبادئ البرمجة الكائنية التوجه هي التجريد Abstraction وببساطة هذا المفهوم يعني استخدام الكلاسات او البرمجيات المكتوبة من قبل اشخاص اخرين واستخدامها في الكود المصدري الخاص بك بشكل مبسط جدا ومجرد من التعقيدات الداخلية. كل ما عليك معرفته هو الوظيفة ، القسم الداخلة والخارجة من هذا الجزء البرمجي (كلاس او دالة برمجية) لذلك حين يتم كتابة الكود البرمجي يجب اني نراعي هذا المفهوم، عن طريق كتابة تعليقات وتوثيق داخل الكود نفسه او بناء صفحات ويب عامة تشرح طرق التعامل مع الكود المصدري الخاص بنا. لغة بايثون تسمح لك بعمل التوثيق بشكل مباشر داخل الكود المصدري وبشكل يسهل قراءته باستخدام دالة الـ help التي وظيفتها بكل اختصار تجلب التعليمات الخاصة باستخدام كلاس او ميثود او فانكشن. هناك علاقة رائعة بين دالة help والـ DocString في البايثون ماتقوم كتابته في الDocstring سيتعبر هو الشرح الذي سيظهر عن استدعاء الدالة help

التجريد ‏في ‏البرمجة ‏الكائنية ‏التوجه

صورة
هناك أربع مبادئ رئيسية في البرمجة الكائنية التوجه Abstraction, encapsulation, inheritance and polymorphism في هذه التدوينة سأتكلم عن التجريد abstraction المفهوم ببساطة هو التجرد من التعقيدات والتفصيلات الدقيقة التي لا يهمني معرفتها كي اقوم بتنفيذ ميثود معين داخل كلاس كتبه مبرمج آخر! يعني مثلا لا يهمني اني اعرف كيف تم عمل  'dcba'.sort() كيف رتبت هذه الميثود الموجودة في كلاس String مابهمني هو فقط أتأكد بأن وظيفتها تطابق حاجتي وكيف اقوم باستخدامها ك(كيفية الاستدعاء، عدد العوامل الحقيقة التي يجب ارسالها عند الاستدعاء) هذا سيفتح باب واسع جدا البناء السريع على خبرات بعضنا البعض وعدم الوقوع في دوامة انك يجب أن تعرف كل تفصيلات النظام المعقد! اغلب الشركات العظمى حالياً تستخدم مكتبات برمجية جاهزة مثل مكتبات الذكاء الاصطناعي scikit learn and tensor flow ومكتبات الويب مثل Django and flask لذلك ياصديقي لا تحمل نفسك اكبر من الوقت الذي لديك ولا الجهد لتدخل نفسك بكل التفاصيل الصغيرة الغير مؤثرة ودع جمالية التجريد تسهل عليك عملك 🙂👍🏼

DICOM الصور الرقمية الطبية والتعامل معها باستخدام بايثون

صورة
لم اكن اعرف ان هناك معيار عالمي للصور الطبية يدعى DICOM هذا المعيار تم تطويره والمسؤول عنه حاليا هي الجمعية الوطنية لمصنعي الاجهزة الكهربائية NEMA  حيث يقدم هذا المعيار خدمة رائعة للشركات المصنعة للأجهزة المتعلقة بالتصوير الطبي ( اجهزة تصوير ، اجهزة طباعة ، نقل وحفظ هذه الصور)  جميع هذه الاجهزة تعمل وفق نظام عمل موحد يسهل التواصل فيما بينها. في هذه المدونة سأقدم شرح مبسط للأدوات التي تحتاجها للتعامل مع الفايلات المبنية وفق المعيار DICOM صيغة هذه الملفات بالعادة تنتهي بـ dcm.  هناك عدة مكتبات يمكنها التعامل مع هكذا نوع لكن النوع الذي استخدمه بالشرح في هذه التدوينة هي  pydicom كبداية كل ماتحتاجه هو تضمين هذه المكتبة ضمن بيئة بايثون الخاصة بك. وبكل بساطة للقيام بهذا الامر ماعليك سوى استخدام الامر السحري في بايثون لتضمين اغلب المكتبات بكل سهولة: pip install pydicom بعد ذلك تقوم بعمل استدعاء للأمور التي تحتاجها في عملك  dcmread هي الكلاس المسؤولة عن قراءة الملف.  matplotlib.pyplot المسؤولة عن رسم الصور.  get_testdata_file نستخدمها لجلب بيانات صورية طبية...