def LORETA(alpha, K, bkdir, MaxNeighbor): Ne, Nd = K.shape H = np.eye((Ne))- np.ones((Ne, Ne))/Ne K = np.dot(H, K) for bkdfilename1 in glob.iglob(bkdir+"/*.Dipoles_1_*"): D1 = read_bk.bkd(bkdfilename1) for bkdfilename2 in glob.iglob(bkdir+"/*.Dipoles_2_*"): D2 = read_bk.bkd(bkdfilename2) Nd = D1['ndipoles'] + D2['ndipoles'] Mat1 = np.concatenate((np.matrix(D1['dipole_location_index']['x']),np.matrix(D1['dipole_location_index']['y']), np.matrix(D1['dipole_location_index']['z'])), axis=0) Mat2 = np.concatenate((np.matrix(D2['dipole_location_index']['x']),np.matrix(D2['dipole_location_index']['y']), np.matrix(D2['dipole_location_index']['z'])), axis=0) VoxCoord = np.array(np.concatenate((Mat1, Mat2), axis=1)) Vox2 = VoxCoord*VoxCoord #vcnorms = np.matrix(np.sum(VoxCoord*VoxCoord, axis=0)) #vcnorms = np.matrix(Vox2.sum(axis=0)) vcnorms = np.matrix(np.sum(Vox2, axis=0)) tridist = vcnorms - 2 * np.dot( VoxCoord.T, VoxCoord) + vcnorms.T tridist= np.sqrt(tridist) Neighbor = np.array(tridist < MaxNeighbor, dtype=float) B = np.identity(Nd) for i in range(Nd): Ni = np.sum(Neighbor[i,:])-1 if Ni > 0: B[i,:] = -Neighbor[i,:]/Ni B[i,i] = 1 BigK = np.concatenate((K, alpha * B), axis=0) KtK = np.dot(BigK.T, BigK) T = np.dot(np.linalg.inv(KtK), BigK.T) Imatrix = T[:, :Ne] return Imatrix
from RabbitMQ import Connection i = 83 DipI = np.zeros(nD) DipI[i] = 1 plt.plot(K[:, i]) plt.show() c = Connection.Connection('localhost') c.connect() c.sendOrientedData(DipI, "Ori", "4:00pm") c.sendEEGData(K[:, i], "EEG", "") c.disconnect() Dip1 = read_bk.bkd( '/Users/jesong1126/Work/EAV_MIE_BrainK/r842_ihm_test1/r842_ihm_test1.Dipoles_1_MRI.bkd' ) Dip2 = read_bk.bkd( '/Users/jesong1126/Work/EAV_MIE_BrainK/r842_ihm_test1/r842_ihm_test1.Dipoles_2_MRI.bkd' ) d1 = Dip1['dipole_location_index'] d2 = Dip2['dipole_location_index'] Dip_x = np.concatenate((d1['x'], d2['x']), axis=0) Dip_y = np.concatenate((d1['y'], d2['y']), axis=0) Dip_z = np.concatenate((d1['z'], d2['z']), axis=0) Dip_xyz = np.concatenate((Dip_x, Dip_y, Dip_z), axis=0) Dip_xyz = Dip_xyz.reshape(3, nD) Dip_xyz = Dip_xyz.T
# -*- coding: utf-8 -*- """ Created on Fri Jan 30 10:45:29 2015 @author: jesong1126 """ #import os #os.chdir("/Users/jesong1126/Work/Data/EAV/2941_HM") import numpy as np import matplotlib.pyplot as plt ## from braink import read_bk lbkd = read_bk.bkd('/Users/jesong1126/Python27/GeoPy/data/108_MIE/108_3.Dipoles_left_MRI.bkd') rbkd = read_bk.bkd('/Users/jesong1126/Python27/GeoPy/data/108_MIE/108_3.Dipoles_right_MRI.bkd') lbkd['ndipoles'] + rbkd['ndipoles'] lcoord = np.array((lbkd['dipole_location_index']['x'], lbkd['dipole_location_index']['y'], lbkd['dipole_location_index']['z'])).T rcoord = np.array((rbkd['dipole_location_index']['x'], rbkd['dipole_location_index']['y'], rbkd['dipole_location_index']['z'])).T VoxCoord = np.concatenate((lcoord, rcoord), axis=0) nVL = lbkd['ndipoles'] nVR = rbkd['ndipoles'] mmin = np.min(VoxCoord, axis=0) mmax = np.max(VoxCoord, axis=0) fig, ax = plt.subplots(2,2) ax[0,0].scatter(VoxCoord[:,0], VoxCoord[:,1], s=100, cmap='hot') #c=nSigVoxGrpI, ax[0,0].set_axis_off() ax[0,0].set_aspect('equal') ax[0,0].set_xlim([mmin[0]-10, mmax[0]+10]) ax[0,0].set_ylim([mmin[1]-10, mmax[1]+10])
import os os.system("open /Applications/EAV/Mimir.app") from RabbitMQ import Connection i=83; DipI= np.zeros(nD); DipI[i] = 1 plt.plot(K[:,i]); plt.show() c = Connection.Connection('localhost') c.connect() c.sendOrientedData(DipI, "Ori", "4:00pm") c.sendEEGData(K[:, i], "EEG", "") c.disconnect() Dip1 = read_bk.bkd('/Users/jesong1126/Work/EAV_MIE_BrainK/r842_ihm_test1/r842_ihm_test1.Dipoles_1_MRI.bkd') Dip2 = read_bk.bkd('/Users/jesong1126/Work/EAV_MIE_BrainK/r842_ihm_test1/r842_ihm_test1.Dipoles_2_MRI.bkd') d1 = Dip1['dipole_location_index']; d2 = Dip2['dipole_location_index']; Dip_x = np.concatenate((d1['x'], d2['x']), axis=0) Dip_y = np.concatenate((d1['y'], d2['y']), axis=0) Dip_z = np.concatenate((d1['z'], d2['z']), axis=0) Dip_xyz = np.concatenate((Dip_x, Dip_y, Dip_z), axis=0) Dip_xyz = Dip_xyz.reshape(3,nD) Dip_xyz = Dip_xyz.T Dip_xyz[i,:] print(np.min(d1['x']), np.max(d1['x']), np.min(d2['x']), np.max(d2['x']))