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

استيراد ملف خام: EDF و BDF و BrainVision

أساسي15 دقيقةقبل هذا الدرس: بنية EEG structاطبع البطاقة
تبدأ من: S001R03.edf (D2) · لا شيء: البيانات كما نزّلتها.تنزيل البيانات (يفتح في نافذة جديدة)
سكربت الوصول لهذه الحالة
MATLAB
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;
% Folder where you keep the course data (change it)
dataFolder = 'C:\Users\me\Documents\eeg-course';
if ~exist(dataFolder, 'dir'), mkdir(dataFolder); end
websave(fullfile(dataFolder, 'S001R03.edf'), ...
    'https://physionet.org/files/eegmmidb/1.0.0/S001/S001R03.edf');

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

كل جهاز EEGتسجيل النشاط الكهربائي للدماغ من أقطاب على فروة الرأس. يحفظ التسجيل بصيغة خاصة به. أما EEGLAB فيعمل على بنية واحدة هي الـ EEG structمتغيّر في MATLAB يجمع عدة حقول مسمّاة في مكان واحد..

الاستيراد (import) يحوّل ملف الجهاز إلى هذه البنية: إشارةsignalقيم تتغيّر مع الزمن، مثل الجهد المسجّل في قناة.، وأسماء قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. (channel)، معدل العيّناتsampling rateعدد العيّنات المسجّلة في الثانية لكل قناة. (sampling rate)، حدثeventعلامة في التسجيل تحدد لحظة شيء مهم، مثل ظهور مثير. (event).

أي خطأ هنا ينتقل إلى كل الخطوات التالية. قناة ناقصة أو أحداث مفقودة تعني تحليلاً خاطئاً من البداية.

قبل وبعد

اعرض
نافذة EEGLAB الرئيسية قبل الاستيراد: لا توجد بيانات، وتظهر عبارة No current dataset.
قبل الاستيرادلقطة من واجهة EEGLAB (SCCN)
نافذة EEGLAB الرئيسية بعد استيراد ملف EDF: عدد القنوات 64، وعدد العينات 20000، والأحداث 29، ومعدل العينات 160 هرتز، ومواقع القنوات No (labels only).
بعد الاستيرادلقطة من واجهة EEGLAB (SCCN)

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

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

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

1. نزّل ملف التمرين

نستخدم ملفاً واحداً من داتاستdatasetملف بيانات EEG واحد محمّل في EEGLAB مع معلوماته. (dataset) PhysioNet المفتوحة لحركة اليد وتخيّلها: S001R03.edf. فيه 64 قناة بمعدل 160 هرتز، ومدته حوالي دقيقتين، وأحداثه مخزّنة داخل الملف.

  1. افتح صفحة الداتاست: EEG Motor Movement/Imagery Dataset.
  2. ادخل مجلد S001 ونزّل الملف S001R03.edf.
  3. ضعه في مجلد خاص بهذه الدروس، بعيداً عن مجلد EEGLAB.

2. استورد الملف

  1. من نافذة EEGLAB افتح: File ثم Import data ثم Using EEGLAB functions and plugins ثم From EDF/EDF+/GDF files (BIOSIG toolbox)
  2. إذا لم تكن Biosig مثبّتة، يسألك EEGLAB عن تنزيلها. اضغط Yes.
  3. اختر الملف S001R03.edf.
  4. تظهر نافذة Load data using BIOSIG — pop_biosig(). اترك كل خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها. على قيمها الافتراضية:
    • Channel list (default all): فارغة، أي كل القنوات.
    • Data range (in seconds) to read (default all [0 …]) فارغة، أي التسجيل كله.
    • Import EDF+ annotations (try also mexSLOAD below) مفعّلة. الـ annotations ملاحظات نصية مخزّنة داخل ملف EDF+ مع توقيتها (latency)، ومنها تأتي الأحداث في هذا الملف.
  5. اضغط OK.

3. سمِّ الداتاست واحفظها

  1. تظهر نافذة لتسمية الداتاست الجديدة. في خانة Name it: اكتب S001R03.
  2. فعّل خانة Save it as file: واختر اسماً مثل S001R03.set في مجلد الدروس.
  3. اضغط OK.

الحفظ بصيغة .set يعني أنك لن تكرر الاستيراد في الدرس التالي. والملف الأصلي .edf يبقى كما هو.

4. ملف BDF أو BrainVision بدل EDF

  • BDF (أجهزة BioSemi): نفس pluginحزمة تضيف وظائف أو قوائم جديدة إلى EEGLAB. (plugin) من File ثم Import data ثم Using EEGLAB functions and plugins ثم From Biosemi BDF file (BIOSIG toolbox). اكتب رقم قناة مرجع في خانة Reference chan(s) indices - recommended for BIOSEMI، مثل قناتي الماستويد. رقم القناة يختلف حسب ترتيب أقطابك (قطبelectrodeالقطعة المعدنية التي توضع على الرأس لالتقاط الإشارة.)، فارجع لملف التخطيط (montage) الخاص بجهازك. السبب في «أخطاء شائعة».
  • BrainVision (أجهزة Brain Products): التسجيل ثلاثة ملفات بنفس الاسم: .vhdr و .vmrk و .eeg. افتح File ثم Import data ثم Using EEGLAB functions and plugins ثم From Brain Vis. Rec. .vhdr file واختر ملف .vhdr. إذا لم تكن إضافة bva-io مثبّتة، يعرض EEGLAB تنزيلها. بعد تثبيتها يصبح اسم قائمةmenuمجموعة أوامر تظهر عند الضغط على اسمها في أعلى النافذة. From Brain Vis. Rec. .vhdr or .ahdr file.
  • صيغة لا تعرفها: جرّب File ثم Import data ثم Using the FILE-IO interface ثم File ثم Import data ثم Using the BIOSIG interface. وإذا فشل الاثنان، ابحث باسم جهازك في File ثم Manage EEGLAB extensions. يقول التوثيق إن هذه الخطوات تكفي في حوالي 90% من الحالات.

ومن سكربتscriptملف أوامر MATLAB ينفّذ خطوات المعالجة بالترتيب.، تبدو الصيغتان الأوليان هكذا. أسماء الملفات أمثلة:

MATLAB
% BioSemi BDF: pick a temporary reference at import. Here: the average of
% the external mastoid electrodes EXG1 and EXG2 (channels 65 and 66 in a
% 64-channel cap). Check the channel order of your own montage.
EEG = pop_biosig(fullfile(dataFolder, 'sub01.bdf'), 'ref', [65 66]);

% BrainVision: give the folder and the .vhdr header file (needs bva-io)
EEG = pop_loadbv(dataFolder, 'sub01.vhdr');

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

نفس الخطوات في 15 أسطر MATLAB
MATLAB
% Start EEGLAB and get its main variables
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;

% Folder where you saved S001R03.edf (change it)
dataFolder = 'C:\Users\me\Documents\eeg-course';

% Biosig is required for EDF/BDF files
if ~exist('sopen', 'file')
    plugin_askinstall('Biosig', 'sopen', true);
end

% Import the EDF+ file (all channels, events from annotations)
EEG = pop_biosig(fullfile(dataFolder, 'S001R03.edf'));

% Store it as a new dataset and save it as .set
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, ...
    'setname', 'S001R03', 'gui', 'off');
EEG = pop_saveset(EEG, 'filename', 'S001R03.set', 'filepath', dataFolder);
eeglab redraw;

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

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

القرار الأساسي: أي إضافة تقرأ ملفات جهازك؟ كل القوائم أدناه تحت File ثم Import data ثم Using EEGLAB functions and plugins. إذا لم تكن الإضافة مثبّتة، يعرض EEGLAB تنزيلها أول مرة تفتح قائمتها، كما حدث مع Biosig.

جهازكالصيغةالإضافةالقائمةالدالة
أنظمة سريرية وبحثية كثيرة، و PhysioNet، و g.tec (ملفات GDF)EDF أو EDF+ أو GDF: .edf و .gdfBiosigFrom EDF/EDF+/GDF files (BIOSIG toolbox)pop_biosig
BioSemiBDF: .bdfBiosigFrom Biosemi BDF file (BIOSIG toolbox)pop_biosig مع 'ref'
Brain ProductsBrainVision: .vhdr و .vmrk و .eegbva-ioFrom Brain Vis. Rec. .vhdr file (بعد التثبيت: From Brain Vis. Rec. .vhdr or .ahdr file)pop_loadbv
EGI / MagstimMFF: مجلد .mffmffmatlabioImport Magstim/EGI .mff filepop_mffimport
Neuroscan.cntneuroscanioFrom Neuroscan .CNT filepop_loadcnt
ANT Neuro (eego)EEProbe .cntANTeepimportFrom ANT EEProbe .CNT filepop_loadeep_v4
أي جهاز سُجّل عبر Lab Streaming Layer (LSL)XDF: .xdfxdfimportFrom .XDF or .XDFZ filepop_loadxdf
أي جهاز يصدّر الإشارة نصاً أو أرقاماً، أو بيانات عندك في MATLABملف ASCII أو float، أو مصفوفة MATLABلا شيء، مدمج في EEGLABFrom ASCII/float file or MATLAB arraypop_importdata
  • ملف .cnt من Neuroscan وملف .cnt من ANT صيغتان مختلفتان بنفس الامتداد. اختر حسب الجهاز، لا حسب الامتداد.
  • إذا لم تجد جهازك، ابحث باسم صيغته في File ثم Manage EEGLAB extensions.

خانتان تستحقان الانتباه في نافذة Biosig:

الخانةالقيمةلماذا
Import EDF+ annotationsمفعّلة (الافتراضي)في ملفات EDF+ تأتي الأحداث من الـ annotations. إذا ألغيتها تفقد الأحداث.
Reference chan(s) indices - recommended for BIOSEMIفارغة لـ EDF، وقناة مرجع لـ BDFصفحة المساعدة في pop_biosig تحذّر: بيانات BioSemi تُسجَّل بلا مرجع، وتفقد حوالي 40 ديسيبل من نسبة الإشارة للضوضاء إذا بقيت بلا مرجع. هذا مرجع مؤقت، وتختار المرجع النهائي في درس إعادة المرجع.

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

5 فحوص سريعة
  1. النافذة الرئيسية: تحت اسم الداتاست تقرأ Channels per frame = 64، و Sampling rate (Hz) = 160، و Events أكبر من صفر. أما Channel locations فقيمتها No (labels only)، أي أن أسماء القنوات موجودة بلا مواقع. هذا متوقع الآن، ونضيف المواقع في الدرس التالي.
  2. من الـ Command Window: EEG.nbchan يعطي 64، و EEG.srate يعطي 160، و EEG.pnts / EEG.srate يعطي الطول بالثواني (حوالي دقيقتين).
  3. الأحداث: eeg_eventtypes(EEG) يعرض الرموز الثلاثة T0 (راحة)، و T1 و T2 (حركتان حسب المهمة). إذا كان عدد الأحداث صفراً، أعد الاستيراد وتأكد من خانة الـ annotations.
  4. بالعين: افتح Plot ثم Channel data (scroll). يجب أن ترى القنوات بإشارة متغيّرة، وخطوطاً عمودية ملوّنة عند الأحداث.
  5. الملف المحفوظ: يجب أن يظهر S001R03.set في مجلد الدروس.
مصدر البيانات

البيانات: Schalk, G. (2009). EEG Motor Movement/Imagery Dataset (version 1.0.0). PhysioNet. DOI: 10.13026/C28G6P. الرخصة: Open Data Commons Attribution v1.0. ومعها الورقة الأصلية: Schalk et al. (2004), IEEE Transactions on Biomedical Engineering 51(6):1034-1043. واستشهاد PhysioNet القياسي: Pollard, T., Moody, B. E., Lehman, L., Gow, B., Fernandes, C., Xie, C., Johnson, A., Mark, R. G., & Heldt, T. (2026). PhysioNet as a global platform for biomedical research. Nature Health. https://doi.org/10.1038/s44360-026-00096-z

احتفظ بهذا الملف. الدرسان التاليان (مواقع الأقطاب والأحداث) يكملان عليه.

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

5 أخطاء، وكيف تتجنّبها
  • اختيار الملف الخطأ في BrainVision. افتح ملف .vhdr دائماً، لا .eeg ولا .vmrk. ولا تغيّر اسم أحد الملفات الثلاثة يدوياً، لأن ملف .vhdr يحفظ أسماء الملفين الآخرين بداخله. إذا احتجت إعادة التسمية، استخدم File ثم Export ثم Copy and Rename Brain Vis. exchange files بعد تثبيت bva-io.
  • ملف BDF بلا مرجع. تفقد جزءاً كبيراً من جودة الإشارة كما في الجدول أعلاه. اختر قناة مرجع عند الاستيراد.
  • إلغاء استيراد الأحداث. في نافذة Biosig خانتان للأحداث، وكلتاهما مفعّلة افتراضياً لكل الصيغ: Import EDF+ annotations، و Extract event from marker channel. إذا ألغيتهما، قد يصبح عدد الأحداث صفراً، فلا تستطيع التقطيع لاحقاً.
  • عدم الحفظ بعد الاستيراد. ستعيد الاستيراد كل مرة. احفظ نسخة .set واحدة بعد الاستيراد، ولا تكتب فوق الملف الأصلي.
  • أسماء قنوات غريبة في هذا الملف. أسماء القنوات في هذه الداتاست تنتهي بنقاط، مثل Fc5. و C3... هذا ليس خطأ في الاستيراد، لكنه يمنع EEGLAB من التعرّف على مواقع الأقطاب. نصلحه في الدرس التالي.

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

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

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

EEG recordings in EDF+ format (64 channels, 160 Hz) were imported into EEGLAB 2026.1 with pop_biosig (Biosig plugin [version]), and event markers were read from the EDF+ annotations.

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

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

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

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

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