المحطة 4 · الدرس 6

قراءة مكوّنات الآرتفاكت

أساسي15 دقيقةقبل هذا الدرس: ICLabel وحذف المكوّناتاطبع البطاقة
تبدأ من: eeglab_data.set (D1) · ما طُبّق عليه قبل هذا الدرس: فلترة high-pass و low-pass، إزالة ضوضاء الكهرباء (50 أو 60 هرتز)، القنوات السيئة، الاستيفاء (interpolation)، إعادة المرجع (re-referencing)، تشغيل ICA، فلتر 1 هرتز قبل ICA ونسخ الأوزانتنزيل البيانات (يفتح في نافذة جديدة)
سكربت الوصول لهذه الحالة
MATLAB
% Shortcut: if you saved D1_main_ica.set in the 1-Hz filtering lesson, keep
% the first line and the last two lines, and replace every line between them with:
% EEG = pop_loadset('D1_main_ica.set', pwd);
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;
eeglabRoot = fileparts(which('eeglab'));
EEG = pop_loadset('eeglab_data.set', fullfile(eeglabRoot, 'sample_data'));
fullLocs = EEG.chanlocs;

% Main dataset: high-pass at 0.1 Hz, then 60 Hz line-noise removal
EEG = pop_eegfiltnew(EEG, 'locutoff', 0.1);
EEG = pop_eegfiltnew(EEG, 'locutoff', 58, 'hicutoff', 62, 'revfilt', 1);

% Bad channels you removed earlier, e.g. {'T7'}; leave empty if none
badChans = {};
if ~isempty(badChans)
    EEG = pop_select(EEG, 'rmchannel', badChans);
    EEG = pop_interp(EEG, fullLocs, 'spherical');
end

% Average reference, EOG channels excluded
eogIdx = find(ismember({EEG.chanlocs.labels}, {'EOG1', 'EOG2'}));
EEG = pop_reref(EEG, [], 'exclude', eogIdx);

% ICA on a 1-Hz copy, then copy the weights back
EEG_ica = pop_eegfiltnew(EEG, 'locutoff', 1);
EEG_ica = pop_runica(EEG_ica, 'icatype', 'runica', 'extended', 1);
EEG.icaweights  = EEG_ica.icaweights;
EEG.icasphere   = EEG_ica.icasphere;
EEG.icachansind = EEG_ica.icachansind;
EEG.icawinv     = [];
EEG.icaact      = [];
EEG = eeg_checkset(EEG);
EEG.filename = ''; EEG.filepath = ''; EEG.datfile = ''; EEG.saved = 'no';
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, 'setname', 'D1 main', 'gui', 'off');
eeglab redraw;

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

ICLabelأداة تصنّف كل مكوّن ICA إلى سبع فئات مع احتمال لكل فئة. يعطي كل مكوّن ICAطريقة تفصل الإشارة المسجّلة إلى مصادر مستقلة، بعضها دماغي وبعضها آرتفاكت. احتمالاً لكل فئة من سبع فئات. لكنه قد يخطئ، وقرار حذف المكوّن قرارك أنت. في درس ICLabel قرأت ثلاث فئات: العين عضلةmuscleنشاط كهربائي من العضلات بترددات عالية، غالباً من الفك والرقبة. والدماغ. هذا الدرس يغطّي الفئات السبع، مع العلامة التي تميّز كل واحدة.

التوتوريال الرسمي يعطي ترتيب النظر إلى المكوّن:

قبل وبعد

هذا الدرس يقرأ المكوّنات ولا يغيّر البيانات. المثال تحته محلول، ورابطه يفتح لعبة ICA كاملة: كل مثال فيها يعرض اللوحات الثلاث، وبعد إجابتك يعرض احتمالات ICLabel وسببها.

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

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

السبب بالتفصيل، والمصطلحات التي تحتاجها
  1. خريطة الرأسscalp mapرسم يبيّن توزيع قيمة على الرأس من الأعلى..
  2. السلسلة الزمنيةtime seriesقيم الإشارة مرتّبة بحسب الزمن. للمكوّن.
  3. طيف القدرةpowerمربع السعة، ويقيس قوة الإشارة عند تردد معيّن. لنشاط المكوّن.
  4. في البيانات المقطّعة، صورة الـ ERPمتوسط استجابة الدماغ لحدث معيّن عبر محاولات كثيرة. (ERP imageرسم يعرض كل المحاولات كخطوط ملوّنة مرتّبة فوق بعضها.).

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

اللون والإشارة، اعرض التعريفإشارة

signalقيم تتغيّر مع الزمن، مثل الجهد المسجّل في قناة. لا يهمّان. في ICA إشارة المكوّن اعتباطية: الأحمر والأزرق في الخريطة قد ينقلبان، والسلسلة الزمنية قد تنقلب، دون أن يتغيّر المعنى. انظر إلى الشكل، لا إلى اللون.

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

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

ابدأ والنسخة الرئيسية مفتوحة وفيها أوزان ICA، كما في “نقطة البداية”. إذا كنت تكمل من درس ICLabel، فاختر D1 main من قائمةmenuمجموعة أوامر تظهر عند الضغط على اسمها في أعلى النافذة. Datasets، لا D1 main clean، لأن مكوّنات الآرتفاكت ما زالت فيها.

  1. افتح Tools ثم Classify components using ICLabel ثم Label components، واترك Default (recommended)، ثم اضغط OK. تظهر الخرائط وفوق كل واحدة الفئة الأرجح.
  2. افتح Tools ثم Classify components using ICLabel ثم View extended component properties واختر مكوّناً. نافذته تعرض خريطة الرأس، وطيف النشاط، والسلسلة الزمنية، واحتمال كل فئة.
  3. لترى السلاسل الزمنية متجاورة، افتح Plot ثم Component activations (scroll). الرمش ونبض القلبheart (ECG)نبض القلب الكهربائي الذي قد يظهر في EEG كقمم منتظمة. أسهل ما يُرى هنا.
  4. لكل مكوّن، اقرأ اللوحات بالترتيب السابق وقارنها بالجدول في القسم التالي.
  5. اكتب المكوّنات التي ستحذفها وسبب كل واحد. لا تحذف شيئاً في هذا الدرس؛ الحذف في درس ICLabel.

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

نفس الخطوات في 16 أسطر MATLAB
MATLAB
% Classify the components, then find the clearest example of each class
EEG = pop_iclabel(EEG, 'default');
classes = EEG.etc.ic_classification.ICLabel.classes;
probs   = EEG.etc.ic_classification.ICLabel.classifications;
[~, bestClass] = max(probs, [], 2);   % most likely class of each component

for c = 1:numel(classes)
    [p, comp] = max(probs(:, c));
    fprintf('%-14s components: %2d | clearest: %2d (%.0f%%)\n', ...
        classes{c}, sum(bestClass == c), comp, 100 * p);
end

% Panels of the clearest Eye, Muscle, and Brain components
% Column order: Brain, Muscle, Eye, Heart, Line Noise, Channel Noise, Other
[~, examples] = max(probs(:, [3 2 1]));
% pop_viewprops is in the ICLabel plugin folder; the menu adds it to the path, a script must add it
addpath(fullfile(fileparts(which('iclabel')), 'viewprops'));
pop_viewprops(EEG, 0, examples);

الحلقة تطبع لكل فئة عدد المكوّنات التي هي فئتها الأرجح، والمكوّن صاحب أعلى احتمال لها. والسطر الأخير يفتح لوحات أوضح مكوّن للعين والعضلة والدماغ. إذا كان أعلى احتمال لفئة أقل من 50%، فالأرجح أن D1 ليس فيها مكوّن واضح من هذه الفئة.

في D1 توقّع عدة مكوّنات دماغ، ومكوّن عين واحداً على الأقل بين الأوائل. وقد لا تجد قلباً أو ضوضاء قناة: ليست كل داتاست فيها كل الفئات.

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

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

علامات فئات ICLabel السبع:

الفئةخريطة الرأسالطيفالسلسلة الزمنية
دماغ (Brain)ناعمة وعريضة، كأنها مصدر واحد في الدماغينخفض مع ارتفاع التردد، وكثيراً فيه قمة قرب 10 هرتزتذبذب مستمر بلا قمم حادة
العين (Eye)أمامية جداً. الرمش: متماثلة في المقدمة. الحركة الجانبية: لونان متعاكسان بين يسار المقدمة ويمينهاأعلى ما يكون عند الترددات المنخفضة، ثم ينخفض بنعومةقمم كبيرة منفصلة للرمش، أو درجات للحركة الجانبية
عضلة (Muscle)بقعة صغيرة مركّزة عند الحافة، قرب الصدغ أو الرقبةيرتفع أو يبقى عالياً من نحو 20 هرتز فما فوقنشاط سريع خشن، كثيراً في دفعات
قلب (Heart)عريضة، وكثيراً تدرّج على الرأس كلهبلا قمة مميزةنبضات حادة منتظمة، نحو واحدة كل ثانية
ضوضاء الكهرباء (Line Noise)أي شكلقمة ضيقة عالية عند 50 أو 60 هرتز حسب بلد التسجيلتذبذب سريع مستمر
ضوضاء قناة (Channel Noise)مركّزة على قطب واحدغير منتظم غالباًقفزات أو انجراف، مثل قناة سيئة واحدة
أخرى (Other)مختلطة أو مبعثرةمختلطبلا نمط واضح

أي الفئات تحذف؟ في مسارنا: المكوّنات فوق 0.9 للعين أو العضلة، بعد المراجعة (درس ICLabel). القلب وضوضاء الكهرباء وضوضاء القناة تُحذف فقط بعد مراجعة واضحة. لا تحذف “أخرى” ولا “دماغ”.

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

4 فحوص سريعة
  1. تعرف العلامة لكل فئة من السبع: الخريطة والطيف والسلسلة الزمنية.
  2. في D1 وجدت أوضح مكوّن للعين، وأكّدته باللوحات الثلاث.
  3. قائمتك مكتوبة: المكوّنات التي ستحذفها مع سبب لكل واحد، وليس فيها مكوّن دماغ أو “أخرى”.
  4. في لعبة ICA صنّفت الأمثلة وقرأت الشرح بعد كل إجابة.

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

5 أخطاء، وكيف تتجنّبها
  • الحكم باللون. الإشارة اعتباطية في ICA. خريطة رمش زرقاء مثل الحمراء تماماً.
  • الحكم من لوحة واحدة. الخريطة الأمامية وحدها لا تكفي: يوجد مكوّن دماغ أمامي أيضاً. طيفه فيه قمة، لا انخفاض ناعم من أدنى الترددات.
  • اعتبار احتمال ICLabel حقيقة. هو تقدير من مصنّف مدرَّب. مكوّن بـ 55% عين و40% دماغ يحتاج مراجعتك قبل أي قرار.
  • توقّع كل الفئات في كل داتاست. مكوّنات القلب تحتاج غالباً أثر قلب قوياً يصل إلى الـ EEG، وضوضاء الكهرباء تضعف كثيراً بعد فلتر notch.
  • حذف مكوّنات “أخرى”. “أخرى” تعني أن ICLabel لم يحسم. حذفها قد يحذف معها نشاطاً دماغياً.

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

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

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

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

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