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