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

AMICA و Picard

اختياري12 دقيقةقبل هذا الدرس: تشغيل ICAاطبع البطاقة
تبدأ من: eeglab_data.set (D1) · ما طُبّق عليه قبل هذا الدرس: فلترة high-pass و low-pass، إزالة ضوضاء الكهرباء (50 أو 60 هرتز)، القنوات السيئة، الاستيفاء (interpolation)، إعادة المرجع (re-referencing)تنزيل البيانات (يفتح في نافذة جديدة)
سكربت الوصول لهذه الحالة
MATLAB
[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);
EEG.filename = ''; EEG.filepath = ''; EEG.datfile = ''; EEG.saved = 'no';
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, 'setname', 'D1 main', 'gui', 'off');
eeglab redraw;

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

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

قبل وبعد

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

صفّان من خرائط الرأس من D1، لأول 10 مكوّنات ICA من نفس نسخة 1 هرتز: الصف الأعلى من runica، والصف الأسفل من Picard بوضع Infomax. مكوّن العين ظاهر في الصفين، وقد يكون في موضع مختلف أو بألوان مقلوبة. نفس خريطة الألوان ونفس المقياس في الصفين. المصدر: الأشكال التي يرسمها سكربت هذا الدرس.

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

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

السبب بالتفصيل، والمصطلحات التي تحتاجها
  • AMICA: يعرضها EEGLAB في نافذة ICA باسم AMICA (slowest; best). تستطيع أن تتعلّم أكثر من نموذج ICA لنفس البيانات.
  • Picard: طريقة أسرع للوصول إلى حل Infomax أو FastICA. وضع Infomax فيه هو Infomax العادي، لا Extended Infomax الذي يستخدمه runica في مسارنا. يعرضها EEGLAB باسمين: Infomax picard.m و FastICA picard.m (fastest).

الاثنتان إضافات. نافذة ICA تعرض الخوارزمية فقط إذا كانت دالتها موجودة في جهازك، فلا تظهر AMICA و Picard في قائمةmenuمجموعة أوامر تظهر عند الضغط على اسمها في أعلى النافذة. إلا بعد تثبيتهما.

هذا الدرس اختياري. كل باقي الخريطة يعمل بـ runica.

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

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

ابدأ والنسخة الرئيسية D1 main مفتوحة كما في “نقطة البداية”.

أولاً: ثبّت pluginحزمة تضيف وظائف أو قوائم جديدة إلى EEGLAB.

  1. افتح File ثم Manage EEGLAB extensions.
  2. ابحث عن picard أو عن AMICA، واخترها وثبّتها. أعد تشغيل EEGLAB إذا طلب ذلك.

ثانياً: Picard من نافذة ICA

  1. اصنع نسخة ICA مفلترة عند 1 هرتز، كما في درس تشغيل ICA.
  2. افتح Tools ثم Decompose data by ICA. في ICA algorithm to use (click to select) اختر Infomax picard.m. خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها. Commandline options (See help messages) تُظهر 'maxiter', 500, 'mode', 'standard'.
  3. أضف الرتبة إلى الخيارات بنفسك: 'maxiter', 500, 'mode', 'standard', 'pca', 31 في D1. مع Picard لا يفحص pop_runica الرتبة عنك.
  4. اضغط OK، ثم قارن الخرائط من Plot ثم Component maps ثم In 2-D بخرائط runica.

ثالثاً (اختياري): AMICA

  1. بعد تثبيت AMICA، افتح Tools ثم Run AMICA على نسخة ICA.
  2. تأكد أن خانة In File: فارغة. إذا ظهر فيها eeglab_data.fdt فامسحها، وإلا قرأ AMICA البيانات الأصلية من القرص بدل نسخة ICA. واجعل # PCA Dims.: مساوياً للرتبة المتوقّعة، 31 في D1، واختر مجلد مخرجات تعرف مكانه.
  3. AMICA يستغرق وقتاً أطول بكثير من runica. اتركه يعمل، وقارن الخرائط عندما ينتهي.

أياً كانت الخوارزمية، انسخ الأوزانweights (ICA)المصفوفة التي تحوّل القنوات إلى مكوّنات ICA. إلى النسخة الرئيسية بنفس طريقة درس فلترfilterأداة تُضعف ترددات معيّنة في الإشارة وتُبقي غيرها. 1 هرتز.

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

نفس الخطوات في 19 أسطر MATLAB
MATLAB
% The same ICA copy, decomposed by runica and by Picard (Infomax mode)
EEG_ica = pop_eegfiltnew(EEG, 'locutoff', 1);
expectedRank = EEG_ica.nbchan - numel(badChans) - 1;

tic;
EEG_runica = pop_runica(EEG_ica, 'icatype', 'runica', 'extended', 1);
tRunica = toc;

% pop_runica does not reduce the rank for Picard, so pass 'pca' yourself
tic;
EEG_picard = pop_runica(EEG_ica, 'icatype', 'picard', 'maxiter', 500, ...
    'mode', 'standard', 'pca', expectedRank);
tPicard = toc;

fprintf('runica: %.0f s, %d components\n', tRunica, size(EEG_runica.icaweights, 1));
fprintf('Picard: %.0f s, %d components\n', tPicard, size(EEG_picard.icaweights, 1));

% First 10 scalp maps of each, to compare by eye
pop_topoplot(EEG_runica, 0, 1:10);
pop_topoplot(EEG_picard, 0, 1:10);

% AMICA, after installing the AMICA extension; it also needs the rank
% EEG_ica.datfile = '';   % AMICA must use the filtered data in memory, not eeglab_data.fdt on disk
% EEG_amica = pop_runamica(EEG_ica, 'pcakeep', expectedRank, 'outdir', fullfile(pwd, 'amicaout'));

سكربتscriptملف أوامر MATLAB ينفّذ خطوات المعالجة بالترتيب. يقيس وقت runica و Picard على نفس النسخة، ويطبع عدد مكوّنات كل منهما: 31 في D1 للاثنين. سطر AMICA تعليق، لأنه لا يعمل إلا بعد تثبيت الإضافة.

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

القيم المناسبة حسب هدف تحليلك
runica (Extended Infomax)PicardAMICA
يأتي مع EEGLABنعم، الافتراضيلا، إضافةلا، إضافة
السرعة كما يكتبها EEGLABالافتراضيFastICA picard.m (fastest)AMICA (slowest; best)
ماذا يعطينموذج ICA واحدحل Infomax العادي (لا Extended) أو FastICA، أسرعنموذج ICA واحد أو أكثر
الرتبةpop_runica يحاول اكتشافهامرّر 'pca' بنفسكحدّد عدد المكوّنات المحفوظة بنفسك
متى تختارهأغلب الدراسات، وكل ما في هذه الخريطةداتاستdatasetملف بيانات EEG واحد محمّل في EEGLAB مع معلوماته. كثيرة أو قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. كثيرة، عندما يهمّ الوقتعندما تريد تفكيكdecompositionتحويل البيانات إلى مجموعة مكوّنات ICA. الأبطأ والأدق ولديك الوقت
تغيير الخوارزمية لا يغيّر باقي المسار.

ICLabelأداة تصنّف كل مكوّن ICA إلى سبع فئات مع احتمال لكل فئة. وحذف المكوّنات ونسخ الأوزان تعمل بنفس الطريقة مع أي من الثلاث.

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

4 فحوص سريعة
  1. تظهر الخوارزمية في ICA algorithm to use (click to select) بعد تثبيتها.
  2. عدد المكوّنات يساوي الرتبة المتوقّعة: 31 في D1 لكل خوارزمية.
  3. الخرائط متشابهة: مكوّن العين يظهر في التفكيكين، وقد يكون في موضع آخر.
  4. سجّلت الوقت لكل خوارزمية على جهازك، من السكربت.

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

5 أخطاء، وكيف تتجنّبها
  • البحث عن الخوارزمية قبل تثبيتها. القائمة في Tools ثم Decompose data by ICA تخفي أي خوارزمية دالتها غير مثبّتة.
  • نسيان الرتبة مع Picard أو AMICA. فحص الرتبة التلقائي في pop_runica خاص بـ runica. مع الاثنتين الأخريين حدّد عدد المكوّنات بنفسك.
  • انتظار مكوّنات متطابقة. الخوارزميات المختلفة، بل حتى تشغيلان لـ runica، تعطي المكوّنات بترتيب وإشارة مختلفين. قارنها بالشكل.
  • قراءة AMICA للملف على القرص. إذا كانت الداتاست مرتبطة بملف .fdt، يقرأ AMICA ذلك الملف لا البيانات المفلترة في الذاكرة. امسح In File:، أو اكتب EEG.datfile = '' في السكربت.
  • خلط الخوارزميات في دراسة واحدة. استخدم نفس الخوارزمية والإعدادات لكل المشاركين، واكتبها في Methods.

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

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

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

Independent component analysis was computed with Picard (Infomax mode, maximum 500 iterations; picard plugin [version], EEGLAB 2026.1; [31] components after PCA reduction to the data rank) on a copy of the data high-pass filtered at 1 Hz, and the resulting weights were applied to the 0.1 Hz high-pass filtered data.

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

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

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

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

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