脑电地形图在进行和“源”相关的分析时很有用,可以直观的看出各个电极的激活情况以及其随时间的变化。在标准的脑电数据中都是有电极的坐标位置的,会用EEGLab的可能对这块比较熟悉了,实际MNE库中也有相关的定义和实现,可以导入外部的电极数据,或者使用一些标准的位置信息如:10-20电极分布。

电极的坐标以及坐标系:

脑电电极的分布可以根据实际情况设计不同的位置,以标准的1020为例。

https://www.diytdcs.com/2012/07/1020-system-electrode-distances/

使用pythonmne脑电地形图绘制 脑电地形图正常_python

实际上标准的10-20只有21个通道,随着通道需求的增加,基于10-20 有了很多的变形,通道数也增加了很多。不过通道的位置一般都是由采集设备固定的,了解就好。

如果你有EEGLab的数据,在转换为MNE使用的时候我们只需要关心笛卡尔坐标系的XYZ就可以了。下面的两张图是EEGLab中的坐标描述,和后面内容没什么关系,只是为了说明有3种不同的坐标系之间的转换。

https://cloud.tencent.com/developer/article/1521031

使用pythonmne脑电地形图绘制 脑电地形图正常_MNE_02

https://atonal.ucdavis.edu/resources/docs/matlab/public/eeg/fixes/readlocs.html

使用pythonmne脑电地形图绘制 脑电地形图正常_地形图_03

MNE中的topomap

推荐一个连接,也是官方的一个例子,把这个例子搞明白应该就够用了,例子中的内容比较多,这里只挑选示例中的几个函数。

https://mne.tools/stable/auto_tutorials/intro/plot_40_sensor_locations.html#sphx-glr-auto-tutorials-intro-plot-40-sensor-locations-py

使用pythonmne脑电地形图绘制 脑电地形图正常_地形图_04

 

1、没有电极位置信息,只有通道名称。

大部分的情况下,你可能有一些脑电数据,但是没有电极的位置信息,只要你的通道名称是标准的命名规则就可以直接使用默认的位置信息,相当方便,这个函数就是set_montage;这是epochs的一个方法epochs.set_montage('standard_1020'),这里的使用的10-20的分布规则,还有一些其他的规则可以选择。MNE中的10-20支持94+3通道,一般情况够用了 。

epochs.set_montage('standard_1020')

https://mne.tools/stable/generated/mne.Epochs.html?highlight=set_montage#mne.Epochs.set_montage

使用pythonmne脑电地形图绘制 脑电地形图正常_MNE_05

2、有电极位置信息

有电极位置信息是最好的了,因为有些时候由于一些特殊原因可能没有按照标准的分布规则部署电极,只要有位置信息就可以在任何平台使用了。在MNE中这种情况通过两个步骤来处理,首先make_dig_montage,然后set_montage就可以了。这种方式还能解决通道命名不规范的问题,只要make_dig_montage中ch_pos的key和通道名对应即可,并不要求一定是标准的命名方式,还有一点需要注意MNE中的单位是米,可能会需要换算。

make_dig_montage:https://mne.tools/stable/generated/mne.channels.make_dig_montage.html?highlight=make_dig_montage#mne.channels.make_dig_montage

使用pythonmne脑电地形图绘制 脑电地形图正常_MNE_06

sensorPosition={ch_names:position}
montage = mne.channels.make_dig_montage(ch_pos=sensorPosition)
epochs.set_montage(montage)

然后你就可以绘制这种脑电地形图了。。。

使用pythonmne脑电地形图绘制 脑电地形图正常_地形图_07