在这里插入代码片
# 本脚本的主要功能是将npz格式的数据转化为MNE中的Raw类型的数据, 以及保存方法和读取方法
import pickle
import numpy as np
from scipy.io import savemat
import mne
import matplotlib.pyplot as plt
input_path = r"E:\华意的相关资料\00-医院的数据\一些测试的数据\陈子莹发的\3min睁闭眼_EEG.npz"
save_path = r"E:\华意的相关资料\00-医院的数据\一些测试的数据\陈子莹发的\3min睁闭眼_EEG.pkl"
data = np.load(input_path)
rawdata = data['eeg_raw_data']
ch_names = data['channel_names']
ch_names = ch_names.tolist()
fs = 250
# 进行数据转换,将数据从三维矩阵转变成二维矩阵(通道数,时间样本点数)
single_data = rawdata[0, :, :]
new_data = np.zeros([single_data.shape[0], 10])
for i in range(rawdata.shape[0]):
print(i)
single_data = rawdata[i, :, :]
new_data = np.concatenate([new_data, single_data], axis=1)
new_data = new_data[:, 10:]
# 构建info
ch_types = ['eeg'] * np.size(ch_names)
info = mne.create_info(ch_names=ch_names, ch_types=ch_types, sfreq=fs)
# 加载标准的10-20电极位置信息
montage = mne.channels.make_standard_montage('standard_1020')
info.set_montage(montage)
# 创建MNE的Raw对象
Raw = mne.io.RawArray(new_data, info)
print(Raw.info)
print('\n转换完成~~~')
# 将Raw数据进行保存,也可以不保存直接使用
savefile = open("save_path", "wb")
pickle.dump(Raw, savefile, -1)
savefile.close()
print('一共采集了', np.array(new_data).shape[1]/250/60, '分钟')
print('一共采集了', np.size(ch_names), '通道,采集的通道名称为:', ch_names)
print('\n保存完成~~~')
'''
读取.pkl格式的方法
'''
# f = open('save_path', 'rb')
# #使用load的方法将数据从pkl文件中读取出来
# data = pickle.load(f)
# #关闭文件
# f.close()
# print(data.info)
# data.plot()
# plt.show()
怎么将npz格式的数据转化为MNE中的Raw类型的数据,并利用pickle进行保存和读取
于 2024-05-23 16:22:26 首次发布