首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用一组指定的EEG通道在Python中绘制蒙太奇图?

如何使用一组指定的EEG通道在Python中绘制蒙太奇图?
EN

Stack Overflow用户
提问于 2019-11-09 21:32:36
回答 3查看 2.4K关注 0票数 5

我使用Python的MNE包加载了一些EEG数据。数据有46个记录通道从10-20蒙太奇,但我们已经确定了许多死通道,只想集中在其余的。

我可以删除频道,但我不知道如何绘制更新的蒙太奇。

首先,我加载edf文件,复制并删除所需的通道:

代码语言:javascript
复制
import mne as mn
raw = mn.io.read_raw_edf("patient_001.edf",preload=True)
raw_temp=raw.copy()
raw_temp.drop_channels(['E', 'LIO', 'RIO', 'X1', 'X2', 
'X3','X4''X5', 'X6', 'X7', 'X8', 'X9', 'X10', 'X11', 'O2%', 'HR', 
'DC03','DC04', 'EEG Mark1', 'EEG Mark2', 'BP1', 'BP2','STI 014'])

我查过了频道被移除了。我现在要做的是只使用我剩下的23个频道来制作一个更新的蒙太奇:

代码语言:javascript
复制
raw_temp.info["ch_names"]

“Fp1”、“FP2”、“F3”、“F4”、“C3”、“C4”、“P3”、“P4”、“O1”、“O2”、“F7”、“F8”、“T7”、“T8”、“P7”、“P8”、“Fz”、“Cz”、“Pz”、“A1”、“A2”、“T1”、“T2”

从我非常有限的渠道布局知识,我理解字母代表位置和数字代表半球,例如F4代表额叶,右侧。

下面打印10-2093通道布局的蒙太奇:

代码语言:javascript
复制
montage = mn.channels.read_montage("standard_1020")
raw_temp.set_montage(montage)
montage.plot()

其他蒙太奇选项列于

https://github.com/mne-tools/mne-python/blob/master/mne/channels/montage.py

但我看不出有46个频道可选。

有没有办法为我的23个频道制作蒙太奇?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-11 13:40:19

当读取原始eeg文件时,您应该为原始数据分配一个蒙太奇(您也可以在创建时代之后这样做)。这可以使用每个电极的坐标和一些基准点来完成(参见蒙太奇)。如果您的数据来自标准的10-20系统,那么您可以使用内置函数mne.channels.make_standard_montage('standard_1020')获得93通道蒙太奇,然后只保留您感兴趣使用以下代码的电极:

代码语言:javascript
复制
# Form the 10-20 montage
mont1020 = mne.channels.make_standard_montage('standard_1020')
# Choose what channels you want to keep 
# Make sure that these channels exist e.g. T1 does not exist in the standard 10-20 EEG system!
kept_channels = ['Fp1', 'Fp2', 'F3', 'F4', 'C3', 'C4', 'P3', 'P4', 'O1', 'O2', 'F7', 'F8', 'T7', 'T8', 'P7', 'P8', 'Fz', 'Cz', 'Pz', 'A1', 'A2', 'T1', 'T2']
ind = [i for (i, channel) in enumerate(mont1020.ch_names) if channel in kept_channels]
mont1020_new = mont1020.copy()
# Keep only the desired channels
mont1020_new.ch_names = [mont1020.ch_names[x] for x in ind]
kept_channel_info = [mont1020.dig[x+3] for x in ind]
# Keep the first three rows as they are the fiducial points information
mont1020_new.dig = mont1020.dig[0:3]+kept_channel_info
mont1020.plot()
mont1020_new.plot()

在这里输入图像描述

我建议您分配一个蒙太奇(查看原始数据之前,拒绝任何渠道。这样,在丢弃坏信道之后,您可以非常容易地在预处理的任何一点上获得更新的蒙太奇信息:

代码语言:javascript
复制
    raw = raw.set_montage(mont)
updated_mont = raw.get_montage() #also works with epo.get_montage()

然后,您可以简单地绘制更新的蒙太奇:

代码语言:javascript
复制
updated_mont.plot()
票数 1
EN

Stack Overflow用户

发布于 2020-06-15 17:48:51

如果只想绘制电极布局,可以使用Layout类而不是Montage类:

代码语言:javascript
复制
import mne

layout = mne.channels.read_layout("EEG1005")
selection = [
    "Fp1",
    "Fp2",
    "F3",
    "F4",
    "C3",
    "C4",
    "P3",
    "P4",
    "O1",
    "O2",
    "F7",
    "F8",
    "T7",
    "T8",
    "P7",
    "P8",
    "Fz",
    "Cz",
    "Pz",
    "A1",
    "A2",
    "T1",
    "T2",
]
picks = []
for channel in selection:
    picks.append(layout.names.index(channel))
display = layout.plot(picks=picks)

这给了你

至少对mne==0.18.0来说是这样。

票数 2
EN

Stack Overflow用户

发布于 2021-07-22 01:25:57

注意: ind = [i,通道)在枚举(mont1020.ch_names)打印:这是ind : 0,2,15,17,19,21,23,39,41,43,61,63,65,80,81,82,86,87,88,89

ind =[枚举(mont1020.ch_names)中(i,通道)打印的通道: ind:“FP1”、“FP2”、“F7”、“F3”、“Fz”、“F4”、“F8”、“C3”、“Cz”、“C4”、“P3”、“Pz”、“P4”、“O1”、“Oz”、“O2”、“T3”、“T5”、“T4”、“T6”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58783695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档