在前面咱們介紹過Evoked的數據結構以及如何建立Evoked對象《Python-EEG工具庫MNE中文教程(4)-MNE中數據結構Evoked及其對象建立》以及上文介紹了Evoked的數據可視化《Python-可視化Evoked數據》。數據庫
今天接着介紹Evoked數據的地形圖可視化。微信
首先仍是先介紹一下Evoked結構:網絡
Evoked結構
Evoked potential(EP)誘發電位或誘發反應是指在出現諸如閃光或純音之類的刺激後,從人類或其餘動物的神經系統,特別是大腦的特定部分記錄的特定模式的電位。不一樣形式和類型的刺激會產生不一樣類型的電位。數據結構
誘發電位振幅每每較低,從小於1微伏到數微伏不等,而腦電圖爲數十微伏,肌電圖爲毫伏,心電圖一般接近20毫伏。爲了在EEG、ECG、EMG等生物信號和環境噪聲的背景下解決這些低幅度電位,一般須要對信號進行平均。信號被時間鎖定在刺激上,大部分噪聲是隨機產生的,這樣就能夠經過對重複響應來平均掉噪聲。函數
誘發電位(Evoked)結構主要用於存儲實驗期間的平均數據,在MNE中,建立Evoked對象一般使用mne.Epochs.average()來平均epochs數據來實現。工具
本示例中,咱們着重於mne.Evoked的地形圖可視化繪圖功能。學習
案例介紹測試
# 導入工具包import os.path as opimport numpy as npimport matplotlib.pyplot as pltimport mne
"""第一步:從文件中讀取誘發對象"""# 獲取數據文件默認春芳地址data_path = mne.datasets.sample.data_path()# 構建文件存放的具體路徑fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis-ave.fif')# 根據文件存放的具體路徑evoked = mne.read_evokeds(fname, baseline=(None, 0), proj=True)
注意,誘發事件是一系列誘發事件的實例。
經過將參數條件傳遞給mne.read_evokeds(),您只能讀取其中一個類別。 爲了使本教程更簡單,咱們將每一個實例讀取到一個變量。編碼
evoked_l_aud = evoked[0]evoked_r_aud = evoked[1]evoked_l_vis = evoked[2]evoked_r_vis = evoked[3]
咱們可使用Evoked對象的mne.Evoked.plot_joint()方法在一張圖中組合兩種圖形。按原樣調用(evoked.plot_joint()),此函數應提供時空動態的信息顯示。 可使用topomap_args和ts_args參數直接設置圖的時間序列部分和topomap部分的樣式。也能夠將鍵值對做爲Python字典傳遞。spa
而後將它們做爲參數傳遞給聯合繪圖的mne.Evoked.plot_topomap()和時間序列(mne.Evoked.plot())。
對於使用這些topomap_args和ts_args參數的特定樣式的示例,此處顯示了特定時間點(90和200 ms)的topomaps,未繪製傳感器(經過轉發到plot_topomap的參數),而且顯示了Global Field Power:
ts_args = dict(gfp=True, time_unit='s')topomap_args = dict(sensors=False, time_unit='s')evoked_r_aud.plot_joint(title='right auditory', times=[.09, .20], ts_args=ts_args, topomap_args=topomap_args)
若是想要比較兩個或多個傳感器的選擇條件,或例如,爲全局場功率。爲此,可使用函數mne.viz.plot_compare_evokeds()。最簡單的方法是建立一個Python字典,其中鍵是條件名,值是mne誘發對象。
若是你提供了多個誘發對象的列表,好比那些多被試的對象,總平均值連同一個置信區間帶被繪製出來——這能夠用來對比整個實驗的條件。
首先,咱們將誘發對象加載到字典中,將鍵設置爲‘/’分隔的標記(就像咱們能夠對epochs中的event_id所作的那樣)。
而後,咱們使用mne.viz.plot_compare_evokeds()進行繪圖。該圖表使用dict參數進行樣式化,一樣使用「/」分隔的標記。咱們繪製了一個具備強烈聽覺反應的腦磁圖MEG通道。
conditions = ["Left Auditory", "Right Auditory", "Left visual", "Right visual"]evoked_dict = dict()for condition in conditions: evoked_dict[condition.replace(" ", "/")] = mne.read_evokeds( fname, baseline=(None, 0), proj=True, condition=condition)print(evoked_dict)
對於移動高級繪圖使用mne.viz.plot_compare_evokeds()。
"""設置 evoked 類別顏色,左聽覺和左視覺的線條顏色爲:Crimson右聽覺和右視覺的線條顏色爲:CornFlowerBlue"""colors = dict(Left="Crimson", Right="CornFlowerBlue")"""設置 evoked 繪製 線型,聽覺的線型爲:-視覺的線型爲:--"""linestyles = dict(Auditory='-', visual='--')# pick = evoked_dict["Left/Auditory"].ch_names.index('MEG 1811')mne.viz.plot_compare_evokeds(evoked_dict, picks=pick, colors=colors, linestyles=linestyles, split_legend=True)
也能夠用圖像來描繪這些活動。時間沿着x軸,通道沿着y軸。振幅是彩色編碼的,因此振幅從負到正轉換成從藍色到紅色。白色表示零振幅。您可使用cmap參數本身定義顏色映射。接受的值包括全部matplotlib顏色映射。
evoked_r_aud.plot_image(picks='meg')
最後將傳感器數據繪製成地形圖。在簡單的狀況下,咱們只繪製左聽覺反應,而後咱們把它們都繪製在同一個圖中進行比較。單擊各個圖,將它們放大。
title = 'MNE sample data\n(condition : %s)'evoked_l_aud.plot_topo(title=title % evoked_l_aud.comment, background_color='k', color=['white'])mne.viz.plot_evoked_topo(evoked, title=title % 'Left/Right Auditory/Visual', background_color='w')
對於少許傳感器,也能夠建立更精細的彈出窗口。 一樣,單擊傳感器可打開一個單傳感器圖。
mne.viz.plot_compare_evokeds(evoked_dict, picks="eeg", colors=colors, linestyles=linestyles, split_legend=True, axes="topo")
文章來源於網絡,僅用於學術交流,不用於商業行爲,如有侵權及疑問,請後臺留言!
更多閱讀
清華大學、中科院等研究機構研究人員提出BETA:面向SSVEP-BCI應用程序的大型基準測試數據庫
你知道"淘寶意念購"嗎?阿里巴巴也入局腦機接口領域了...,
使用時空-頻率模式分析從腦電數據的一些試驗中提取N400成分
腦機接口BCI學習交流QQ羣:515148456
微信羣請掃碼添加,Rose拉你進羣
(請務必填寫備註,eg. 姓名+單位+專業/領域/行業)
長按加羣
本文分享自微信公衆號 - 腦機接口社區(Brain_Computer)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。