Python from scratch - PAL
111 subscribers
84 photos
5 videos
6 files
51 links
Download Telegram
.
نویز برق شهر

سمت چپ: در Time Domain محور افقی زمان است، سیگنال را به صورت تغییر دامنه برحسب زمان می‌بینیم.
در زمان موج سینوسی قرمز بالا و پایین می‌رود.
در فرکانس فقط یک پیک واضح در 50Hz ظاهر می‌شود.


سمت راست: در FFT Domain (Frequency Domain) با کمک Fast Fourier Transform (FFT) سیگنال را تجزیه می‌کنیم و می‌بینیم انرژی یا توان آن در چه فرکانس‌هایی متمرکز است.
.
.
مفهوم Sampling Rate (نرخ نمونه‌برداری)


سیگنال‌های واقعی (مثل صدا یا EEG) پیوسته هستند.

برای پردازش با کامپیوتر باید آنها را به شکل گسسته (Discrete) ذخیره کنیم.

نرخ نمونه‌برداری یا Sampling rate (fs) یعنی چند بار در ثانیه از سیگنال نمونه‌برداری می‌کنیم.

مثلا fs = 100 Hz یعنی در هر ثانیه 100 نقطه از سیگنال برداشته می‌شود.

هرچقدر fs بیشتر باشد، سیگنال دقیق‌تر ذخیره می‌شود.

اگر fs کم باشد سیگنال "خوب دیده نمی‌شود.

برای فهم دقیق‌تر این موضوع کد زیر را اجرا کنید. 👇


.
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

# Continuous signal (10 Hz sine wave)
f = 10 # frequency of signal (Hz)
t = np.linspace(0, 1, 1000, endpoint=False) # high resolution (1000 samples/sec)
signal = np.sin(2 * np.pi * f * t)

# Sampling rates
fs1 = 20 # low sampling rate (20 Hz)
fs2 = 100 # higher sampling rate (100 Hz)

t1 = np.linspace(0, 1, fs1, endpoint=False)
t2 = np.linspace(0, 1, fs2, endpoint=False)

signal1 = np.sin(2 * np.pi * f * t1)
signal2 = np.sin(2 * np.pi * f * t2)

# Interpolation to rebuild signals
interp1 = interp1d(t1, signal1, kind='cubic', fill_value="extrapolate")
interp2 = interp1d(t2, signal2, kind='cubic', fill_value="extrapolate")

reconstructed1 = interp1(t)
reconstructed2 = interp2(t)

# Plot in 3 separate subplots
plt.figure(figsize=(12,8))

# Original
plt.subplot(3,1,1)
plt.plot(t, signal, 'k-', linewidth=2, label="Original (1000 Hz)")
plt.title("Original Continuous Signal")
plt.xlabel("Time (s)")
plt.ylabel("Amplitude")
plt.legend()
plt.grid(True)

# fs = 20 Hz
plt.subplot(3,1,2)
plt.plot(t, reconstructed1, 'r-', linewidth=2, label="Reconstructed (20 Hz)")
plt.plot(t1, signal1, 'ro', markersize=6, label="Samples")
plt.title("Reconstructed Signal (20 Hz Sampling)")
plt.xlabel("Time (s)")
plt.ylabel("Amplitude")
plt.legend()
plt.grid(True)

# fs = 100 Hz
plt.subplot(3,1,3)
plt.plot(t, reconstructed2, 'g-', linewidth=2, label="Reconstructed (100 Hz)")
plt.plot(t2, signal2, 'gs', markersize=5, label="Samples")
plt.title("Reconstructed Signal (100 Hz Sampling)")
plt.xlabel("Time (s)")
plt.ylabel("Amplitude")
plt.legend()
plt.grid(True)

plt.tight_layout()
plt.show()
.
مشاهده نتیجه

شکل بالا: سیگنال اصلی با وضوح بالا

شکل وسط: بازسازی با 20 Hz (کیفیت پایین)

شکل پایین: بازسازی با 100 Hz (خیلی شبیه به سیگنال اصلی)

.
انجام تمرین‌هایی روی داده EEG

.
.
برای تمرین روی داده EEG


1- داده ثبت شده توسط خود یا همکارانتان را انتخاب کنید

2- داده مد نظر را ار دیتاست‌های موجود دانلود کنید.


در جدول زیر برخی از دیتاست‌های در دسترس معرفی می‌شوند و در ادامه به توضیح هر کدام پرداخته می‌شود.

در برخی از دیتاست‌ها مجبور هستیم کل آن را دانلود کنیم.
به عبارت دیگر فایل‌ها مستقل از هم آپلود نشده‌اند.


اگر مایل نیستید حجم زیادی را دانلود کنید دو راه پیشنهاد می‌شود.


1-
از دیتاست‌هایی که فایل‌ها جداگانه آپلود شده‌اند استفاده کنیم (مانند شماره 2 جدول زیر *).

2- از دیتاست‌هایی استفاده کنیم که حجم کمی دارند یا تعداد نمونه آن پایین است (مانند شماره 3 و 7 جدول زیر *).


.
Public EEG Datasets Overview

t.me/Python_Education_Azizi
.
.
1. MNE Sample Dataset

نوع داده: ترکیبی از EEG و MEG

این دیتاست به‌صورت پیش‌فرض همراه با کتابخانه‌ی MNE-Python ارائه می‌شود.

برای آموزش و آزمایش روش‌های پایه در تحلیل سیگنال‌های مغزی طراحی شده است.

داده شامل پاسخ‌های شنوایی و بینایی (Auditory/Visual Evoked Responses) است که از یک فرد در حین دیدن و شنیدن محرک‌ها ثبت شده است.

ویژگی‌ها


تعداد کانال: حدود ۳۰۰ کانال MEG و ۶۰ کانال EEG

فرمت: fif (استاندارد MNE)

برای آموزش مراحل preprocessing، فیلتر، epoching و ERP مناسب است.

https://mne.tools/stable/documentation/datasets.html

.
.
2. EEG Motor Movement / Imagery Dataset


نوع داده: EEG از سطح جمجمه

یکی از معروف‌ترین دیتاست‌های آزاد EEG است که شامل فعالیت مغزی در زمان انجام و تصور حرکت است.

برای آموزش الگوریتم‌های BCI کاربرد دارد.

شامل فایل جدا برای هر فرد است. می‌توان فقط یک یا چند فایل .edf خاص را انتخاب و دانلود کرد.

توسط دانشگاه کینگز کالج لندن تهیه شده است.

ویژگی‌ها


۱۰۹ شرکت‌کننده سالم

ثبت با سیستم ۶۴ کاناله

هر فرد چندین بار حرکات دست‌ها و پاها را اجرا (واقعی یا خیالی)

داده‌ها به‌صورت .edf، .mat و .csv در دسترس هستند.

کاربرد: تشخیص قصد حرکتی از EEG، یادگیری ماشین، فیلترگذاری و ویژگی‌یابی.

https://physionet.org/content/eegmmidb/1.0.0

.
.
3. BCI Competition IV

نوع داده EEG: برای رقابت‌های علمی BCI

مجموعه داده‌های رسمی برای مسابقات بین‌المللی BCI Competition IV داده‌ها از چندین شرکت‌کننده در حین انجام motor imagery جمع‌آوری شده‌اند.

برای آموزش و تست الگوریتم‌های طبقه‌بندی سیگنال EEG بسیار ارزشمند هستند.

اگر نمی‌خواهید دیتاست سنگین دانلود کنید، این مورد گزینه خوبی است.

ویژگی‌ها

۹ تا ۱۰ شرکت‌کننده

ثبت با ۲۲ تا ۶۴ کانال

نرخ نمونه‌برداری ۲۵۰ تا ۱۰۰۰ هرتز

فرمت‌ها edf و gdf

کاربرد
آموزش مدل‌های یادگیری عمیق برای تشخیص نیت حرکتی از EEG

https://www.bbci.de/competition/iv/

.
.
4. OpenNeuro ds000248


نوع داده: EEG + MEG

یک دیتاست ساختاریافته بر اساس استاندارد Brain Imaging Data Structure است.

برای آموزش تحلیل‌های بازتولیدپذیر در محیط MNE طراحی شده است.

ویژگی‌ها

داده‌ها از چندین آزمودنی

شامل MEG، EEG، MRI

فرمت استاندارد BIDS و fif

کاربرد
برای آموزش pipelineهای کامل تحلیل EEG/MEG از raw تا source localization


https://openneuro.org/datasets/ds000248

.
.
5. Mental-Disorder EEG dataset

نوع داده EEG : بالینی

داده‌های EEG از بیماران مبتلا به افسردگی (Depression) و افراد سالم.

هدف این دیتاست بررسی تفاوت‌های الکتروفیزیولوژیک در اختلالات خلقی است.

ویژگی‌ها

۱۲۸ کانال EEG با نرخ نمونه‌برداری بالا

داده‌های resting-state و task

فرمت‌ها: edf و txt

همراه با اطلاعات بالینی آزمودنی‌ها

کاربرد
تحلیل سیگنال EEG در مطالعات بالینی، یادگیری ماشین در تشخیص بیماری.


https://arxiv.org/abs/2002.09283

.
.
6. TUH EEG Corpus (Temple University Hospital)


نوع داده EEG: بالینی بلندمدت

بزرگ‌ترین مجموعه EEG بالینی آزاد جهان. شامل هزاران ساعت ثبت از بیماران مختلف با تشخیص‌های عصبی متنوع است.

ویژگی‌ها

بیش از ۲۰۰۰ بیمار

سیگنال EEG چندساعته تا چندروزه

حاوی برچسب‌های تشخیصی (Seizure, Normal, Sleep, etc)

فرمت استاندارد edf

کاربرد
تشخیص تشنج، تحلیل خواب، EEG بالینی و هوش مصنوعی پزشکی.


https://isip.piconepress.com/projects/tuh_eeg/

.
.
7. CHB-MIT Scalp EEG Database


نوع داده:
داده‌های EEG جمع‌آوری شده از کودکان مبتلا به صرع مقاوم به درمان در بیمارستان کودکان ماساچوست.

تمرکز روی تشخیص و پیش‌بینی تشنج (Seizure detection).

اگر نمی‌خواهید دیتاست سنگین دانلود کنید، این مورد گزینه خوبی است.

ویژگی‌ها

تعداد بیماران: 23 کودک

نوع داده‌ها: سیگنال EEG اسکالپ (روی پوست سر)

تعداد کانال‌ها: 23 کانال EEG

فرمت: فایل‌های .edf

طول هر ثبت: معمولاً چند دقیقه تا چند ساعت

داده‌ها شامل دوره‌های معمولی و دوره‌های تشنج هستند.

کاربرد

پژوهش در زمینه تشخیص و پیش‌بینی تشنج

تحلیل الگوهای غیرطبیعی در EEG بیماران صرعی

توسعه الگوریتم‌های شناسایی تشنج در EEG

https://physionet.org/content/chbmit/1.0.0/

.
.