def perform_measurement(self, event): """ Perform the queued measurements """ try: if not self.uploaded: # try to retrieve settings from the various forms config_dict = {} config_dict["temperature_settings"] = ( self.view1.get_temperature_form()) config_dict["wafer_settings"] = self.view1.get_wafer_form() # gets the measurement settings config_dict["experiment_settings"] = ( self.view1.get_experiment_form()) try: settings = self._parse_config(config_dict) except KeyError as e: self.view1.show_error_modal(str(e)) # create the wave forms for each run for setting in settings["experiment_settings"]: self.measurement_handler.add_to_queue(setting) self.wafer_settings = settings["wafer_settings"] self.temperature_settings = settings["temp_settings"] if self.data_dir is not None: save_metadata(self.wafer_settings.as_dict(), self.data_dir, self.wafer_settings.id) if self.measurement_handler.is_queue_empty(): raise (PVInputError("No measurements loaded.")) # Do the actual measurements # TODO: refactor in separate method dataset_list = [] total_measurements = 0 self.PlotModal = PlotModal(self.app) self.PlotModal.Show() # while there things to measure while not self.measurement_handler.is_queue_empty(): single_dataset = self.measurement_handler.single_measurement() dataset_list.append(single_dataset) total_measurements = total_measurements + 1 ts = int(time.time()) dataset_name = (str(total_measurements) + self.wafer_settings.id + str(ts)) save_data(single_dataset, dataset_name, self.data_dir) # print single_dataset.shape self.PlotModal.plot_data(single_dataset[:, 0], [x for x in single_dataset[:, 1:].T]) except PVInputError as e: self.view1.show_error_modal(str(e))
def display(self, event): """ Plot waveforms in modal """ self.PlotModal = PlotModal(self.app) waveform_list = [] settings_dict = {} try: settings_dict[ "experiment_settings"] = self.view1.get_experiment_form() experiment_settings = self._parse_experiment_settings( settings_dict) for setting in experiment_settings: waveform_list.append(-LightPulse(setting).create_waveform()) self.PlotModal.Show() self.PlotModal.plot_data(waveform_list) except PVInputError as e: self.view1.show_error_modal(str(e))