예제 #1
0
    def configure(self,
                  dt=2**-3,
                  model=models.Generic2dOscillator,
                  speed=4.0,
                  coupling_strength=0.00042,
                  method="HeunDeterministic",
                  surface_sim=False,
                  default_connectivity=True):
        """
        Create an instance of the Simulator class, by default use the
        generic plane oscillator local dynamic model and the deterministic 
        version of Heun's method for the numerical integration.
        
        """
        self.method = method

        if default_connectivity:
            white_matter = connectivity.Connectivity(load_default=True)
            # NOTE: This is the default region mapping should consider changing the name.
            region_mapping = RegionMapping.from_file(
                source_file=
                "cortex_reg13/region_mapping/o52r00_irp2008_hemisphere_both_subcortical_false_regions_74.txt.bz2"
            )
        else:
            white_matter = connectivity.Connectivity.from_file(
                source_file="connectivity_190.zip")
            region_mapping = RegionMapping.from_file(
                source_file=
                "cortex_reg13/region_mapping/o52r00_irp2008_hemisphere_both_subcortical_true_regions_190.txt.bz2"
            )

        white_matter_coupling = coupling.Linear(a=coupling_strength)
        white_matter.speed = speed

        dynamics = model()

        if method[-10:] == "Stochastic":
            hisss = noise.Additive(nsig=numpy.array([2**-11]))
            integrator = eval("integrators." + method + "(dt=dt, noise=hisss)")
        else:
            integrator = eval("integrators." + method + "(dt=dt)")

        if surface_sim:
            local_coupling_strength = numpy.array([2**-10])
            default_cortex = Cortex(load_default=True,
                                    region_mapping_data=region_mapping)
            default_cortex.coupling_strength = local_coupling_strength
            default_cortex.local_connectivity = LocalConnectivity(
                load_default=default_connectivity, surface=default_cortex)
        else:
            default_cortex = None

        # Order of monitors determines order of returned values.
        self.sim = simulator.Simulator(model=dynamics,
                                       connectivity=white_matter,
                                       coupling=white_matter_coupling,
                                       integrator=integrator,
                                       monitors=self.monitors,
                                       surface=default_cortex)
        self.sim.configure()
    def configure(self, dt=2 ** -3, model=models.Generic2dOscillator, speed=4.0,
                  coupling_strength=0.00042, method="HeunDeterministic",
                  surface_sim=False,
                  default_connectivity=True):
        """
        Create an instance of the Simulator class, by default use the
        generic plane oscillator local dynamic model and the deterministic
        version of Heun's method for the numerical integration.

        """
        self.method = method

        if default_connectivity:
            white_matter = Connectivity(load_file="connectivity_76.zip")
            region_mapping = RegionMapping(load_file="regionMapping_16k_76.txt")
        else:
            white_matter = Connectivity(load_file="connectivity_192.zip")
            region_mapping = RegionMapping(load_file="regionMapping_16k_192.txt")

        white_matter_coupling = coupling.Linear(a=coupling_strength)
        white_matter.speed = speed

        dynamics = model()

        if method[-10:] == "Stochastic":
            hisss = noise.Additive(nsig=numpy.array([2 ** -11]))
            integrator = eval("integrators." + method + "(dt=dt, noise=hisss)")
        else:
            integrator = eval("integrators." + method + "(dt=dt)")

        if surface_sim:
            local_coupling_strength = numpy.array([2 ** -10])
            default_cortex = Cortex(region_mapping_data=region_mapping, load_file="cortex_16384.zip")
            default_cortex.coupling_strength = local_coupling_strength
            default_cortex.local_connectivity = LocalConnectivity(load_file="local_connectivity_16384.mat")
        else:
            default_cortex = None

        # Order of monitors determines order of returned values.
        self.sim = simulator.Simulator(model=dynamics,
                                       connectivity=white_matter,
                                       coupling=white_matter_coupling,
                                       integrator=integrator,
                                       monitors=self.monitors,
                                       surface=default_cortex)
        self.sim.configure()
예제 #3
0
    def test_cortexdata(self):
        dt = Cortex(load_default=True)
        assert isinstance(dt, Cortex)
        assert dt.region_mapping is not None
        ## Initialize Local Connectivity, to avoid long computation time.
        dt.local_connectivity = LocalConnectivity(load_default=True)

        dt.configure()
        summary_info = dt.summary_info
        assert abs(summary_info['Region area, maximum (mm:math:`^2`)'] -
                   9333.39) < 0.01
        assert abs(summary_info['Region area, mean (mm:math:`^2`)'] -
                   3038.51) < 0.01
        assert abs(summary_info['Region area, minimum (mm:math:`^2`)'] -
                   540.90) < 0.01
        assert dt.get_data_shape('vertices') == (16384, 3)
        assert dt.get_data_shape('vertex_normals') == (16384, 3)
        assert dt.get_data_shape('triangles') == (32760, 3)
예제 #4
0
    def test_cortexdata(self):
        dt = Cortex(load_file="cortex_16384.zip",
                    region_mapping_data=RegionMapping(
                        load_file="regionMapping_16k_76.txt"))
        assert isinstance(dt, Cortex)
        assert dt.region_mapping_data is not None
        ## Initialize Local Connectivity, to avoid long computation time.
        dt.local_connectivity = LocalConnectivity(
            load_file="local_connectivity_16384.mat")

        dt.configure()
        summary_info = dt._find_summary_info()
        assert abs(summary_info['Region area, maximum (mm:math:`^2`)'] -
                   9333.39) < 0.01
        assert abs(summary_info['Region area, mean (mm:math:`^2`)'] -
                   3038.51) < 0.01
        assert abs(summary_info['Region area, minimum (mm:math:`^2`)'] -
                   540.90) < 0.01
        assert dt.vertices.shape == (16384, 3)
        assert dt.vertex_normals.shape == (16384, 3)
        assert dt.triangles.shape == (32760, 3)
예제 #5
0
    def test_cortexdata(self):

        dt = Cortex(load_default=True)
        self.assertTrue(isinstance(dt, Cortex))
        self.assertTrue(dt.region_mapping is not None)
        ## Initialize Local Connectivity, to avoid long computation time.
        dt.local_connectivity = LocalConnectivity(load_default=True)

        dt.configure()
        summary_info = dt.summary_info
        self.assertTrue(
            abs(summary_info['Region area, maximum (mm:math:`^2`)'] -
                9119.4540365252615) < 0.00000001)
        self.assertTrue(
            abs(summary_info['Region area, mean (mm:math:`^2`)'] -
                3366.2542250541251) < 0.00000001)
        self.assertTrue(
            abs(summary_info['Region area, minimum (mm:math:`^2`)'] -
                366.48271886512993) < 0.00000001)
        self.assertEqual(dt.get_data_shape('vertices'), (16384, 3))
        self.assertEqual(dt.get_data_shape('vertex_normals'), (16384, 3))
        self.assertEqual(dt.get_data_shape('triangles'), (32760, 3))
예제 #6
0
#Bundle them
what_to_watch = (mon_tavg, mon_savg, mon_eeg)

#Initialise a surface:
#First define the function describing the "local" connectivity.
grey_matter = LocalConnectivity(cutoff=40.0)
grey_matter.equation.parameters['sigma'] = 10.0
grey_matter.equation.parameters['amp'] = 1.0

#then a scaling factor, to adjust the strength of the local connectivity
local_coupling_strength = numpy.array([-0.0115])

#finally, create a default cortex that includes the custom local connectivity.
default_cortex = Cortex(load_default=True)
default_cortex.local_connectivity = grey_matter
default_cortex.coupling_strength = local_coupling_strength

#Initialise Simulator -- Model, Connectivity, Integrator, Monitors, and surface.
sim = simulator.Simulator(model=oscillator,
                          connectivity=white_matter,
                          integrator=heunint,
                          monitors=what_to_watch,
                          surface=default_cortex)
sim.configure()

LOG.info("Starting simulation...")
#Perform the simulation
tavg_data = []
tavg_time = []
savg_data = []