السكربتات والأتمتة

تحويل كل ضغطة في الواجهة إلى سطر كود، ثم تشغيل البايبلاين على كل المشاركين بدون تدخّل.

6 دروس: 2 أساسي، 2 مهم، 2 اختياري

بعد هذه المحطة ستستطيع أن:

  • تستخرج الكود من eegh لأي خطوة سويتها
  • تكتب سكربتاً لمشارك واحد من الاستيراد للحفظ
  • تشغّله على كل المشاركين وتنظّم ملفاتك بدون ما تنفجر مساحة التخزين
  • تعرف متى يصلح بايبلاين جاهز وماذا تتحقق منه قبل أن تثق بنتيجته

الدروس

  1. الأمر eegh وسجل الأوامرأساسي10 دقائق
  2. سكربت لمشارك واحدأساسي15 دقيقة
  3. معالجة دفعات (batch)مهم15 دقيقة
  4. تنظيم الملفات والتخزينمهم12 دقيقة
  5. الحوسبة على HPCاختياري12 دقيقة

اختبر نفسك

5 أسئلة. نتيجتك تبقى عندك ولا تُرسل لأي مكان.

1. طبّقت فلتراً من الواجهة وتريد سطر الكود المقابل له بالضبط. ما أسرع طريقة؟
اعرض الإجابة

الإجابة الصحيحة: اكتب eegh في نافذة الأوامر

eegh يطبع كل أوامر الجلسة بالترتيب، ومنها سطر الفلتر بقيمه، مثل 'revfilt',1 لخانة notch. أما تشغيل eeglab من جديد فيبدأ سجلاً فارغاً، فتفقد سجل الجلسة إذا لم تحفظه.

راجع الدرس: الأمر eegh وسجل الأوامر

2. وصلك ملف .set من زميل وتريد أن تعرف كيف صُنع. أين تنظر؟
اعرض الإجابة

الإجابة الصحيحة: في EEG.history، لأنه محفوظ داخل الملف نفسه

سجل الداتاست (EEG.history) يحفظ الأوامر التي غيّرت هذه الداتاست، ويسافر معها داخل ملف .set. أما eegh فسجل جلستك أنت. واسم الملف لا يكفي: ملفان باسم clean قد يكونان مرّا بفلاتر مختلفة.

راجع الدرس: الأمر eegh وسجل الأوامر

3. رتّب هذه الأسطر كما تأتي في سكربت المشارك الواحد:
  1. EEG = pop_reref(EEG, [], 'exclude', eogIdx);
  2. EEG = pop_epoch(EEG, {'square'}, [-1 2], 'newname', 'D1 epochs', 'epochinfo', 'yes');
  3. EEG = pop_loadset('filename', 'eeglab_data.set', 'filepath', dataDir);
  4. EEG = pop_interp(EEG, fullLocs, 'spherical');
  5. EEG_ica = pop_runica(EEG_ica, 'icatype', 'runica', 'extended', 1);
  6. EEG = pop_eegfiltnew(EEG, 'locutoff', 0.1);
اعرض الإجابة

الإجابة الصحيحة: 1. EEG = pop_loadset('filename', 'eeglab_data.set', 'filepath', dataDir);، 2. EEG = pop_eegfiltnew(EEG, 'locutoff', 0.1);، 3. EEG = pop_interp(EEG, fullLocs, 'spherical');، 4. EEG = pop_reref(EEG, [], 'exclude', eogIdx);، 5. EEG_ica = pop_runica(EEG_ica, 'icatype', 'runica', 'extended', 1);، 6. EEG = pop_epoch(EEG, {'square'}, [-1 2], 'newname', 'D1 epochs', 'epochinfo', 'yes');

نفس ترتيب المحطات: التحميل، ثم الفلترة، ثم الاستيفاء قبل المرجع، ثم المرجع المتوسط قبل ICA، ثم ICA على نسخة 1 هرتز، وفي الآخر التقطيع. لا تنقل خطوة من مكانها بلا سبب، فكل ترتيب منها مشروح في درسه.

راجع الدرس: سكربت لمشارك واحد

4. سكربتك يعمل اليوم، وتشكّ أنه يعتمد على متغيّر مثل badChans بقي من جلسة سابقة. كيف تتأكد؟
اعرض الإجابة

الإجابة الصحيحة: شغّله بعد clear من MATLAB جديد، دون أي ضغط على الواجهة أثناء التشغيل

السكربت الذي يعمل فقط لأن EEG أو badChans موجود مسبقاً سيفشل غداً. شغّله دائماً بعد clear. وإذا فتح نافذة وانتظرك، فهناك سطر بلا معاملات كافية، فأصلحه.

راجع الدرس: سكربت لمشارك واحد

5. أي التعديلات تجعل السكربت يعمل على حاسب آخر وبلا تدخّل منك؟ (اختر كل ما ينطبق)
اعرض الإجابة

الإجابة الصحيحة: استبدال المسار الثابت بـ fullfile(eeglabRoot, 'sample_data')، وضع الإعدادات التي تتغيّر بين المشاريع في قسم Settings أعلى الملف، حذف سطور الرسم مثل figure و pop_viewprops من سكربت المعالجة

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

راجع الدرس: سكربت لمشارك واحد