brain connectivity 可视化 python实现
// A code block
#main.py
import numpy as np
from _0_third_party import dataset, iir, processing, libplot
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from scipy import signal
import pandas as pd
def main(n):
Delta_power = [];Theta_power =[]; Alpha_power =[]; Beta_power =[]
for i, eeg_component in enumerate(eeg_components):#i是channle,1-18;eeg_component 是eeg数据
# Extract features
a = np.linspace(float(0), float(len(eeg_component)), 640)#将eeg数据0.1秒0.1秒分割成小段数据
for j in range(len(a)):
if j == 639:#当到达最后一组数字的时候就中断
break
else:
if j == n:#每0.1秒就进行一次画图
delta_power, theta_power, alpha_power, beta_power = processing.analysis_eeg(
eeg_component[int(a[j]):int(a[j] + 5000)], fs, i, j)#10s一段数据进行滤波,fft后,滤波,delta(1-4Hz),theta(4-8Hz),alpha(8-13Hz),beta(13-30Hz)
# print('i:',i,'j:',j)
Delta_power.append(delta_power)
Theta_power.append(theta_power)
Alpha_power.append(alpha_power)
Beta_power.append(beta_power)
DELTA = [Delta_power,Delta_power,Delta_power,Delta_power,Delta_power,Delta_power,Delta_power,Delta_power,Delta_power,
Delta_power, Delta_power, Delta_power, Delta_power, Delta_power, Delta_power, Delta_power,
Delta_power, Delta_power]
THETA = [Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,
Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,Theta_power,
Theta_power,Theta_power]
ALPHA = [Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,
Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,Alpha_power,
Alpha_power,Alpha_power]
BETA = [Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,
Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,Beta_power,
Beta_power,Beta_power]
return DELTA , Delta_power,THETA, Theta_power,ALPHA, Alpha_power, BETA, Beta_power
def csv_spect_delta(DELTA, Delta_power):
Mean_delta_cwt = [];N =[];M=[];A=[]
for m in range(1,len(DELTA)):
for a in range(0,len(Delta_power)-m):
DELTA_power_1 = []
for b in range(0,len(Delta_power[:][0])):
# print('m:',m,'a:',a,'b:',b)
if a + m >=18:
continue
else:
DELTA_power_1.append(abs(DELTA[m][a][b]-DELTA[m][a+m][b]))
delta_cwtmatr = signal.cwt(DELTA_power_1, signal.ricker, widths=np.arange(1, 5, 0.01))
mean_delta_cwt = np.mean(delta_cwtmatr)
print('mean_delta_cwt:',mean_delta_cwt,'n:',n,'m:',m,'a:',a)
Mean_delta_cwt.append(mean_delta_cwt)
N.append(n);M.append(m);A.append(a)
print(len(Mean_delta_cwt),len(N),len(M),len(A))
return Mean_delta_cwt,N,M,A
def csv_spect_theta(THETA, Theta_power):
Mean_theta_cwt = [];N =[];M=[];A=[]
for m in range(1,len(THETA)):
for a in range(0,len(Theta_power)-m):
THETA_power = []
for b in range(0,len(Delta_power[:][0])):
# print('m:',m,'a:',a,'b:',b)
if a + m >=18:
continue
else: