def _prepare_simulator_from_view_model(self, view_model): simulator = Simulator() simulator.gid = view_model.gid conn = self.load_traited_by_gid(view_model.connectivity) simulator.connectivity = conn simulator.conduction_speed = view_model.conduction_speed simulator.coupling = view_model.coupling rm_surface = None if view_model.surface: simulator.surface = Cortex() rm_index = self.load_entity_by_gid( view_model.surface.region_mapping_data.hex) rm = h5.load_from_index(rm_index) rm_surface_index = self.load_entity_by_gid(rm_index.fk_surface_gid) rm_surface = h5.load_from_index(rm_surface_index, CorticalSurface) rm.surface = rm_surface rm.connectivity = conn simulator.surface.region_mapping_data = rm if simulator.surface.local_connectivity: lc = self.load_traited_by_gid( view_model.surface.local_connectivity) assert lc.surface.gid == rm_index.fk_surface_gid lc.surface = rm_surface simulator.surface.local_connectivity = lc if view_model.stimulus: stimulus_index = self.load_entity_by_gid(view_model.stimulus.hex) stimulus = h5.load_from_index(stimulus_index) simulator.stimulus = stimulus if isinstance(stimulus, StimuliSurface): simulator.stimulus.surface = rm_surface else: simulator.stimulus.connectivity = simulator.connectivity simulator.model = view_model.model simulator.integrator = view_model.integrator simulator.initial_conditions = view_model.initial_conditions simulator.monitors = view_model.monitors simulator.simulation_length = view_model.simulation_length # TODO: why not load history here? # if view_model.history: # history_index = dao.get_datatype_by_gid(view_model.history.hex) # history = h5.load_from_index(history_index) # assert isinstance(history, SimulationHistory) # history.fill_into(self.algorithm) return simulator
def build(self, **model_params): # Load, normalize and configure connectivity if isinstance(self.connectivity, string_types): connectivity = Connectivity.from_file(self.connectivity) else: connectivity = self.connectivity if self.scale_connectivity_weights is not None: if isinstance(self.scale_connectivity_weights, string_types): connectivity.weights = connectivity.scaled_weights( mode=self.scale_connectivity_weights) else: connectivity.weights /= self.scale_connectivity_weights if not self.delays_flag: connectivity.configure() # to set speed # Given that # idelays = numpy.rint(delays / dt).astype(numpy.int32) # and delays = tract_lengths / speed connectivity.tract_lengths = 0.1 * self.dt * connectivity.speed connectivity.configure() # Build model: model = self.model(**model_params) # Build integrator integrator = self.integrator(dt=self.dt) integrator.noise.nsig = np.array(ensure_list(self.noise_strength)) # Build monitors: assert Raw in self.monitors monitors = [] for monitor in self.monitors: monitors.append(monitor(period=self.dt)) monitors = tuple(monitors) # Build simulator simulator = Simulator() simulator._config = self.config simulator.connectivity = connectivity simulator.model = model simulator.integrator = integrator simulator.monitors = monitors return simulator
def main_example(tvb_sim_model, connectivity_zip=CONFIGURED.DEFAULT_CONNECTIVITY_ZIP, dt=0.1, noise_strength=0.001, simulation_length=100.0, config=CONFIGURED): plotter = Plotter(config) # --------------------------------------1. Load TVB connectivity---------------------------------------------------- connectivity = Connectivity.from_file(connectivity_zip) connectivity.configure() plotter.plot_tvb_connectivity(connectivity) # ----------------------2. Define a TVB simulator (model, integrator, monitors...)---------------------------------- # Create a TVB simulator and set all desired inputs # (connectivity, model, surface, stimuli etc) # We choose all defaults in this example simulator = Simulator() simulator.integrator = HeunStochastic(dt=dt) simulator.integrator.noise.nsig = np.array(ensure_list(noise_strength)) simulator.model = tvb_sim_model simulator.connectivity = connectivity mon_raw = Raw(period=simulator.integrator.dt) simulator.monitors = (mon_raw, ) # -----------------------------------3. Simulate and gather results------------------------------------------------- # Configure the simulator with the TVB-NEST interface... # simulator.configure(tvb_nest_interface=tvb_nest_model) simulator.configure() # ...and simulate! t_start = time.time() results = simulator.run(simulation_length=simulation_length) print("\nSimulated in %f secs!" % (time.time() - t_start)) # -------------------------------------------6. Plot results-------------------------------------------------------- plot_results(results, simulator, None, "State Variables", simulator.model.variables_of_interest, plotter) return connectivity, results