# POTENTIAL = pd.DataFrame(fh['POTENTIAL'], columns=ELECTRODES.index) # for k in ['SIGMA', 'R', 'ALTITUDE', 'AZIMUTH',]: # POTENTIAL[k] = fh[k] # # POTENTIAL['CONDUCTIVITY'] = CONDUCTIVITY.brain fourSM = FourSphereModel(CONDUCTIVITY, RADIUS, ELECTRODES) GND_ELECTRODES = ELECTRODES.index[(POTENTIAL[ELECTRODES.index] == 0).all()] RECORDING_ELECTRODES = ELECTRODES.index[(POTENTIAL[ELECTRODES.index] != 0).any()] reconstructors = { name: kesi.FunctionalKernelFieldReconstructor([ cls(GND_ELECTRODES, ELECTRODES, ROW) if issubclass( cls, ElectrodeAware) else cls(ROW) for _, ROW in POTENTIAL[(POTENTIAL.SIGMA < 1) & ( POTENTIAL.ALTITUDE > np.pi / 2 * 80 / 90)].iterrows() ], 'potential', RECORDING_ELECTRODES) for name, cls in [ ('kCSD', GroundedElectrodeAwarePolarGaussianSourceKCSD3D), ('kESI', PolarGaussianSourceFEM), ] } gc.collect() PHI = pd.DataFrame(index=ELECTRODES.index) loc_dipole = {} for name, dipole in dipoles.items(): logger.info('Computing potentials for dipole: ' + name) src_pos = dipole['src_pos'] snk_pos = dipole['snk_pos']
def createReconstructor(self, name, nodes): return kesi.FunctionalKernelFieldReconstructor( self.FIELD_COMPONENTS.values(), name, nodes)
ELECTRODES.loc[RECORDING_ELECTRODES], SOURCES_UNIFORM), (ElectrodeAwareCartesianGaussianSourceKCSD3D, UNIFORM_ELECTRODES, SOURCES_UNIFORM), (ElectrodeAwarePolarGaussianSourceKCSD3D, ELECTRODES.loc[RECORDING_ELECTRODES], SOURCES_GM), (PolarGaussianSourceFEM, ELECTRODES.loc[RECORDING_ELECTRODES], SOURCES_GM), ] reconstructors = [] DF = [] for setup, (cls, electrodes, sources) in enumerate(SETUPS): print(cls.__name__) reconstructor = kesi.FunctionalKernelFieldReconstructor([ cls(electrodes, ROW) if issubclass(cls, ElectrodeAware) else cls(ROW) for _, ROW in sources.iterrows() ], 'potential', electrodes.index) reconstructors.append(reconstructor) gc.collect() A = np.array([ f.csd(0, YY.flatten(), ZZ.flatten()) for f in reconstructor._field_components ], dtype=np.float128).T B = reconstructor._pre_cross_kernel.astype(np.float128) N_ELS = reconstructor._pre_cross_kernel.shape[1] measures_names = ['electrode{:03d}'.format(i) for i in range(N_ELS)] measures = [np.identity(N_ELS)] if cls is GaussianSourceFEM: