المحطة 4 · الدرس 7
AMICA و Picard
eeglab_data.set (D1) · ما طُبّق عليه قبل هذا الدرس: فلترة high-pass و low-pass، إزالة ضوضاء الكهرباء (50 أو 60 هرتز)، القنوات السيئة، الاستيفاء (interpolation)، إعادة المرجع (re-referencing)تنزيل البيانات (يفتح في نافذة جديدة)سكربت الوصول لهذه الحالة
[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 في إلا بعد تثبيتهما.
هذا الدرس اختياري. كل باقي الخريطة يعمل بـ runica.
لماذا أحتاج هذه الخطوة؟
- 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 في القائمة إلا بعد تثبيتهما.
هذا الدرس اختياري. كل باقي الخريطة يعمل بـ runica.
كيف أطبّقها في EEGLAB؟
9 خطوة من القوائم
ابدأ والنسخة الرئيسية D1 main مفتوحة كما في “نقطة البداية”.
أولاً: ثبّت pluginحزمة تضيف وظائف أو قوائم جديدة إلى EEGLAB.
- افتح File ثم Manage EEGLAB extensions.
- ابحث عن
picardأو عنAMICA، واخترها وثبّتها. أعد تشغيل EEGLAB إذا طلب ذلك.
ثانياً: Picard من نافذة ICA
- اصنع نسخة ICA مفلترة عند 1 هرتز، كما في درس تشغيل ICA.
- افتح 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'. - أضف الرتبة إلى الخيارات بنفسك:
'maxiter', 500, 'mode', 'standard', 'pca', 31في D1. مع Picard لا يفحصpop_runicaالرتبة عنك. - اضغط OK، ثم قارن الخرائط من Plot ثم Component maps ثم In 2-D بخرائط
runica.
ثالثاً (اختياري): AMICA
- بعد تثبيت AMICA، افتح Tools ثم Run AMICA على نسخة ICA.
- تأكد أن خانة In File: فارغة. إذا ظهر فيها
eeglab_data.fdtفامسحها، وإلا قرأ AMICA البيانات الأصلية من القرص بدل نسخة ICA. واجعل # PCA Dims.: مساوياً للرتبة المتوقّعة، 31 في D1، واختر مجلد مخرجات تعرف مكانه. - AMICA يستغرق وقتاً أطول بكثير من
runica. اتركه يعمل، وقارن الخرائط عندما ينتهي.
أياً كانت الخوارزمية، انسخ الأوزانweights (ICA)المصفوفة التي تحوّل القنوات إلى مكوّنات ICA. إلى النسخة الرئيسية بنفس طريقة درس فلترfilterأداة تُضعف ترددات معيّنة في الإشارة وتُبقي غيرها. 1 هرتز.
كيف أطبّقها في EEGLAB؟
ابدأ والنسخة الرئيسية D1 main مفتوحة كما في “نقطة البداية”.
أولاً: ثبّت إضافة
- افتح File ثم Manage EEGLAB extensions.
- ابحث عن
picardأو عنAMICA، واخترها وثبّتها. أعد تشغيل EEGLAB إذا طلب ذلك.
ثانياً: Picard من نافذة ICA
- اصنع نسخة ICA مفلترة عند 1 هرتز، كما في درس تشغيل ICA.
- افتح Tools ثم Decompose data by ICA. في ICA algorithm to use (click to select) اختر Infomax picard.m. خانة Commandline options (See help messages) تُظهر
'maxiter', 500, 'mode', 'standard'. - أضف الرتبة إلى الخيارات بنفسك:
'maxiter', 500, 'mode', 'standard', 'pca', 31في D1. مع Picard لا يفحصpop_runicaالرتبة عنك. - اضغط OK، ثم قارن الخرائط من Plot ثم Component maps ثم In 2-D بخرائط
runica.
ثالثاً (اختياري): AMICA
- بعد تثبيت AMICA، افتح Tools ثم Run AMICA على نسخة ICA.
- تأكد أن خانة In File: فارغة. إذا ظهر فيها
eeglab_data.fdtفامسحها، وإلا قرأ AMICA البيانات الأصلية من القرص بدل نسخة ICA. واجعل # PCA Dims.: مساوياً للرتبة المتوقّعة، 31 في D1، واختر مجلد مخرجات تعرف مكانه. - AMICA يستغرق وقتاً أطول بكثير من
runica. اتركه يعمل، وقارن الخرائط عندما ينتهي.
أياً كانت الخوارزمية، انسخ الأوزان إلى النسخة الرئيسية بنفس طريقة درس فلتر 1 هرتز.
كيف أكتبها بالكود؟
نفس الخطوات في 19 أسطر 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 تعليق، لأنه لا يعمل إلا بعد تثبيت الإضافة.
كيف أكتبها بالكود؟
% 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'));السكربت يقيس وقت runica و Picard على نفس النسخة، ويطبع عدد مكوّنات كل منهما: 31 في D1 للاثنين. سطر AMICA تعليق، لأنه لا يعمل إلا بعد تثبيت الإضافة.
أي قيمة أختار؟
القيم المناسبة حسب هدف تحليلك
| runica (Extended Infomax) | Picard | AMICA | |
|---|---|---|---|
| يأتي مع 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 إلى سبع فئات مع احتمال لكل فئة. وحذف المكوّنات ونسخ الأوزان تعمل بنفس الطريقة مع أي من الثلاث.
تغيير الخوارزمية لا يغيّر باقي المسار.
ICLabelأداة تصنّف كل مكوّن ICA إلى سبع فئات مع احتمال لكل فئة. وحذف المكوّنات ونسخ الأوزان تعمل بنفس الطريقة مع أي من الثلاث.
أي قيمة أختار؟
| runica (Extended Infomax) | Picard | AMICA | |
|---|---|---|---|
| يأتي مع EEGLAB | نعم، الافتراضي | لا، إضافة | لا، إضافة |
| السرعة كما يكتبها EEGLAB | الافتراضي | FastICA picard.m (fastest) | AMICA (slowest; best) |
| ماذا يعطي | نموذج ICA واحد | حل Infomax العادي (لا Extended) أو FastICA، أسرع | نموذج ICA واحد أو أكثر |
| الرتبة | pop_runica يحاول اكتشافها | مرّر 'pca' بنفسك | حدّد عدد المكوّنات المحفوظة بنفسك |
| متى تختاره | أغلب الدراسات، وكل ما في هذه الخريطة | داتاست كثيرة أو قنوات كثيرة، عندما يهمّ الوقت | عندما تريد التفكيك الأبطأ والأدق ولديك الوقت |
تغيير الخوارزمية لا يغيّر باقي المسار.
ICLabel وحذف المكوّنات ونسخ الأوزان تعمل بنفس الطريقة مع أي من الثلاث.
تغيير الخوارزمية لا يغيّر باقي المسار.
ICLabel وحذف المكوّنات ونسخ الأوزان تعمل بنفس الطريقة مع أي من الثلاث.
كيف أتأكد أنها نجحت؟
4 فحوص سريعة
- تظهر الخوارزمية في ICA algorithm to use (click to select) بعد تثبيتها.
- عدد المكوّنات يساوي الرتبة المتوقّعة: 31 في D1 لكل خوارزمية.
- الخرائط متشابهة: مكوّن العين يظهر في التفكيكين، وقد يكون في موضع آخر.
- سجّلت الوقت لكل خوارزمية على جهازك، من السكربت.
كيف أتأكد أنها نجحت؟
- تظهر الخوارزمية في ICA algorithm to use (click to select) بعد تثبيتها.
- عدد المكوّنات يساوي الرتبة المتوقّعة: 31 في D1 لكل خوارزمية.
- الخرائط متشابهة: مكوّن العين يظهر في التفكيكين، وقد يكون في موضع آخر.
- سجّلت الوقت لكل خوارزمية على جهازك، من السكربت.
ما الأخطاء التي يقع فيها كثيرون؟
5 أخطاء، وكيف تتجنّبها
- البحث عن الخوارزمية قبل تثبيتها. القائمة في Tools ثم Decompose data by ICA تخفي أي خوارزمية دالتها غير مثبّتة.
- نسيان الرتبة مع Picard أو AMICA. فحص الرتبة التلقائي في
pop_runicaخاص بـrunica. مع الاثنتين الأخريين حدّد عدد المكوّنات بنفسك. - انتظار مكوّنات متطابقة. الخوارزميات المختلفة، بل حتى تشغيلان لـ
runica، تعطي المكوّنات بترتيب وإشارة مختلفين. قارنها بالشكل. - قراءة AMICA للملف على القرص. إذا كانت الداتاست مرتبطة بملف
.fdt، يقرأ AMICA ذلك الملف لا البيانات المفلترة في الذاكرة. امسح In File:، أو اكتبEEG.datfile = ''في السكربت. - خلط الخوارزميات في دراسة واحدة. استخدم نفس الخوارزمية والإعدادات لكل المشاركين، واكتبها في Methods.
ما الأخطاء التي يقع فيها كثيرون؟
- البحث عن الخوارزمية قبل تثبيتها. القائمة في 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.كيف أكتبها في ورقتي؟
قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.
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 pluginتوثيقAMICA
- PicardPicard
- Makoto's preprocessing pipeline§13.7 Unofficial instruction to install and use AMICA؛ §18.8 What does AMICA do?
مكتوب لـ EEGLAB 2026.1 · 2026-10-28
للتوسّع
- EEGLAB plugin: https://eeglab.org/plugins/amica/ (AMICA)
- Picard: https://github.com/pierreablin/picard (Picard)
- Makoto's preprocessing pipeline: https://eeglab.ucsd.edu/wiki/Makoto%27s_preprocessing_pipeline (§13.7 Unofficial instruction to install and use AMICA؛ §18.8 What does AMICA do?)
تحتاج مساعدة؟
اسأل، أو شاركنا رأيك، أو بلّغ عن خطأ
- بلّغ عن خطأ علمي · يحتاج حساباً على GitHub. لا تملك حساباً؟ استخدم "شاركنا رأيك".