المحطة 2 · الدرس 2

مواقع الأقطاب

تبدأ من: S001R03.set (D2) · ما طُبّق عليه قبل هذا الدرس: استيراد ملف خام: EDF و BDF و BrainVisionتنزيل البيانات (يفتح في نافذة جديدة)
سكربت الوصول لهذه الحالة
MATLAB
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;
% Folder where you keep the course data (change it)
dataFolder = 'C:\Users\me\Documents\eeg-course';
EEG = pop_loadset('filename', 'S001R03.set', 'filepath', dataFolder);
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, 'setname', 'S001R03', 'gui', 'off');
eeglab redraw;

الفكرة باختصار

داتاستdatasetملف بيانات EEG واحد محمّل في EEGLAB مع معلوماته. (dataset) الآن تعرف أسماء قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. (channel) فقط. لا تعرف أين يقع كل قطبelectrodeالقطعة المعدنية التي توضع على الرأس لالتقاط الإشارة. (electrode) على الرأس. كل خريطة رأس (خريطة الرأسscalp mapرسم يبيّن توزيع قيمة على الرأس من الأعلى.)، وكل خطوة تستخدم القنوات المجاورة (مثل الاستيفاءinterpolationتقدير إشارة قناة محذوفة من القنوات المحيطة بها. (interpolation) قناة سيئةbad channelقناة إشارتها مسطّحة أو مليئة بالضوضاء طوال التسجيل تقريباً.)، وخرائط مكوّنات ICAطريقة تفصل الإشارة المسجّلة إلى مصادر مستقلة، بعضها دماغي وبعضها آرتفاكت.، كلها تحتاج هذه المواقع.

قبل وبعد

قبل / بعد

الصورة تُضاف قريباً.

قبل: نافذة EEGLAB الرئيسية وفيها S001R03، وسطر Channel locations يعرض No (labels only). بنفس حجم النافذة وإطارها في صورة “بعد” تماماً، حتى يتطابق المنزلق. لقطة واجهة حقيقية من EEGLAB 2026.1 (source: eeglab-ui).

الصورة تُضاف قريباً.

بعد: نفس نافذة EEGLAB الرئيسية بعد جلب المواقع، وسطر Channel locations يعرض Yes. باقي الأسطر (64 قناة، 160 هرتز) لم تتغيّر. بنفس حجم النافذة وإطارها في صورة “قبل” تماماً. لقطة واجهة حقيقية من EEGLAB 2026.1 (source: eeglab-ui).

ماذا يعني ما رأيته؟
رسم مواقع القنوات بالأسماء من فوق الرأس والأنف في الأعلى: 64 قطباً، منها Cz في الوسط و Iz و T9 و T10 على حافة الدائرة أو خارجها.
64 من 64 موقعاً معروضة، وأقطاب الحافة خارج الدائرة أمر متوقعلقطة من واجهة EEGLAB (SCCN)

أسئلتك بعد هذا، كل جواب في قسمه:

لماذا أحتاج هذه الخطوة؟

السبب بالتفصيل، والمصطلحات التي تحتاجها

يجد EEGLAB المواقع بمطابقة اسم كل قناة مع ملف قالب فيه الأسماء القياسية، مثل FC5 أو Cz. والمطابقة تنجح فقط إذا كُتبت الأسماء بالطريقة القياسية.

في S001R03.edf تنتهي الأسماء بنقاط زائدة: Fc5. و Cz.. و T10.. النقاط تكمّل كل اسم إلى أربعة أحرف. واسم مثل Cz.. لا يطابق Cz في القالب، فلا يجد له EEGLAB موقعاً. هذه مشكلة حقيقية ستقابلها مع ملفات أجهزة أخرى، لذلك نصلحها هنا أولاً.

كيف أطبّقها في EEGLAB؟

9 خطوة من القوائم

1. شاهد المشكلة

  1. افتح الداتاست S001R03.set التي حفظتها في الدرس السابق.
  2. في النافذة الرئيسية، سطر Channel locations يعرض No (labels only).
  3. اكتب في الـ Command Window: {EEG.chanlocs(1:3).labels}. الناتج 'Fc5.' 'Fc3.' 'Fc1.': كل اسم ينتهي بنقطة.

2. احذف النقاط من الأسماء

تستطيع تغيير اسم واحد يدوياً في Edit ثم Channel locations، في خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها. Channel label (“label”). لكن الأسماء 64، فالأسرع أن تحذف النقاط منها كلها بأربعة أسطر في الـ Command Window:

MATLAB
for iChan = 1:EEG.nbchan
    EEG.chanlocs(iChan).labels = strrep(EEG.chanlocs(iChan).labels, '.', '');
end
[ALLEEG, EEG, CURRENTSET] = eeg_store(ALLEEG, EEG, CURRENTSET); eeglab redraw;

اكتب {EEG.chanlocs(1:3).labels} مرة أخرى. الناتج الآن 'Fc5' 'Fc3' 'Fc1'.

3. اجلب المواقع

  1. افتح Edit ثم Channel locations.
  2. لأن القنوات بلا مواقع بعد، يفتح EEGLAB أولاً نافذة عنوانها Look up channel locations?.
  3. أبقِ الاختيار الافتراضي في قائمةmenuمجموعة أوامر تظهر عند الضغط على اسمها في أعلى النافذة.: use MNI coordinate file for BEM dipfit model. والملف تحته standard_1005.elc.
  4. اترك خانة Import file instead and erase all channels غير مفعّلة.
  5. اضغط OK. يطبع الـ Command Window السطر 64 channel with the same label found and imported.
  6. تفتح نافذة تعديل القنوات، وفيها كل قناة بإحداثياتها. اضغط OK في أسفلها لتغلقها. التغييرات لا تُطبَّق إلا بعد إغلاق هذه النافذة.

4. تحقّق من المواقع على الرأس

افتح Plot ثم Channel locations ثم By name. يظهر رأس من الأعلى، والأنف في الأعلى، واسم كل قطب في مكانه.

5. احفظ

افتح File ثم Resave current dataset(s). يكتب هذا الأسماء المصحّحة والمواقع في نفس الملف S001R03.set في مجلد الدروس.

كيف أكتبها بالكود؟

نفس الخطوات في 20 أسطر MATLAB
MATLAB
% Start EEGLAB and load the file from the previous lesson
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;
dataFolder = 'C:\Users\me\Documents\eeg-course';   % change it
EEG = pop_loadset('filename', 'S001R03.set', 'filepath', dataFolder);
[ALLEEG, EEG, CURRENTSET] = eeg_store(ALLEEG, EEG, 0);

% Remove the trailing dots from the names (Fc5. -> Fc5, Cz.. -> Cz)
for iChan = 1:EEG.nbchan
    EEG.chanlocs(iChan).labels = strrep(EEG.chanlocs(iChan).labels, '.', '');
end

% Look up the positions in the standard MNI template
% (case does not matter: Fc5 matches FC5)
EEG = pop_chanedit(EEG, 'lookup', 'standard_1005.elc');
EEG = eeg_checkset(EEG);

% Plot the electrodes by name (same as Plot > Channel locations > By name)
figure; topoplot([], EEG.chanlocs, 'style', 'blank', ...
    'electrodes', 'labelpoint', 'chaninfo', EEG.chaninfo);

% Save over the lesson file and show the result in the main window
EEG = pop_saveset(EEG, 'savemode', 'resave');
[ALLEEG, EEG, CURRENTSET] = eeg_store(ALLEEG, EEG, CURRENTSET);
eeglab redraw
  • strrep(text, '.', '') تستبدل كل نقطة في النص بلا شيء.
  • 'lookup', 'standard_1005.elc' هو نفس الاختيار الافتراضي في نافذة الجلب. يجد EEGLAB هذا الملف داخل pluginحزمة تضيف وظائف أو قوائم جديدة إلى EEGLAB. (plugin) dipfit التي تأتي مع EEGLAB.

أي قيمة أختار؟

القيم المناسبة حسب هدف تحليلك

الاختيار الأساسي: من أين تأتي المواقع؟

المصدرمتى تستخدمهكيف
قالب MNI القياسي (standard_1005.elc)قبعتك تستخدم أسماء 10-20 أو 10-10 القياسية، ولم تقِس المواقع. هذه حالتنا.الاختيار الافتراضي في Look up channel locations?
ملف المواقع الخاص بقبعتك (من الشركة المصنّعة)أسماء القنوات في جهازك غير قياسية، مثل الأرقام E1 و E2Read locations في نافذة تعديل القنوات
مواقع مقيسة على رأس مشاركparticipantالشخص الذي سُجّلت بياناته في التجربة.قِست مواقع الأقطاب بجهاز تحديد المواقع (digitizer) في جلسة التسجيلRead locations مع ملف ذلك الجهاز

الأحرف الكبيرة والصغيرة لا تهم. يقارن EEGLAB الأسماء بالأحرف الصغيرة، فـ Fc5 يجد FC5 في القالب. أما الأحرف الزائدة مثل النقاط أو المسافات فتهم.

كيف أتأكد أنها نجحت؟

4 فحوص سريعة
  1. سطر Channel locations في النافذة الرئيسية يعرض Yes.
  2. طبع الـ Command Window السطر 64 channel with the same label found and imported.
  3. Plot ثم Channel locations ثم By name يعرض 64 قطباً: Cz في الوسط، و Fpz في الأمام، و Oz في الخلف.
  4. all(~cellfun(@isempty, {EEG.chanlocs.X})) يعطي 1: لكل قناة إحداثيات.

احتفظ بـ S001R03.set. الدرس التالي (حدثeventعلامة في التسجيل تحدد لحظة شيء مهم، مثل ظهور مثير.) يكمل عليه.

ما الأخطاء التي يقع فيها كثيرون؟

5 أخطاء، وكيف تتجنّبها
  • الجلب قبل حذف النقاط. لا يطابق أي اسم، ولا يظهر أي تحذير. ويبقى سطر Channel locations على No (labels only). احذف النقاط، ثم اجلب المواقع من جديد.
  • عدم إغلاق نافذة تعديل القنوات بزر OK. التغييرات لا تُطبَّق إلا بعد إغلاقها.
  • ظنّ أن الأقطاب خارج الدائرة خطأ. الدائرة تمثّل المستوى الأفقي المارّ بمركز الرأس. الأقطاب تحت هذا المستوى، حول الحافة السفلى للقبعة (مثل T7 و T8 و T9 و T10 و Iz)، تُرسم عليها أو خارجها. هذا متوقع.
  • تفعيل خانة Import file instead and erase all channels. هذا يستبدل قنواتك بكل قنوات القالب (مئات الأسماء). اتركها غير مفعّلة.
  • افتراض أن ترتيب القنوات في الملف يتبع الرأس. في S001R03.edf القناة الأولى Fc5 لا Fp1. ابحث عن القناة باسمها دائماً، لا برقمها.

كيف أكتبها في ورقتي؟

قالب Methods: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته

قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.

Channel labels were cleaned of trailing periods and matched to the standard 10-5 template in MNI space (standard_1005.elc) with pop_chanedit (EEGLAB 2026.1).

أين أقرأ أكثر؟

3 مراجع: التوثيق الرسمي أولاً

مكتوب لـ EEGLAB 2026.1 · 2026-10-28

تحتاج مساعدة؟

اسأل، أو شاركنا رأيك، أو بلّغ عن خطأ