コード例 #1
0
    def retrieveLambdaRequestedForThisRow(cls):
        lambda_requested = ""
        bigTable = cls.main_gui.bigTableData

        # try to retrieve from bigTable[i,0]
        data_obj = bigTable[cls.row, 0]
        if data_obj is not None:
            _active_data = data_obj.active_data
            return str(_active_data.lambda_requested)

            # try to retrieve from bigTable[i,2] -> data_lambda_requested
        config_obj = bigTable[cls.row, 2]
        if (config_obj.data_lambda_requested != -1) and (config_obj.data_lambda_requested != ""):
            return str(config_obj.data_lambda_requested)

            # try to retrieve from bigTable[i,1]
        norm_obj = bigTable[cls.row, 1]
        if norm_obj is not None:
            _active_norm = norm_obj.active_data
            return str(_active_norm.lambda_requested)

            # try to retrieve from bigTable[i,2] -> norm_lambda_requested
        if (config_obj.norm_lambda_requested != -1) and (config_obj.data_lambda_requested != ""):
            return str(config_obj.norm_lambda_requested)

            # try from data_run, if not None -> load and retrieve
        data_run = cls.main_gui.ui.reductionTable.item(cls.row, 0).text()
        if data_run != "":
            try:
                _filename = nexus_utilities.findNeXusFullPath(data_run)
                cls.list_filename.append(_filename)
                randomString = utilities.generate_random_workspace_name()
                _nxs = LoadEventNexus(Filename=_filename, OutputWorkspace=randomString, MetaDataOnly=True)
                return str(_nxs.getRun().getProperty("LambdaRequest").value[0])
            except:
                pass

                # try from norm_run, if not None -> load and retrieve
        norm_run = cls.main_gui.ui.reductionTable.item(cls.row, 6).text()
        if norm_run != "":
            try:
                _filename = nexus_utilities.findNeXusFullPath(norm_run)
                cls.list_filename.append(_filename)
                randomString = utilities.generate_random_workspace_name()
                _nxs = LoadEventNexus(Filename=_filename, OutputWorkspace=randomString, MetanormOnly=True)
                return str(_nxs.getRun().getProperty("LambdaRequest").value[0])
            except:
                pass

                # give up and return 'N/A'
        return "N/A"
コード例 #2
0
    def dataLineEditValidate(cls):
        run_sequence = cls.ui.dataLineEdit.text()
        oListRuns = RunSequenceBreaker(run_sequence)
        _list_runs = oListRuns.getFinalList()
        cls.list_runs = _list_runs
        cls.ui.dataLineEdit.setText("")

        cls.list_filename = []
        cls.list_nxs = []
        if _list_runs[0] == -1:
            return
        for _runs in _list_runs:
            try:
                _filename = nexus_utilities.findNeXusFullPath(_runs)
            except:
                pass
            else:
                cls.list_filename.append(_filename)
                randomString = utilities.generate_random_workspace_name()
                _nxs = LoadEventNexus(Filename=_filename, OutputWorkspace=randomString, MetaDataOnly=True)
                cls.list_nxs.append(_nxs)
                cls.str_list_runs.append(str(_runs))

        cls.updateDataTable()
        cls.updateInsertValidRunsButton()
コード例 #3
0
ファイル: open_run_number.py プロジェクト: JeanBilheux/RefRed
    def __init__(cls, self, cell=None, replaced_data=False):
        cls.self = self
        cls.replaced_data = replaced_data

        run_found = []
        run_not_found = []
        cls.run_number_found = []

        if cell is None:
            run_number_field = self.ui.numberSearchEntry.text()
        else:
            run_number_field = cell.text()
        run_number_field = run_number_field.strip()
        if run_number_field == "":
            return

            # list of runs
        list_run_number = filter(None, run_number_field.split(","))
        for run_number in list_run_number:
            try:
                full_file_name = nexus_utilities.findNeXusFullPath(int(run_number))
                run_found.append(full_file_name)
                cls.run_number_found.append(run_number)
            except:
                run_not_found.append(run_number)

        if run_not_found != []:
            info("Could not locate run(s) %s !" % (",".join(run_not_found)))

        if run_found != []:
            cls.open_file(run_found)

        self.ui.numberSearchEntry.setText("")
コード例 #4
0
    def populate_data_object(self, main_gui, oConfig, type):
        '''
        will retrieve all the info from the oConfig table and will populate the oData object
        type is either 'data' or 'norm'
        '''
        
        is_data = True
        
        # check first if we have a full file name already
        if oConfig is not None:
            if type == 'data':
                full_file_name = oConfig.data_full_file_name
                if full_file_name == u'' or full_file_name == [''] :
                    _run_number = oConfig.data_sets
#                    full_file_name = FileFinder.findRuns("REF_L%d" %int(_run_number))[0]
                    full_file_name = nexus_utilities.findNeXusFullPath(int(_run_number))                    
            else:
                is_data = False
                if oConfig.norm_flag:
                    full_file_name = oConfig.norm_full_file_name
                    if full_file_name == u'' or full_file_name == ['']:
                        _run_number = oConfig.norm_sets
#                        full_file_name = FileFinder.findRuns("REF_L%d" %int(_run_number))[0]
                        full_file_name = nexus_utilities.findNeXusFullPath(int(_run_number))                    

            event_split_bins = None
            event_split_index = 0
            bin_type = 0
            
            oData = NXSData(full_file_name,
                            bin_type = bin_type,
                            bins = main_gui.ui.eventTofBins.value(),
                            callback = None,
                            event_split_bins = event_split_bins,
                            event_split_index = event_split_index,
                            metadata_config_object = oConfig,
                            is_data = is_data)
        
            return oData

        return None
コード例 #5
0
ファイル: findnexus.py プロジェクト: JeanBilheux/RefRed
 def __init__(self, runs_string = None):
     if list_runs == None:
         return ''
     
     oListRuns = RunSequenceBreaker(list_runs)
     list_run_number = oListRuns.getFinalList()
     
     for run_number in list_run_number:
         try:
             full_file_name = nexus_utilities.findNeXusFullPath(int(run_number))
             self.nexus_found.append(full_file_name)
         except:
             run_number_found.append(run_number)
コード例 #6
0
    def normLineEditValidate(cls):
        _run = cls.ui.normLineEdit.text()
        cls.ui.normLineEdit.setText("")
        if _run == "":
            return
        cls.list_runs = [_run]
        try:
            _filename = nexus_utilities.findNeXusFullPath(_run)
        except:
            pass
        else:
            cls.list_filename.append(_filename)
            randomString = utilities.generate_random_workspace_name()
            _nxs = LoadEventNexus(Filename=_filename, OutputWorkspace=randomString, MetaDataOnly=True)
            cls.list_nxs = [_nxs]
            cls.str_list_runs.append(str(_run))

        cls.updateNormTable()
        cls.updateInsertValidRunsButton()
コード例 #7
0
def findFullFileName(run_number):
    try:
        full_file_name = nexus_utilities.findNeXusFullPath(run_number)
    except:
        full_file_name = ''
    return full_file_name
コード例 #8
0
    def __init__(cls, parent=None, filename=''):
        self = parent
        
        try:
            dom = minidom.parse(filename)
        except:
            info('No configuration file loaded!')
            return

        RefLData = dom.getElementsByTagName('RefLData')
        nbrRowBigTable = len(RefLData)

        # reset bigTable
        self.ui.reductionTable.clearContents()

        _first_file_name = ''

        # load the first data and display it
        self.bigTableData = empty((20,3), dtype=object)

        # start parsing xml file
        _row = 0
        for node in RefLData:
            self.ui.reductionTable.insertRow(_row)

            # incident angle
            try:
                _incident_angle = self.getNodeValue(node,'incident_angle')
            except:
                _incident_angle = 'N/A'
            self.addItemToBigTable(_incident_angle, _row, 1)

            # lambda range
            try:
                _from_l = self.getNodeValue(node, 'from_lambda_range')
            except:
                _from_l = 'N/A'
            self.addItemToBigTable(_from_l, _row, 2)

            try:
                _to_l = self.getNodeValue(node, 'to_lambda_range')
            except:
                _to_l = 'N/A'
            self.addItemToBigTable(_to_l, _row, 3)

            # q range
            try:
                _from_q = self.getNodeValue(node,'from_q_range')
            except:
                _from_q = 'N/A'
            self.addItemToBigTable(_from_q, _row, 4)

            try:
                _to_q = self.getNodeValue(node,'to_q_range')
            except:
                _to_q = 'N/A'
            self.addItemToBigTable(_to_q, _row, 5)

            # only for first row
            if _row == 0:
                _first_file_name = self.getNodeValue(node, 'data_full_file_name')
                if _first_file_name == '': # no full_file_name defined
		    _data_sets = self.getNodeValue(node, 'data_sets')
                    _first_file_name = nexus_utilities.findNeXusFullPath(int(_data_sets))         #FIXME           
                else:
                    _first_file_name = _first_file_name.split(',')

                # load general settings for first row only
                scaling_factor_file = self.getNodeValue(node, 'scaling_factor_file')
                self.ui.scalingFactorFile.setText(scaling_factor_file)
                scaling_factor_flag = self.getNodeValue(node, 'scaling_factor_flag')
                self.ui.scalingFactorFlag.setChecked(strtobool(scaling_factor_flag))
                self.useScalingFactorConfigCheckBox(strtobool(scaling_factor_flag))
                slits_width_flag = self.getNodeValue(node, 'slits_width_flag')
                self.ui.scalingFactorSlitsWidthFlag.setChecked(strtobool(slits_width_flag))
                incident_medium_list = self.getNodeValue(node, 'incident_medium_list')
                im_list = incident_medium_list.split(',')
                self.ui.selectIncidentMediumList.clear()
                self.ui.selectIncidentMediumList.addItems(im_list)
                incident_medium_index_selected = self.getNodeValue(node, 'incident_medium_index_selected')
                self.ui.selectIncidentMediumList.setCurrentIndex(int(incident_medium_index_selected))

                try:
                    useAutoPeakBackSelectionFlag = strtobool(self.getNodeValue(node,'auto_peak_back_selection_flag'))
                    autoBackSelectionWidth = int(self.getNodeValue(node, 'auto_peak_back_selection_width'))
                    useAutoTofRangeFinderFlag = strtobool(self.getNodeValue(node,'auto_tof_range_flag'))
                except:
                    useAutoPeakBackSelectionFlag = True
                    autoBackSelectionWidth = 4
                    useAutoTofRangeFinderFlag = True
                self.ui.actionAutomaticPeakFinder.setChecked(useAutoPeakBackSelectionFlag)
                self.useAutoPeakBackSelectionCheckBox(useAutoPeakBackSelectionFlag)
                self.ui.autoBackSelectionWidth.setValue(autoBackSelectionWidth)
                self.ui.autoTofFlag.setChecked(useAutoTofRangeFinderFlag)

                _exportStitchingAsciiSettings = self.exportStitchingAsciiSettings
                fourth_column_flag = self.getNodeValue(node, 'fourth_column_flag')
                _exportStitchingAsciiSettings.fourth_column_flag = fourth_column_flag
                fourth_column_dq0 = self.getNodeValue(node, 'fourth_column_dq0')
                _exportStitchingAsciiSettings.fourth_column_dq0 = fourth_column_dq0
                fourth_column_dq_over_q = self.getNodeValue(node, 'fourth_column_dq_over_q')
                _exportStitchingAsciiSettings.fourth_column_dq_over_q = fourth_column_dq_over_q
                self.exportStitchingAsciiSettings = _exportStitchingAsciiSettings

                _useGeometryCorrection = self.getNodeValue(node,'geometry_correction_switch')
                self.useGeometryCorrectionCheckBox(strtobool(_useGeometryCorrection))
                self.ui.geometryCorrectionFlag.setChecked(strtobool(_useGeometryCorrection))
                _angle_offset = self.getNodeValue(node,'angle_offset')
                self.ui.angleOffsetValue.setText(_angle_offset)
                _angle_offset_error = self.getNodeValue(node,'angle_offset_error')
                self.ui.angleOffsetError.setText(_angle_offset_error)

            try:
                _data_full_file_name = self.getNodeValue(node, 'data_full_file_name')
                _data_full_file_name = _data_full_file_name.split(',')
            except:
                _data_full_file_name = ''

            try:
                _norm_full_file_name = self.getNodeValue(node, 'norm_full_file_name')
                _norm_full_file_name = _norm_full_file_name.split(',')
            except:
                _norm_full_file_name = ''

            _metadataObject = self.getMetadataObject(node)
            _metadataObject.data_full_file_name = _data_full_file_name
            _metadataObject.norm_full_file_name = _norm_full_file_name
            self.bigTableData[_row,2] = _metadataObject

            # data 
            _data_sets = self.getNodeValue(node,'data_sets')
	    _isOk = self.isPeakBackSelectionOkFromConfig(_metadataObject, type='data')
            self.addItemToBigTable(_data_sets, _row, 0, isCheckOk=True, isOk=_isOk)

            # norm
            _norm_sets = self.getNodeValue(node,'norm_dataset')
	    _isOk = self.isPeakBackSelectionOkFromConfig(_metadataObject, type='norm')
            self.addItemToBigTable(_norm_sets, _row, 6, isCheckOk=True, isOk=_isOk)

            _row += 1
	    QtGui.QApplication.processEvents()
	    
        # select first data file
        self.ui.dataNormTabWidget.setCurrentIndex(0)
        self.ui.reductionTable.setRangeSelected(QtGui.QTableWidgetSelectionRange(0,0,0,0),True)                                                                                   	

        # load first data file
        event_split_bins = None
        event_split_index = 0
        bin_type = 0
        _configDataset = self.bigTableData[0,2]
        data = NXSData(_first_file_name, 
                       bin_type = bin_type,
                       bins = self.ui.eventTofBins.value(),
                       callback = self.updateEventReadout,
                       event_split_bins = event_split_bins,
                       event_split_index = event_split_index,
                       metadata_config_object = _configDataset,
                       angle_offset = self.ui.angleOffsetValue.text())

        # make sure that incident_angle, q_range and/or lambda_range have values
        item = self.ui.reductionTable.item(0,1)
        if item is None:
            _item = QtGui.QTableWidgetItem(str(data.active_data.incident_angle))
            _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
            self.ui.reductionTable.setItem(0, 1, _item)
        else:    
            incident_angle = item.text()
            if incident_angle == 'N/A' or incident_angle == '':
                _item = QtGui.QTableWidgetItem(str(data.active_data.incident_angle))
                _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
                self.ui.reductionTable.setItem(0, 1, _item)

        item = self.ui.reductionTable.item(0,4)
        if item is None:
            [_from_q, _to_q] = data.active_data.q_range
            _item = QtGui.QTableWidgetItem(str(_from_q))
            _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
            self.ui.reductionTable.setItem(0,4, _item)
            _item = QtGui.QTableWidgetItem(str(_to_q))
            _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
            self.ui.reductionTable.setItem(0,5, _item)
        else:
            from_q = item.text()
            if from_q == '':
                [_from_q, _to_q] = data.active_data.q_range
                _item = QtGui.QTableWidgetItem(str(_from_q))
                _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
                self.ui.reductionTable.setItem(0,4, _item)
                _item = QtGui.QTableWidgetItem(str(_to_q))
                _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
                self.ui.reductionTable.setItem(0,5, _item)

        item = self.ui.reductionTable.item(0,2)
        if item is None:
            [_from_l, _to_l] = data.active_data.lambda_range
            _item = QtGui.QTableWidgetItem(str(_from_l))
            _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
            self.ui.reductionTable.setItem(0,2, _item)
            _item = QtGui.QTableWidgetItem(str(_to_l))
            _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
            self.ui.reductionTable.setItem(0,3, _item)
        else:
            from_lambda = item.text()
            if from_lambda == '':
                [_from_l, _to_l] = data.active_data.lambda_range
                _item = QtGui.QTableWidgetItem(str(_from_l))
                _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
                self.ui.reductionTable.setItem(0,2, _item)
                _item = QtGui.QTableWidgetItem(str(_to_l))
                _item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)      
                self.ui.reductionTable.setItem(0,3, _item)

        r=0
        c=0
        self.bigTableData[r,c] = data
        self._prev_row_selected = r
        self._prev_col_selected = c

        self._fileOpenDoneREFL(data=data, 
                               filename=_first_file_name, 
                               do_plot=True,
                               update_table=False)