示例#1
0
    def onSave(self, event):
        """
        Method to handle dialogue window and saving data to file
        """

        dialog = wx.FileDialog(
            None,
            'Save measurement data and metadata',
            self.dirname,
            '',
            r'DAT and INF files (*.dat;*.inf)|*.inf;*.dat',
            wx.FD_SAVE
        )

        if dialog.ShowModal() == wx.ID_OK:
            dialog_path = dialog.GetPath()
            self.dirname = os.path.dirname(dialog_path)
            self.SaveName = os.path.splitext(os.path.basename(dialog_path))[0]

            experiment_settings = self.metadata.get_settings_as_dict()
            waveform_settings = self.light_pulse.get_settings_as_dict()
            metadata_dict = experiment_settings.copy()

            utils.save_data(self.Data.Data, self.SaveName, self.dirname)
            utils.save_metadata(
                metadata_dict,
                self.SaveName,
                self.dirname
            )

        else:
            print('Canceled save')
        dialog.Destroy()

        event.Skip()
示例#2
0
 def test_write_metadata_to_same_path(self):
     save_metadata(
         LoadSaveTest.test_metadata,
         LoadSaveTest.fname,
         LoadSaveTest.fpath
     )
     self.assertTrue(os.path.isfile(LoadSaveTest.check_inf_path))
示例#3
0
文件: multimeasure.py 项目: MK8J/ui
    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))
示例#4
0
文件: multimeasure.py 项目: MK8J/ui
    def save_settings(self, event):
        """
        Saves settings as displayed in the forms
        """
        settings = {}
        settings["temperature_settings"] = self.view1.get_temperature_form(
            allow_incomplete=True)
        settings["experiment_settings"] = self.view1.get_experiment_form(
            allow_incomplete=True)

        file_dir, file_name = self.view1.ask_user_for_filename(
            defaultDir=self.app_dir,
            message='Save your file',
            wildcard='*.*',
            style=wx.SAVE)
        if file_dir is not None:
            save_metadata(settings, file_name, file_dir)
示例#5
0
    def save_settings(self, event):
        """
        Saves settings as displayed in the forms
        """
        settings = {}
        settings["temperature_settings"] = self.view1.get_temperature_form(
            allow_incomplete=True
        )
        settings["experiment_settings"] = self.view1.get_experiment_form(
            allow_incomplete=True
        )

        file_dir, file_name = self.view1.ask_user_for_filename(
            defaultDir=self.app_dir,
            message='Save your file',
            wildcard='*.*',
            style=wx.SAVE
        )
        if file_dir is not None:
            save_metadata(settings, file_name, file_dir)
示例#6
0
 def test_write_metadata_to_same_path(self):
     save_metadata(LoadSaveTest.test_metadata, LoadSaveTest.fname,
                   LoadSaveTest.fpath)
     self.assertTrue(os.path.isfile(LoadSaveTest.check_inf_path))
示例#7
0
    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()
                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))

                for setting in settings["experiment_settings"]:
                    self.measurement_handler.add_to_queue(
                        LightPulse(setting).create_waveform(),
                        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 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([x for x in single_dataset[:,1:].T])

        except PVInputError as e:
            self.view1.show_error_modal(str(e))