پلاگین ASR در EEGLAB
پلاگین ASR که مخفف Artifact Subspace Reconstruction هست امروزا با نام clearn_rawdata هم شناخته میشه، در حقیقت چند تا روش کنار هم قرار گرفتن و تشکیلش دادن. در مجموعه پلاگینهای EEGLab در دسته پلاگین های مربوط به Artifact قرار میگیره. تا به الان ۷۴۰۴ بار دانلود شده (رتبه ششم در کل پلاگینها). در این مطلب ما آخرین نسخه تا به زمان نوشتن این پست یعنی نسخه 2.3 شو توضیح میدیم. خبر خوب اینکه امروزا به صورت پیش فرض همراه با EEGlab نصب میشه و نیاز به نصبش نیست پس فقط کافیه EEGlab تو رو اگه آپدیت نیست آپدیت کنید.
آقای Christian Kothe اولین بار کدهای این برنامه رو توسعه دادن(تصویر راست). و الان بیشتر توسط Arnaud Delorme این کار ادامه پیدا میکنه(تصویر چپ).
اگه شما هم با سیگنالهای مغزی در EEGLAB کار کرده باشین برای حذف نویز و تمیز کردن سیگنال احتمالا اسم این پلاگین رو شنیدین.
از این پلاگین میشه برای کارهای لحظهای هم استفاده کرد و اصلا اولین بار برای این منظور توسعه داده شده و بعد برای کارهای آفلاین مناسب سازی شده، روی دیتا الگوریتم PCA میزنه و یک سری از کامپوننتها مثل پلک زدن رو که از یک ترشولدی رد بشن خودش حذف میکنه و سپس داده رو مجدد بر میگردونه به فضای کانالها
اول از همه هم فیلتر بالا گذر اعمال میشه.
حالا اگه از منوی Tools گزینه Reject data using clean rawdata and ASR رو انتخاب کنید این تصویر براتون باز میشه.
من کنار هر سطر یک شماره هم زدم که بتونم راحت تر توضیح بدم.
همون طور که میبینید از چند بخش اصلی تشکیل شده که بخش اول(سطر۱) مربوط به فیلتر بالا گذر هست. بخش دوم(سطر ۲) مربوط به حذف کانالهای خراب هست بخش سوم(سطر ۶) مربوط به حذف بخشی از سینگال که خراب هست میشه و نه کل کانال، بخش چهارم (سطر ۱۰) مربوط به حذف کردنهای اضافی سیگنال هست که بیشتر با استفاده از یک پارامتر بر مبنای انحراف معیار هست. و خب بخش آخر هم (سطر ۱۳) مربوط به نمایش خروجی هست. حالا میریم که هر کدوم رو دونه دونه توضیح بدیم.
قسمت اول: اگر قبلا روی سیگنال تون فیلتر بالا گذر زدین تیک مورد اول رو بردارین و گرنه حتما تیکش باشه. و به ترتیب نقطه شروع و پایانش رو وارد کنید. که در اینجا شروع ۰.۲۵ و پایان ۰.۷۵ همون فیلتر بالاگذر ۰.۵ هرتز هست.
در قسمت دوم میخوایم یکسری شرط هایی رو بررسی کنیم و اگه برقرار بودن سیگنال رو حذف کنیم.
قسمت ۳ میگیم اگه کانالی رو پیدا کردی که بیشتر از ۵ ثانیه مقدارش عوض نشده بود(flat باشه) حذفش کن.
قسمت ۴ میگه: اگر کانالی نسبت نویز فرکانس بالاش(مثل برق شهری) به سیگنالش بیشتر از این نسبت بر اساس انحراف معیار بود، در مقایسه با همه کانالها اونو غیر معمولی در نظر بگیر و حذفش کن(مقدار پیش فرض ۴)، این طوری عمل میکنه که میره قسمتهای خوب سیگنال رو پیدا میکنه و قدرتش رو حساب میکنه حالا که در یک پنجره از سیگنال رو پردازش میکنه اگه قدرتش از ۴ برابر واریانس بیشتر باشه این پنجره رو حذف میکنه.
در قسمت ۵ میگه اگه یک کانال کرولویشنش با همسایههاش کمتر از ۰.۸ شد بنداز دور. حواستون باشه این عدد برای حدود ۳۰ کانال به بالا خوبه و برای مثلا ۲۰ کانال عدد رو کمتر کنید و مثلا بگذارین روی ۰.۶ و برای کمتر هم کلا این شرط رو بی خیال بشین.
نکته دیگه اینکه مطمئن بشین که قبلا آدرس کانالها رو وارد کرده باشین (که بدونه هر کانال همسایههاش کدومان) و گرنه خودش به صورت پیش فرض یک آدرسی از کانالها رد نظر میگیره و خب ممکنه این غلط باشه.
قسمت ۶ میگه من مربوط به پرشهای ناگهانی (burst) ها و بازسازی سیگنالم
قسمت ۷ میگه بهم بگو اگه انحراف معیار یک پنجره بزرگتر از چند بود به عنوان یک پرش ناگهانی (burst) در نظرش بگیرم؟ پس هر قسمتی از داده که انحراف معیارش بیشتر از این مقدار باشه حذف میشه. خیلی خواستین حساسانه برخورد کنید که داده زیادی هم از دست ندین بهش ۳ بدین. مقدار معقول میتونه ۵ باشه به کاربرهای جدید توصیه کرده اول سیگنال رو با مقدایر مختلف بررسی کنند و بعد تصمیم بگیرن. (دلیل اینکه مقدار پیش فرضش رو برای من ۲۰ نشون میده نمیدونم)
قسمت ۸ میگه میخوای تو محاسباتم برای اندازه گیری فاصله از فاصله ریمانی(+) بجای فاصله اقلیدسی استفاده کنم؟ مقاله مربوطه(+)
قسمت ۹ میگه جاهایی که بده رو حذف کنم(اگه آره آنگاه تیکش باشه) یا بازسازی کنم؟
قسمت ۱۰ میگه یه چند تا قید دیگه هم دارم میخوای اونا رو هم اعمال کنم؟
قسمت ۱۱ رو خوب متوجه نشدم متن راهنمای خودش رو قرار میدم.
These are the power tolerances outside of which a channel in the final output data is considered "bad", in standard deviations relative to a robust EEG power distribution (lower and upper bound). Any time window in the final (repaired) output which has more than the tolerated fraction (set by the WindowCriterion parameter) of channel with a power outside of this range will be considered incompletely repaired and will be removed from the output. This last stage can be skipped either by setting the WindowCriterion to 'off' or by taking the third output of this processing function (which does not include the last stage). Default: [-Inf 7].
قسمت ۱۲ میگه اگه بیشتر از ۲۵ درصد یک کانال رو حذف کردی کل کانال رو پاک کن. البته من برای تست مقدار ۱ رو دادم و انتظار داشتم خیلی از کانالها حذف بشن یا برعکس ۹۹ دادم و انتظار داشتم تقریبا همه بمونن ولی فرقی در خروجی مشاهده نکردم.
قسمت ۱۳ هم میگه میخوای کارم که تموم شد سیگنال رو بهت نشون بدم بگم چیکار کردم؟
نکات:
- تو این مطلب زیاد حرف از انحراف معیار یا همون standard deviation زدیم شاید بپرسین این تو سیگنال EEG چه معنایی میده دقیقا به صورت شهودی؟ من این طور فکر میکنم اگه این سیگنال گسسته ما در هر واحد زمان یک مقداری داره، بعضی وقتا ممکنه مثبت باشه و یا منفی اگر مقدار y همه شون رو با هم جمع کنیم و تقسیم بر تعداد کنیم این میشه DC سیگنال یا میانگینش و حالا میشه برای همین نقاط انحراف معیار حساب کرد که ببینیم نقاطمون یا سیگنالمون چقدر پراکنده هست.
- اگه نشانگر موس تون رو هم روی تکست باکسها نگه دارین براتون یه توضیحی میاره.
- آدمهای حرفهای از این دست پلاگینها استفاده نمیکنن و خودشون به صورت دستی سیگنال رو تمیز میکنن.
- توصیه میشه بعد تمیز کردن یک بار تو پنجره خروجی سیگنال تون رو ببینید که اتفاق عجیبی نیفتاده باشه.
- برای من پیش اومده که سیگنالی داشتم که برای مدتی سچوره شده و بعد برگشته به حالت نرمال، برام جالب بود و البته سواله که چطور ASR میتونه اون قسمت رو بازسازی کنه.
منابع:
صحفه ویکی شون در گیتهاب(+)
بخش مربوطه در سایت eeglab.org (+)
این مقاله(+)
خود help برنامه
دوره آموزشی دکتر نصرآبادی(+)