کار با مکان های سنسور#

ساخت وبلاگ

این آموزش نحوه خواندن و ترسیم مکان های سنسور و نحوه برخورد MNE-Python از مکانهای فیزیکی سنسورها را شرح می دهد. طبق معمول ما با وارد کردن ماژول های مورد نیاز خود شروع خواهیم کرد:

از جانب مسیر وارد كردن مسیر وارد كردن matplotlib. pyplot as PLT وارد كردن اعماق as np # واردات زیر برای matplotlib لازم است<3.2:از جانب mpl_toolkits. mplot3d وارد كردن Axes3d # نوقا وارد كردن مگس 

درباره مونتاژ و چیدمان#

مونتاژها حاوی موقعیت های سنسور در سه بعدی (x ، y ، z در متر) هستند که می توانند به داده های EEG/MEG موجود اختصاص دهند. مونتاژ با مشخص کردن مکان سنسورها نسبت به مغز ، نقش مهمی در محاسبه راه حل رو به جلو و برآورد معکوس دارد.

در مقابل ، طرح بندی ها بازنمایی 2D از موقعیت های سنسور هستند. آنها در درجه اول برای تنظیم زیرمجموعه های سنسور فردی در یک توپوپلت یا برای نشان دادن ترتیب تقریبی نسبی سنسورها همانطور که از بالا مشاهده می شود ، استفاده می شوند.

اگر به طور انحصاری با داده های EEG کار می کنید ، می خواهید از مونتاژ استفاده کنید ، نه چیدمان. مونتاژهای ایده آل (به عنوان مثال ، آنهایی که توسط سازنده تهیه شده اند ، یا مواردی که با MNE-Python که در زیر ذکر شده است حمل می شوند) معمولاً به عنوان مونتاژهای الگوی گفته می شوند.

کار با مونتاژهای داخلی#

محاسبه مکان های سنسور

اگر علاقه مند به چگونگی محاسبه موقعیت های استاندارد (ایده آل) EEG بر روی یک مدل سر کروی هستید ، حتماً مخزن EEG_Positions را بررسی کنید.

مختصات سه بعدی سنسورهای MEG در ضبط های خام از MEG Systems گنجانده شده است. آنها به طور خودکار در ویژگی اطلاعات شیء خام پس از بارگیری ذخیره می شوند. مکانهای الکترود EEG به دلیل تفاوت در شکل سر بسیار متغیر هستند. مونتاژهای ایده آل ("مونتاژهای الگو") برای بسیاری از سیستم های EEG در MNE-Python گنجانده شده است ، و می توانید با استفاده از mne. chaels. get_builtin_montages () از آنها یک نمای کلی دریافت کنید.

ساخته شده = مگس.کانال.get_builtin_montages(توضیحات=درست است، واقعی) برای montage_name, montage_description in ساخته شده: چاپ(f'montage_name>: montage_description>') 
standard_1005: الکترودها بر اساس سیستم بین المللی 10-05 نامگذاری و قرار می گیرند (343+3 مکان) standard_1020: الکترودها بر اساس سیستم بین المللی 10-20 نامگذاری و قرار می گیرند (94+3 مکان) standard_alphabetic: الکترودها با LETTER- نامگذاری می شوند. NUMBER ترکیب (A1, B2, F4, …) (65+3 مکان) standard_postfixed: الکترودها بر اساس سیستم بین المللی 10-20 با استفاده از پسوند برای موقعیت های میانی (100+3 مکان) نام گذاری می شوند standard_prefixed: الکترودها طبق استاندارد بین المللی نام گذاری می شوند. سیستم 10-20 با استفاده از پیشوند برای موقعیت های میانی (74+3 مکان) standard_primed: الکترودها بر اساس سیستم بین المللی 10-20 با استفاده از علامت های اصلی (' و '') برای موقعیت های میانی (100+3 مکان) نام گذاری می شوند biosemi16: BioSemi capبا 16 الکترود (16+3 مکان) biosemi32: BioSemi کلاهک با 32 الکترود (32+3 مکان) biosemi64: BioSemi کلاه با 64 الکترود (64+3 مکان) biosemi128: BioSemi کلاه با 128 الکترود (128+3 مکان) biosemi10:کلاهک BioSemi با 160 الکترود (160+3 مکان) biosemi256: درپوش BioSemi با 256 الکترود (256+3 مکان) easycap-M1: EasyCap با نام های الکترود 10-05 (74 مکان) easycap-M10: EasyCap با الکترودهای شماره دار (61 مکان)) EGI_256: شبکه حسگر ژئودزیک (256 مکان) GSN-HydroCel-32: شبکه حسگر ژئودزیک هیدروسل و Cz (33+ مکان) GSN-HydroCel-64_1. 0: شبکه حسگر ژئودزیک هیدروسل (مکان های GS+N-3)65_1. 0: شبکه حسگر ژئودزیک هیدروسل و Cz (65+3 مکان) GSN-HydroCel-128: شبکه حسگر ژئودزیک هیدروسل (3+128 مکان) GSN-HydroCel-129: شبکه حسگر ژئودزیک هیدروسل و مکان های Cz129GSN-HydroCel-256: شبکه حسگر ژئودزیک هیدروسل (256+3 مکان) GSN-HydroCel-257: شبکه حسگر ژئودزیک هیدروسل و Cz (257+3 مکان) mgh60: کلاهک (قدیمی) 60 کانال مورد استفاده در MGH6 (0+)3 مکان) mgh70: کلاه 70 کانالی BrainVision (جدیدتر) مورد استفاده در MGH (70+3 مکان) artinis-octamon: Artinis OctaMon fNIRS (8 منبع، 2 آشکارساز) artinis-brite23: Artinis Brite23 fNIRS (11 منبع، 7 آشکارساز)محصولات مغزی-RNP-BA-128: محصولات مغزی با نام 10-10 الکترود (128 کانال)

این مونتاژهای EEG داخلی را می توان با mne. chaels. make_standard_montage بارگیری کرد:

easycap_montage = مگس.کانال.make_standard_montage("easycap-M1") چاپ(easycap_montage) 

اشیاء مونتاژ دارای یک روش نمودار برای تجسم مکان های حسگر به صورت دو بعدی یا سه بعدی هستند:

easycap_montage.طرح() # 2 بعدی شکل = easycap_montage.طرح(نوع='3 بعدی', نشان می دهد=نادرست) # سه بعدی شکل = شکل.gca().view_init(لاله=70, ارتفاع=15) # تنظیم زاویه مشاهده برای آموزش 

 

  • 40 sensor locations
  • 40 sensor locations

 

پس از بارگذاری ، مونتاژ را می توان با روش SET_MONTAGE ، به عنوان مثال Raw. set_montage () ، Epochs. Set_Montage () یا Evoked. set_montage () برای داده ها اعمال کرد. این فقط با داده هایی که نام کانال EEG با آنهایی که در مونتاژ هستند مطابقت دارد.(بنابراین ، ما برخی از داده های EEG را در زیر بارگیری می کنیم ، و نه مجموعه داده "نمونه" معمول MNE.)

سپس می توانید مکانهای سنسور را از طریق روش plot_sensors () تجسم کنید.

همچنین می توان با عبور از نام مونتاژ به طور مستقیم به روش set_montage () ، مرحله بارگذاری مونتاژ دستی را پرش کرد.

ssvep_folder = مگس.مجموعه داده ها.SSVEP.مسیر داده() SSVEP_DATA_RAW_PATH = (ssvep_folder / "Sub-02" / 'SES-01' / "EEG" / 'Sub-02_SES-01_TASK-SSVEP_EEG. VHDR') ssvep_raw = مگس.io.read_raw_brainvision(SSVEP_DATA_RAW_PATH, بافیز=نادرست) # از مونتاژ از پیش بارگذاری شده استفاده کنید ssvep_raw.set_montage(easycap_montage) شکل = ssvep_raw.plat_sensors(show_names=درست است، واقعی) # یک مونتاژ الگوی را مستقیماً بدون بارگذاری استفاده کنید ssvep_raw.set_montage("easycap-M1") شکل = ssvep_raw.plat_sensors(show_names=درست است، واقعی) 

 

  • 40 sensor locations
  • 40 sensor locations

 

شاید متوجه شده باشید که ارقام ایجاد شده از طریق plot_sensors () حاوی سنسورهای کمتری نسبت به نتیجه EasyCap_Montage. plot () است. این امر به این دلیل است که مونتاژ شامل تمام کانال های تعریف شده برای آن سیستم EEG است. اما همه ضبط ها لزوماً از تمام کانال های ممکن استفاده نمی کنند. بنابراین هنگام استفاده از مونتاژ به یک مجموعه داده واقعی EEG ، اطلاعات مربوط به سنسورهایی که در واقع در داده ها وجود ندارند حذف می شوند.

ترسیم مکان های سنسور 2D مانند Eeglab#

کلمه کلیدی Sphere در بسیاری از مناطق موجود است!

تمام توابع نقشه برداری MNE برای توپوگرافی های EEG و مکان های سنسور از آرگومان کلیدی حوزه پشتیبانی می کنند ، بنابراین امکان تنظیم نحوه پیش بینی سنسورها را بر روی دایره سر فراهم می کند.

در MNE-Python ، به طور پیش فرض مرکز سر با استفاده از نقاط معتبر محاسبه می شود. این بدان معنی است که دایره سر نشان دهنده دور سر در سطح Nasion و گوش است ، و نه جایی که معمولاً در سیستم EEG 10-20 اندازه گیری می شود (یعنی بالاتر از Nasion در T4/T8 ، T3/T7 ، OZ و FPZ).

اگر ترجیح می دهید با استفاده از کنوانسیون های 10-20 (که توسط Eeglab نیز استفاده می شود) دایره سر را بکشید ، می توانید Sphere = 'Eeglab' را منتقل کنید:

شکل = ssvep_raw.plat_sensors(show_names=درست است، واقعی, کره="Eeglab") 

40 sensor locations

تقریب موقعیت FPZ با آینه کاری OZ در امتداد محورهای x و y.

از آنجا که داده هایی که ما در اینجا استفاده می کنیم حاوی کانال FPZ نیست ، مکان قلمداد آن به صورت خودکار تقریب می یابد.

کنترل دستی پیش بینی کانال 2D#

موقعیت های کانال در فضای 2D با نمایش موقعیت های سه بعدی واقعی آنها بر روی یک کره و سپس نمایش کره بر روی یک هواپیما بدست می آید. به طور پیش فرض ، از کره ای با منشاء در (0 ، 0 ، 0) (x ، y ، z مختصات) و شعاع 0. 095 متر (9. 5 سانتی متر) استفاده می شود. شما می توانید با عبور از یک مقدار واحد به عنوان آرگومان کره در هر عملکردی که کانال های 2D را در 2D قرار می دهد ، از شعاع کره دیگری استفاده کنید (مانند نقشه ای که ما در اینجا استفاده می کنیم ، بلکه به عنوان مثال mne. viz. plot_topomap):

عکس. 1 = easycap_montage.طرح() # شعاع پیش فرض 0. 095 شکل 2 = easycap_montage.طرح(کره=0. 07) 

 

  • 40 sensor locations
  • 40 sensor locations

 

برای تغییر نه تنها شعاع ، بلکه منشأ کره ، A (x ، y ، z ، شعاع) را به عنوان استدلال کره منتقل کنید:

شکل = easycap_montage.طرح(کره=(0. 03, 0. 02, 0. 01, 0. 075)) 

40 sensor locations

خواندن پرونده های دیجیتالی سازی سنسور#

در داده های نمونه ، موقعیت های سنسور در حال حاضر در ویژگی اطلاعاتی از شیء خام موجود است (برای جزئیات بیشتر در مورد نحوه عملکرد آن ، به مستندات توابع خواندن و set_montage () مراجعه کنید). بنابراین ، ما می توانیم مکانهای سنسور را مستقیماً از شیء خام با استفاده از plot_sensors () ترسیم کنیم ، که عملکرد مشابهی را با montage. plot () فراهم می کند. علاوه بر این ، PLOT_SENSORS () از انتخاب کانال بر اساس نوع ، کانال های کدگذاری رنگ به روش های مختلف پشتیبانی می کند (به طور پیش فرض ، کانال های ذکر شده در RAW. info ['Bads'] به رنگ قرمز ترسیم می شوند) و در یک شیء محور matplotlib موجود ترسیم می شوند (بنابراین موقعیت های کانال به راحتی می توانند به عنوان یک زیرمجموعه در یک شکل چند پنل اضافه شوند):

sample_data_folder = مگس.مجموعه داده ها.نمونه.مسیر داده() sample_data_raw_path = (sample_data_folder / "مگ" / 'نمونه' / 'sample_audvis_raw. fif') sample_raw = مگس.io.read_raw_fif( sample_data_raw_path, از پیش بارگذاری کردن=نادرست, بافیز=نادرست ) شکل = PLT.شکل() ax2d = شکل.add_subplot(121) ax3d = شکل.add_subplot(122, پیش بینی='3 بعدی') sample_raw.plat_sensors(نوع ch_type="EEG", محورها=ax2d) sample_raw.plat_sensors(نوع ch_type="EEG", محورها=ax3d, نوع='3 بعدی') ax3d.view_init(لاله=70, ارتفاع=15) 

40 sensor locations

TOMOMAP 2D قبلی بی نظمی را در موقعیت های سنسور EEG در مجموعه داده های نمونه نشان می دهد - این به این دلیل است که موقعیت های سنسور در آن مجموعه داده ها رقم زدن موقعیت های سنسور واقعی بر روی سر به جای موقعیت های سنسور ایده آل بر اساس یک مدل سر کروی است. بسته به دستگاه دیجیتالی شدن (به عنوان مثال ، یک دیجیتالی کننده Polhemus Fastrak) ، شما باید از توابع مختلف خواندن مونتاژ استفاده کنید (به قالب های پشتیبانی شده برای مکان های دیجیتالی 3D مراجعه کنید). مونتاژ حاصل می تواند با انتقال آن به عنوان آرگومان به روش set_montage () به اشیاء خام اضافه شود (دقیقاً همانطور که قبلاً با نام مونتاژ از پیش تعریف شده "استاندارد_1020" انجام دادیم). پس از بارگیری ، مکان ها را می توان با روش () طرح () ترسیم کرد و با روش ذخیره () شیء مونتاژ ذخیره شد.

هنگام تنظیم مونتاژ با SET_MONTAGE () ، اطلاعات اندازه گیری در دو مکان به روز می شود (هر دو ورودی CHS و DIG به روز می شوند) - برای اطلاعات بیشتر به ساختار داده اطلاعات مراجعه کنید. توجه داشته باشید که DIG ممکن است علاوه بر مکان های الکترود حاوی نقاط HPI ، Fivcial یا شکل سر باشد.

تجسم سنسورها در رندرهای سطح سه بعدی#

همچنین می توان تصویری از کلاه ایمنی سنسور MEG را با استفاده از رندر سطح سه بعدی به جای Matplotlib ارائه داد. این با فراخوانی mne. viz. plot_alignment () کار می کند:

شکل = مگس.عکسبرداری.طرح_( sample_raw.اطلاعات, حفر کردن=نادرست, اگ=نادرست, سطوح=[], مگ=['کلاه ایمنی', "سنسورها"], مختصات="مگ" ) مگس.عکسبرداری.set_3d_view(شکل, لاله=50, ارتفاع=90, فاصله=0.5) 

40 sensor locations

گرفتن کلاه ایمنی برای سیستم 306m انواع کانال :: درجه: 203 ، جادو: 102

توجه داشته باشید که plot_alignment () به یک شیء اطلاعات نیاز دارد ، و همچنین می تواند سطوح MRI پوست سر ، جمجمه و مغز را ارائه دهد (با عبور از یک دیکته با کلیدهایی مانند "سر" ، "بیرونی" یا "مغز" به پارامتر سطوح). این باعث می شود عملکرد برای ارزیابی تحولات قاب مختصات مفید باشد. برای نمونه هایی از کاربردهای مختلف Plot_Alignment () ، به طرح بندی سنسور سیستم EEG ، ترسیم سنسورهای EEG بر روی پوست سر و ترسیم طرح های سنسور سیستم های MEG مراجعه کنید.

کار با پرونده های چیدمان#

مشابه مونتاژها ، بسیاری از پرونده های طرح بندی با MNE-Python گنجانده شده است. آنها در پوشه MNE/کانال ها/داده ها/چیدمان ها ذخیره می شوند:

layout_dir = مسیر(مگس.__فایل__).والدین / "کانال ها" / 'داده ها' / "طرح بندی" طرح = مرتب(مسیر.نام برای مسیر in layout_dir.میانه()) چاپ( '
' طرح های داخلی
' '================' ) چاپ('
'.پیوستن(طرح)) 
طرح بندی داخلی =============== CTF-275. LOUT CTF151. LAY CTF275. LAY EEG1005. LAY EGI256. LOUT GEODESICHEADWEB-130. LOUT GEODESICHEADWEB-2180. LOUT KIT-125. lout KIT-157. LOUT KIT-160. LAY KIT-AD. LOUT KIT-AS-2008. LOUT KIT-UMD-3. LOUT NEUROMAG_122. LOUT VECTORVIEW-ALL. LOUT VECTORVIED. LOUT VECTORVIEW-GRADE_NORM. LOUT VECTORVIEWVIEWVIEWIWIED-mag. lout biosemi. lay maineswh3600. lout

برای بارگذاری یک فایل چیدمان ، از عملکرد mne. chaels. read_layout استفاده کنید. سپس می توانید طرح را با استفاده از روش طرح آن تجسم کنید:

biosemi_layout = مگس.کانال.read_layout("بیوسمی") 

مشابه آرگومان انتخاب برای انتخاب کانال ها از اشیاء خام ، روش طرح () اشیاء طرح نیز دارای یک آرگومان انتخابی است. با این حال ، از آنجا که طرح ها فقط حاوی اطلاعاتی در مورد نام سنسور و مکان (نوع سنسور نیستند) ، روش Plot () فقط از انتخاب کانال های توسط فهرست (نه به نام یا نوع) پشتیبانی می کند. در مثال زیر ، شاخص های مورد نظر را با استفاده از numpy. where () پیدا می کنیم. انتخاب با نام یا نوع با mne. pick_chaels () یا mne. pick_types () امکان پذیر است.

خط میانی = np.جایی که([نام.به پایان می رسد با('z') برای نام in biosemi_layout.نام])[0] biosemi_layout.طرح(انتخاب=خط میانی) 

40 sensor locations

اگر یک شیء خام دارید که دارای موقعیت های سنسور است ، می توانید یک شیء طرح بندی با mne. chaels. make_eeg_layout () یا mne. chaels. find_layout () ایجاد کنید.

layout_from_raw = مگس.کانال.make_eeg_layout(sample_raw.اطلاعات) # نتیجه مشابه mne. chaels. find_layout (raw. info ، ch_type = 'eeg') layout_from_raw.طرح() 

40 sensor locations

هیچ تابع make_meg_layout () مربوطه وجود ندارد زیرا مکان های سنسور در یک سیستم MEG ثابت هستند (بر خلاف EEG ، جایی که درپوش های سنسور تغییر شکل می دهند تا به طور دقیق روی یک سر خاص قرار بگیرند). بنابراین ، طرح های MEG برای یک سیستم معین سازگار (ثابت) هستند و می توانید آنها را با mne. chaels. read_layout () بارگذاری کنید یا از mne. chaels. find_layout () با پارامتر ch_type (همانطور که قبلاً برای EEG نشان داده شده بود) استفاده کنید.

تمام اشیاء چیدمان دارای یک روش ذخیره هستند که طرح های مربوط به دیسک را به عنوان قالب های . lout یا . lay می نویسد (از پسوند پرونده موجود در آرگومان FNAME استنباط می شود). انتخاب بین . lout و . lay فقط در صورت نیاز به بارگذاری پرونده طرح در برخی از برنامه های دیگر اهمیت دارد (MNE-Python می تواند هر دو قالب را بخواند).

کل زمان اجرای فیلمنامه: (0 دقیقه 11. 454 ثانیه)

مصرف تخمین زده شده از حافظه: 25 مگابایت

استراتژی‌های اسکالپ...
ما را در سایت استراتژی‌های اسکالپ دنبال می کنید

برچسب : نویسنده : جعفر بدیعی بازدید : <-PostHit-> تاريخ : دوشنبه 2 مرداد 1402 ساعت: 12:44