def test_create_stimulus_surface_with_operation(self): surface_stimulus_creator = SurfaceStimulusCreator() view_model = surface_stimulus_creator.get_view_model_class()() view_model.surface = self.surface.gid view_model.focal_points_triangles = numpy.array([1, 2, 3]) view_model.spatial = SpatialEquationsEnum.SIGMOID.instance view_model.spatial.parameters['radius'] = 5.5 view_model.spatial.parameters['offset'] = 0.1 view_model.spatial_amp = 1.0 view_model.spatial_sigma = 1.0 view_model.spatial_offset = 0.0 view_model.temporal = TemporalEquationsEnum.ALPHA.instance view_model.temporal.parameters['alpha'] = 15.0 view_model.temporal.parameters['beta'] = 40.0 OperationService().fire_operation(surface_stimulus_creator, self.test_user, self.test_project.id, view_model=view_model) surface_stimulus_index = TestFactory.get_entity(self.test_project, StimuliSurfaceIndex) assert surface_stimulus_index.spatial_equation == 'Sigmoid' assert surface_stimulus_index.temporal_equation == 'Alpha' assert surface_stimulus_index.fk_surface_gid == self.surface.gid spatial_eq_params = json.loads(surface_stimulus_index.spatial_parameters) assert spatial_eq_params['radius'] == 5.5 assert spatial_eq_params['offset'] == 0.1 temporal_eq_params = json.loads(surface_stimulus_index.temporal_parameters) assert temporal_eq_params['alpha'] == 15.0 assert temporal_eq_params['beta'] == 40.0
def view_stimulus(self, focal_points): """ Just create the stimulus to view the actual data, don't store to db. Hold the entity in session without the surface, so the next time you need data just get from that one. """ try: current_surface_stim = common.get_from_session(KEY_SURFACE_STIMULI) current_surface_stim.focal_points_triangles = numpy.array(json.loads(focal_points)) min_time = common.get_from_session(KEY_TMP_FORM).min_tmp_x.value or 0 max_time = common.get_from_session(KEY_TMP_FORM).max_tmp_x.value or 100 stimuli_surface = SurfaceStimulusCreator.prepare_stimuli_surface_from_view_model(current_surface_stim, True) stimuli_surface.configure_space() time = numpy.arange(min_time, max_time, 1) time = time[numpy.newaxis, :] stimuli_surface.configure_time(time) current_surface_stim._temporal_pattern = stimuli_surface.temporal_pattern current_surface_stim._spatial_pattern = stimuli_surface.spatial_pattern data = [] max_value = numpy.max(stimuli_surface()) min_value = numpy.min(stimuli_surface()) for i in range(min(CHUNK_SIZE, stimuli_surface.temporal_pattern.shape[1])): step_data = stimuli_surface(i).tolist() data.append(step_data) result = {'status': 'ok', 'max': max_value, 'min': min_value, 'data': data, "time_min": min_time, "time_max": max_time, "chunk_size": CHUNK_SIZE} return result except (NameError, ValueError, SyntaxError): return {'status': 'error', 'errorMsg': "Could not generate stimulus data. Some of the parameters hold invalid characters."} except Exception as ex: return {'allSeries': 'error', 'errorMsg': ex}
def test_create_stimulus_surface(self): surface_stimulus_creator = SurfaceStimulusCreator() view_model = surface_stimulus_creator.get_view_model_class()() view_model.surface = UUID(self.surface.gid) view_model.focal_points_triangles = numpy.array([1, 2, 3]) view_model.spatial = FiniteSupportEquation() view_model.spatial_amp = 1.0 view_model.spatial_sigma = 1.0 view_model.spatial_offset = 0.0 view_model.temporal = TemporalApplicableEquation() view_model.temporal.parameters['a'] = 1.0 view_model.temporal.parameters['b'] = 0.0 surface_stimulus_index = surface_stimulus_creator.launch(view_model) assert surface_stimulus_index.spatial_equation == 'FiniteSupportEquation' assert surface_stimulus_index.temporal_equation == 'TemporalApplicableEquation' assert surface_stimulus_index.surface_gid == self.surface.gid
def test_create_stimulus_surface_with_operation(self): surface_stimulus_creator = SurfaceStimulusCreator() view_model = surface_stimulus_creator.get_view_model_class()() view_model.surface = UUID(self.surface.gid) view_model.focal_points_triangles = numpy.array([1, 2, 3]) view_model.spatial = FiniteSupportEquation() view_model.spatial_amp = 1.0 view_model.spatial_sigma = 1.0 view_model.spatial_offset = 0.0 view_model.temporal = TemporalApplicableEquation() view_model.temporal.parameters['a'] = 1.0 view_model.temporal.parameters['b'] = 0.0 FlowService().fire_operation(surface_stimulus_creator, self.test_user, self.test_project.id, view_model=view_model) surface_stimulus_index = TestFactory.get_entity(self.test_project, StimuliSurfaceIndex) assert surface_stimulus_index.spatial_equation == 'FiniteSupportEquation' assert surface_stimulus_index.temporal_equation == 'TemporalApplicableEquation' assert surface_stimulus_index.surface_gid == self.surface.gid
def test_create_stimulus_surface(self, operation_factory): surface_stimulus_creator = SurfaceStimulusCreator() view_model = surface_stimulus_creator.get_view_model_class()() view_model.surface = self.surface.gid view_model.focal_points_triangles = numpy.array([1, 2, 3]) view_model.spatial = SpatialEquationsEnum.MEXICAN_HAT.instance view_model.spatial.parameters['amp_1'] = 0.75 view_model.spatial.parameters['amp_2'] = 1.25 view_model.spatial_amp = 1.0 view_model.spatial_sigma = 1.0 view_model.spatial_offset = 0.0 view_model.temporal = TemporalEquationsEnum.SINUSOID.instance view_model.temporal.parameters['amp'] = 1.1 view_model.temporal.parameters['frequency'] = 0.025 operation = operation_factory(test_user=self.test_user, test_project=self.test_project) surface_stimulus_creator.extract_operation_data(operation) surface_stimulus_index = surface_stimulus_creator.launch(view_model) assert surface_stimulus_index.spatial_equation == 'DoubleGaussian' assert surface_stimulus_index.temporal_equation == 'Sinusoid' assert surface_stimulus_index.fk_surface_gid == self.surface.gid spatial_eq_params = json.loads(surface_stimulus_index.spatial_parameters) assert spatial_eq_params['amp_1'] == 0.75 assert spatial_eq_params['amp_2'] == 1.25 temporal_eq_params = json.loads(surface_stimulus_index.temporal_parameters) assert temporal_eq_params['amp'] == 1.1 assert temporal_eq_params['frequency'] == 0.025
def test_create_stimulus_surface(self, operation_factory): surface_stimulus_creator = SurfaceStimulusCreator() view_model = surface_stimulus_creator.get_view_model_class()() view_model.surface = self.surface.gid view_model.focal_points_triangles = numpy.array([1, 2, 3]) view_model.spatial = FiniteSupportEquation() view_model.spatial_amp = 1.0 view_model.spatial_sigma = 1.0 view_model.spatial_offset = 0.0 view_model.temporal = TemporalApplicableEquation() view_model.temporal.parameters['a'] = 1.0 view_model.temporal.parameters['b'] = 0.0 operation = operation_factory(test_user=self.test_user, test_project=self.test_project) surface_stimulus_creator.extract_operation_data(operation) surface_stimulus_index = surface_stimulus_creator.launch(view_model) assert surface_stimulus_index.spatial_equation == 'FiniteSupportEquation' assert surface_stimulus_index.temporal_equation == 'TemporalApplicableEquation' assert surface_stimulus_index.fk_surface_gid == self.surface.gid