دروس ActivePapers
إصدار Python إصدار JVM إصدار Pharo المدونة … مكتبة —> برنامج تعليمي لـ ActivePapers يوضح هذا البرنامج التعليمي الموجز كيفية: * فحص محتويات ورقة ActivePaper * استخراج الكود والوثائق (بما في ذلك الرسوم البيانية) * تعديل معاملات الحساب * تعديل الكود * إعادة تشغيل العمليات الحسابية * إنشاء ورقة ActivePaper من الصفر يمكن تنزيل ملف المثال الخاص بهذا البرنامج التعليمي من Figshare. ومن الجيد أيضًا الاطلاع على الوصف الموجود في موقع Figshare. لست بحاجة إلى فهم ما يفعله هذا الملف أو سبب وجوده، ولكن إذا كنت مهتمًا، فلا تتردد في قراءة الورقة البحثية التي تصف العمل، والتي تتناول حساب موترات الانتقالية والدورانية للبروتين في المحلول بناءً على مسار ديناميكيات جزيئية. يرجى نسخ ملف ActivePaper الذي تم تنزيله إلى دليل فارغ. افتح نافذة طرفية (Shell)، وانتقل إلى ذلك الدليل. عند كتابة ls -l يجب أن ترى شيئًا مشابهًا لما يلي: -rw-r--r-- 1 hinsen staff 148133188 Sep 26 16:21 lysozyme_diffusion.ap ## فحص المحتويات ينتج الأمر aptool ls قائمة طويلة بمجموعات البيانات، تبدأ بـ: * code/correlation_functions * code/diffusion_tensor * code/identify_trajectories * code/plots * code/python-packages/fitting * code/python-packages/molecular_structure * code/python-packages/mosaic * code/python-packages/quaternion * code/python-packages/time_series * code/python-packages/units * code/thermal_averages * code/trajectory_processing * data/coordinate_trajectories/rotation_laboratory_frame_1 * data/coordinate_trajectories/rotation_laboratory_frame_10 * data/coordinate_trajectories/rotation_laboratory_frame_2 ولكن كيف يعرف aptool ملف ActivePaper الذي تريد فحصه؟ حسنًا، إذا كان هناك ملف واحد فقط يحمل الامتداد .ap في الدليل الحالي، فهذا هو الملف الذي سيتم اعتماده. ولهذا السبب يُعد استخدام دليل منفصل لكل مشروع ActivePaper فكرة جيدة. وإذا كان لديك أي سبب يمنعك من القيام بذلك، يمكنك تمرير اسم ملف ActivePaper صراحةً: bash aptool ls -p lysozyme_diffusion.ap يمكنك الحصول على مزيد من المعلومات باستخدام aptool ls -l مما يعطي ناتجًا مثل: 2013-06-07/09:13:05 calclet code/correlation_functions 2013-06-07/09:19:48 calclet code/diffusion_tensor 2013-06-07/10:02:29 calclet code/identify_trajectories 2013-06-12/08:03:48 calclet code/plots 2013-06-04/15:42:02 module code/python-packages/fitting 2013-05-02/15:11:53 module code/python-packages/molecular_structure 2013-06-14/15:46:18 reference code/python-packages/mosaic 2013-05-23/11:42:31 module code/python-packages/quaternion 2013-05-27/04:13:09 module code/python-packages/time_series 2013-05-02/15:12:07 module code/python-packages/units بالإضافة إلى العديد من الأسطر المشابهة لذلك. يُظهر العمود الأول تاريخ ووقت آخر تعديل لكل مجموعة بيانات. ويُظهر العمود الثاني نوع مجموعة البيانات. تحتوي القائمة أعلاه على نوعين من الكود القابل للتنفيذ: calclet و module. وهناك نوع ثالث غير موجود في هذه القائمة وهو importlet. الـ module هو بالضبط ما تتوقعه كمبرمج Python: ملف كود مصدر Python ليتم استيراده بواسطة كود Python آخر. أما calclets و importlets فهما نوعان من النصوص البرمجية (Scripts) التي يوفرها ActivePapers. النوع الأكثر شيوعًا هو calclet، وهو نص برمجي Python بصلاحيات مقيدة: لا يمكنه إجراء أي عمليات إدخال/إخراج (I/O) خارج ملف ActivePaper المContained فيه، مما يعني أنه لا يمكنه الوصول neither إلى الملفات ولا إلى موارد الشبكة. تضمن هذه القيود إمكانية إعادة الإنتاج (حيث يُضمن وجود جميع بيانات الإدخال داخل ActivePaper) وتحمي المستخدم من الأخطاء البرمجية والكود الضار. لكنها تعني أيضًا أنه لا يمكن استخدام calclets لاستيراد البيانات إلى ActivePaper. وهنا يأتي دور importlets: فهي يمكنها استخدام أي ميزة في Python والوصول إلى أي مورد. وهذا يعني أيضًا أنه لا ينبغي تشغيل importlets التابعة لشخص آخر دون فحصها أولًا. تخبرك صفحة [[Calclets]] بكيفية كتابة calclets و importlets. يوجد نوع آخر لمجموعة البيانات في القائمة أعلاه: وهو reference (مرجع)، الذي يعمل للإشارة إلى مجموعات بيانات في ملفات ActivePaper أخرى. يتكون المرجع من جزأين: إشارة إلى الملف، واسم مجموعة البيانات داخل ذلك الملف. يمكن أن تكون إشارة الملف عبارة عن DOI لملف منشور، أو اسم ملف محلي. ومن الواضح أن أسماء الملفات المحلية لا معنى لها على حاسوب أي شخص آخر، لذا فإن المراجع المحلية تشبه إلى حد ما importlets: فهي توثق مصدر البيانات، لكنها لا تجعلها متاحة. لنلقِ نظرة على المراجع في ملف ActivePaper الخاص بنا: bash aptool refs نجد معرف DOI واحد وعشرة مراجع محلية: * doi:10.6084/m9.figshare.705829 * local:lysozyme_spce_rbt_1 * local:lysozyme_spce_rbt_10 * local:lysozyme_spce_rbt_2 * local:lysozyme_spce_rbt_3 * local:lysozyme_spce_rbt_4 * local:lysozyme_spce_rbt_5 * local:lysozyme_spce_rbt_6 * local:lysozyme_spce_rbt_7 * local:lysozyme_spce_rbt_8 * local:lysozyme_spce_rbt_9 يشير معرف DOI إلى مكتبة pyMosaic، الإصدار 0.1.1، كما هي مودعة على Figshare. أما الملفات المحلية فهي مسارات المحاكاة التي يتم تحليلها في ملف ActivePaper. دعنا نحصل على مزيد من المعلومات حول هذه المراجع: bash aptool refs -v doi:10.6084/m9.figshare.705829 links: code/python-packages/mosaic local:lysozyme_spce_rbt_1 copies: data/center_of_mass data/orientation data/reference_structure data/time وهكذا بالنسبة لملفات الإدخال التسعة الأخرى. يوضح هذا أن معرف DOI يُستخدم في رابط指向 إلى مجموعة البيانات code/python-packages/mosaic في الملف الوجهة، بينما استُخدمت الملفات المحلية كمصدر للبيانات التي تم نسخها إلى داخل ملف ActivePaper نفسه. وبالتالي، فإن مرجع النسخ (copy reference) يخدم أغراض التوثيق فقط، ولا توجد حاجة لامتلاك نسخة من الملف المشار إليه. بالعودة إلى أنواع مجموعات البيانات، هناك أنواع أخرى قليلة لم تظهر في الأسطر الأولى من aptool ls -l، لذا دعنا ننظر إلى بعض الأسطر المتبقية: 2013-07-03/12:24:26 text documentation/README 2013-06-14/15:55:08 file documentation/c_rr_diagonals.pdf 2013-06-14/15:55:00 data data/correlation_function_integration_limit 2013-06-14/15:46:47 dummy data/coordinate_trajectories/rotation_laboratory_frame_1 يمكنك على الأرجح تخمين معنى text. وأما file فهو ببساطة ما يعنيه الملف في عالم Unix: تسلسل من البايتات، دون أي تفسير خاص مرتبط بها. سترى لاحقًا كيفية استخراج مثل هذا الملف. قد يكون معنى data أقل وضوحًا، وخاصة كيف يختلف عن file. الإجابة هي أن data هي مجموعة بيانات HDF5 اعتباطية، تتميز بمساحة بيانات (data space) ونوع بيانات (data type). فكر فيها كمصفوفة (array) إذا شئت، فهي في الواقع قريبة جدًا من ذلك. يتبقى لدينا dummy، وهي مجموعة بيانات غير موجودة. وبشكل أدق، هي مجموعة بيانات لم تعد موجودة. إنها مجموعة بيانات تم إنشاؤها بواسطة calclet، ثم تمت إزالتها صراحةً (باستخدام aptool dummy ...) لتقليل حجم الملف. إذا أردت فحصها، أو تشغيل أي من calclets التي تقرأها، فيجب عليك إعادة إنشائها أولًا عن طريق إعادة تشغيل calclet. لذا دعنا نفعل ذلك: bash aptool update -v يقوم هذا الأمر بتحديث كل ما يحتاج إلى تحديث في ملف ActivePaper: مجموعات البيانات الوهمية (dummy)، وكذلك مجموعات البيانات القديمة (التي يزيد عمرها عن إصدار calclet الحالي الذي أنتجها). يجعل الخيار -v الناتج مفصلاً (verbose)، حيث يخبرك بأي calclets تم تشغيلها ولماذا. استعد للانتظار قليلاً؛ على جهازي، تستغرق العملية حوالي ثماني دقائق. يمكننا ملاحظة أن حجم الملف قد زاد بشكل كبير: bash ls -l -rw-r--r-- 1 hinsen staff 540352636 Oct 23 14:54 lysozyme_diffusion.ap علاوة على ذلك، أصبحت مجموعات البيانات التي كانت سابقًا dummy الآن حقيقية: bash aptool ls -l data/coordinate_trajectories/rotation_laboratory_frame_1 2013-10-23/14:45:29 data data/coordinate_trajectories/rotation_laboratory_frame_1 ## استخراج الرسوم البيانية إذا نظرت إلى المخرج الكامل لـ aptool ls -l، فستلاحظ وجود بعض ملفات PDF تحت documentation. لعرضها، قم باستخراجها كملفات حقيقية: bash aptool checkout documentation سيؤدي هذا أيضًا إلى جلب ملف README، حيث إنه يستخرج كل شيء في مجموعة HDF5 المسماة documentation إلى دليل محلي يسمى، كما خمنت، documentation. تُخصص مجموعة documentation في ملف ActivePaper للبيانات الموجهة للبشر، ولا تُستخدم بشكل عام كمدخلات للعمليات الحسابية. لاحظ أنه يمكنك بالطبع استخراج ملفات فردية، على سبيل المثال: bash aptool checkout documentation/README.txt يستخرج أمر checkout فقط مجموعات البيانات الأحدث من الملف المقابل على القرص، إذا كان موجودًا بالفعل. وبالتالي يمكنك تحرير الملفات المستخرجة دون التعرض لخطر كتابتها فوقها. سنرى هذا قيد التنفيذ فورًا عند العمل مع الكود. ## استخراج وتعديل الكود بعد ذلك، دعنا نلقي نظرة على جميع الأكواد
إنشاء محفظة بيانات، مشروعًا تلو الآخر
مسارات علوم البيانات القائمة على المشاريع مع محطة موجهة ومجموعات بيانات حقيقية