예제 #1
0
    # 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']
예제 #2
0
 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: