Esempio n. 1
0
 def save_as(self):
     out_file_name = browse_file(
         self.parent,
         caption='Choose a file to save fitted peaks to',
         default_dir=self.parent._core.working_dir,
         file_filter='H5 (*.h5);;HDF (*.hdf5)',
         save_file=True)
     self.save_fit_result(out_file_name)
Esempio n. 2
0
 def __retrieving_json_file_name(self, save_file=True):
     file_filter = 'JSON (*.json)'
     json_file_name = browse_file(self.parent,
                                  'Peak Range File',
                                  os.getcwd(),
                                  file_filter,
                                  file_list=False,
                                  save_file=save_file)
     return json_file_name
Esempio n. 3
0
    def browse_load_hidra(self):
        """Allow users to browse for a HiDRA project file

        Returns
        -------

        """
        # default is current working directory
        default_dir = self._controller.working_dir

        # get default output directory for the run
        try:
            run_number = self._current_runnumber()
            if run_number is not None:
                default_dir = get_default_output_dir(self._current_runnumber())
        except RuntimeError as e:
            print('While looking for {}:'.format(run_number))
            print(e)

        # Browse
        hidra_file = browse_file(self.parent,
                                 caption='Select a HIDRA project file',
                                 default_dir=default_dir,
                                 file_filter='HiDRA project (*.h5)',
                                 file_list=False,
                                 save_file=False)
        if not hidra_file:
            return

        # Load Nexus
        try:
            self._controller.load_project_file(hidra_file,
                                               load_counts=False,
                                               load_pattern=True)
        except RuntimeError as run_err:
            pop_message(
                self.parent,
                'Loading {} failed.\nTry to load diffraction only!'.format(
                    hidra_file),
                detailed_message='{}'.format(run_err),
                message_type='error')
            return

        # sub runs
        sub_runs = self._controller.get_sub_runs()

        # set sub runs to (1) Table and (2) Combo box
        self._set_sub_run_numbers(sub_runs)
        # Set to first sub run and plot
        self.ui.comboBox_sub_runs.setCurrentIndex(0)
        # Fill in self.ui.frame_subRunInfoTable
        meta_data_array = self._controller.get_sample_logs_values(
            [HidraConstants.SUB_RUNS, HidraConstants.TWO_THETA])
        self.ui.rawDataTable.add_subruns_info(meta_data_array,
                                              clear_table=True)
Esempio n. 4
0
    def browse_mask_file(self):
        """Browse masking file

        Returns
        -------

        """
        mask_file_name = browse_file(self.parent, 'Hidra Mask File',
                                     self._controller.get_default_mask_dir(),
                                     'Mantid Mask(*.xml)', False, False)
        self.ui.lineEdit_maskFile.setText(mask_file_name)
        return
Esempio n. 5
0
    def browse_nexus_path(self):
        """Browse NeXus file path from file system and write the browsed value to lineEdit_runNumber

        Returns
        -------

        """
        nexus_file_path = browse_file(
            self.parent, 'NeXus File',
            self._controller.get_default_nexus_dir(ipts_number=None),
            'NeXus(*.nxs.h5)', False, False)
        if nexus_file_path is not None:
            self.ui.lineEdit_runNumber.setText(nexus_file_path)
Esempio n. 6
0
    def browse_calibration_file(self):
        calibration_file = browse_file(
            self.parent,
            caption='Choose and set up the calibration file',
            default_dir=self._controller.get_default_calibration_dir(),
            file_filter='hdf5 (*hdf)',
            file_list=False,
            save_file=False)
        if calibration_file is None or calibration_file == '':
            # operation canceled
            return

        # set to the browser
        self.ui.lineEdit_calibrationFile.setText(calibration_file)
Esempio n. 7
0
    def browse_vanadium_file(self):
        """Browse vanadium HiDRA project file and set to line edit

        Returns
        -------

        """
        vanadium_file_name = browse_file(
            self.parent, 'HiDRA Vanadium File',
            self._controller.get_default_mask_dir(), 'HiDRA project(*.h5)',
            False, False)

        if vanadium_file_name is not None and vanadium_file_name != '':
            self.ui.lineEdit_vanRunNumber.setText(vanadium_file_name)
Esempio n. 8
0
    def browse_idf(self):
        """

        Returns
        -------

        """
        idf_name = browse_file(self.parent, 'Instrument definition file',
                               os.getcwd(), 'Text (*.txt);;XML (*.xml)', False,
                               False)
        if len(idf_name) == 0:
            return  # user cancels operation
        else:
            self.ui.lineEdit_idfName.setText(idf_name)
Esempio n. 9
0
    def browse_load_nexus(self):
        """Allow users to manually determine a NeXus file by browsing for a nexus file to convert to project file

        Returns
        -------

        """
        # default is current working directory
        default_dir = self._controller.working_dir
        try:
            run_number = self._current_runnumber()
            if run_number is not None:
                default_dir = get_ipts_dir(run_number)
                nexus_file = 'HB2B_{}.nxs.h5'.format(run_number)
                if os.path.exists(
                        os.path.join(default_dir, 'nexus', nexus_file)):
                    default_dir = os.path.join(default_dir, 'nexus')
                del nexus_file
        except RuntimeError as e:
            print('While looking for {}:'.format(run_number))
            print(e)

        # If specified information is not sufficient, browse
        nexus_file = browse_file(self.parent,
                                 caption='Select a NeXus file',
                                 default_dir=default_dir,
                                 file_filter='NeXus (*.nxs.h5)',
                                 file_list=False,
                                 save_file=False)

        # Return if it is cancelled
        if nexus_file is None:
            return

        # Load Nexus
        self._controller.load_nexus_file(nexus_file)

        # sub runs
        sub_runs = self._controller.get_sub_runs()

        # set sub runs to (1) Table and (2) Combo box
        self._set_sub_run_numbers(sub_runs)
Esempio n. 10
0
    def browse_load_plot_hdf(self):
        if self.parent._core is None:
            raise RuntimeError('Not set up yet!')

        hidra_file_name = None
        if hidra_file_name is None:
            # No default Hidra file: browse the file
            file_filter = 'HDF (*.hdf);H5 (*.h5)'
            hidra_file_name = browse_file(self.parent,
                                          'HIDRA Project File',
                                          os.getcwd(),
                                          file_filter,
                                          file_list=False,
                                          save_file=False)

            if hidra_file_name is None:
                return  # user clicked cancel

        self.parent.current_hidra_file_name = hidra_file_name
        self.load_and_plot(hidra_file_name)
Esempio n. 11
0
    def browse_load_plot_hdf(self):
        if self.parent._core is None:
            raise RuntimeError('Not set up yet!')

        # o_utility = Utilities(parent=self.parent)
        # hydra_file_name = o_utility.get_default_hdf()
        hidra_file_name = None
        if hidra_file_name is None:
            # No default Hidra file: browse the file
            file_filter = 'HDF (*.hdf);H5 (*.h5)'
            hidra_file_name = browse_file(self.parent,
                                          'HIDRA Project File',
                                          os.getcwd(),
                                          file_filter,
                                          file_list=False,
                                          save_file=False)

            if hidra_file_name is None:
                return  # user clicked cancel

        self.parent.current_hidra_file_name = hidra_file_name
        try:
            o_load = Load(parent=self.parent)
            o_load.load(project_file=hidra_file_name)

        except RuntimeError as run_err:
            pop_message(self, 'Failed to load {}'.format(hidra_file_name),
                        str(run_err), 'error')
        except KeyError as key_err:
            pop_message(self, 'Failed to load {}'.format(hidra_file_name),
                        str(key_err), 'error')

        self.parent.current_root_statusbar_message = "Working with: {} " \
                                                     "\t\t\t\t Project Name: {}" \
                                                     "".format(hidra_file_name,
                                                               self.parent._project_name)
        self.parent.ui.statusbar.showMessage(
            self.parent.current_root_statusbar_message)

        try:
            o_plot = Plot(parent=self.parent)
            o_plot.plot_diff_data(plot_model=False)
            o_plot.reset_fitting_plot()

        except RuntimeError as run_err:
            pop_message(self, 'Failed to plot {}'.format(hidra_file_name),
                        str(run_err), 'error')

        try:
            o_fit = Fit(parent=self.parent)
            o_fit.initialize_fitting_table()

            # enabled all fitting widgets and main plot
            o_gui = GuiUtilities(parent=self.parent)
            o_gui.check_if_fitting_widgets_can_be_enabled()
            o_gui.enabled_sub_runs_interation_widgets(True)
            # o_gui.enabled_fitting_widgets(True)
            o_gui.enabled_data_fit_plot(True)
            o_gui.enabled_peak_ranges_widgets(True)
            o_gui.enabled_1dplot_widgets(True)

        except RuntimeError as run_err:
            pop_message(
                self,
                'Failed to initialize widgets for {}'.format(hidra_file_name),
                str(run_err), 'error')