def generateQPlaneScript(self): self.stateMachine.run() if not self.stateMachine.currentState.name in ['Raw', 'Converted']: _GUItools.dialog( text= 'It is not possible to generate a script without any data loaded.') return False folder = self.getCurrentDirectory() saveFile = QtWidgets.QFileDialog.getSaveFileName(self, 'Save File', folder, "Python (*.py)")[0] if len(saveFile) == 0: return False if path.splitext(saveFile)[1] != '.py': saveFile = path.splitext(saveFile)[0] + '.py' ds = self.DataSetModel.getCurrentDataSet() dataSetName = ds.name dataFiles = [ df.original_file.fileLocation if hasattr(df, 'original_file') else df.fileLocation for df in ds ] binning = self.ui.DataSet_binning_comboBox.currentText() EMin = self.ui.QPlane_EMin_lineEdit.text() EMax = self.ui.QPlane_EMax_lineEdit.text() xBinTolerance = self.ui.QPlane_xBinTolerance_lineEdit.text() yBinTolerance = self.ui.QPlane_yBinTolerance_lineEdit.text() CAxisMin = self.ui.QPlane_CAxisMin_lineEdit.text() CAxisMax = self.ui.QPlane_CAxisMax_lineEdit.text() log = self.ui.QPlane_LogScale_checkBox.isChecked() grid = self.ui.QPlane_Grid_checkBox.isChecked() title = self.ui.QPlane_SetTitle_lineEdit.text() RLU = self.ui.QPlane_SelectUnits_RLU_radioButton.isChecked() generatePlotQPlaneScript(saveFile, dataSetName, dataFiles, binning=binning, xBinTolerance=xBinTolerance, yBinTolerance=yBinTolerance, EMin=EMin, EMax=EMax, RLU=RLU, CAxisMin=CAxisMin, CAxisMax=CAxisMax, log=log, grid=grid, title=title) return True
def generateCut1DScript(self): self.stateMachine.run() if not self.stateMachine.currentState.name in ['Raw', 'Converted']: _GUItools.dialog( text= 'It is not possible to generate a script without any data loaded.') return False folder = self.getCurrentDirectory() saveFile = QtWidgets.QFileDialog.getSaveFileName(self, 'Save File', folder, "Python (*.py)")[0] if len(saveFile) == 0: return False if path.splitext(saveFile)[1] != '.py': saveFile = path.splitext(saveFile)[0] + '.py' ds = self.DataSetModel.getCurrentDataSet() dataSetName = ds.name dataFiles = [ df.original_file.fileLocation if hasattr(df, 'original_file') else df.fileLocation for df in ds ] binning = self.ui.DataSet_binning_comboBox.currentText() HStart = self.ui.Cut1D_HStart_lineEdit.text() KStart = self.ui.Cut1D_KStart_lineEdit.text() LStart = self.ui.Cut1D_LStart_lineEdit.text() HEnd = self.ui.Cut1D_HEnd_lineEdit.text() KEnd = self.ui.Cut1D_KEnd_lineEdit.text() LEnd = self.ui.Cut1D_LEnd_lineEdit.text() width = self.ui.Cut1D_Width_lineEdit.text() minPixel = self.ui.Cut1D_MinPixel_lineEdit.text() EMin = self.ui.Cut1D_EMin_lineEdit.text() EMax = self.ui.Cut1D_EMax_lineEdit.text() title = self.ui.Cut1D_SetTitle_lineEdit.text() generatePlotCut1DScript(saveFile=saveFile, dataSetName=dataSetName, dataFiles=dataFiles, binning=binning, HStart=HStart, KStart=KStart, LStart=LStart, HEnd=HEnd, KEnd=KEnd, LEnd=LEnd, width=width, minPixel=minPixel, EMin=EMin, EMax=EMax, title=title) return True
def View3D_plot_button_function(self): if not self.stateMachine.requireStateByName('Converted'): return False # Check if we already have data, otherwise convert current data. ds = self.DataSetModel.getCurrentDataSet() if len(ds.convertedFiles) == 0: self.DataSet_convertData_button_function() # Extract all the information from the GUI QXBin = float(self.ui.View3D_QXBin_lineEdit.text()) QYBin = float(self.ui.View3D_QYBin_lineEdit.text()) EBin = float(self.ui.View3D_EBin_lineEdit.text()) if self.ui.View3D_SelectUnits_RLU_radioButton.isChecked(): rlu = True if self.ui.View3D_SelectUnits_AA_radioButton.isChecked(): rlu = False if self.ui.View3D_Grid_checkBox.isChecked(): grid = 9 else: grid = False if self.ui.View3D_LogScale_checkBox.isChecked(): log = True else: log = False try: self.V = ds.View3D(QXBin, QYBin, EBin, grid=grid, rlu=rlu, log=log) self.windows.append(self.V.ax.get_figure()) # Select the correct view if self.ui.View3D_SelectView_QxE_radioButton.isChecked(): self.View3D_SelectView_QyE_radioButton_function() if self.ui.View3D_SelectView_QyE_radioButton.isChecked(): self.View3D_SelectView_QxE_radioButton_function() if self.ui.View3D_SelectView_QxQy_radioButton.isChecked(): self.View3D_SelectView_QxQy_radioButton_function() self.View3D_setCAxis_button_function() self.View3D_SetTitle_button_function() self.V.setPlane(1) self.V.setPlane(0) return True except: _GUItools.dialog( text= 'View3D plot could not be made. Check the input parameters and try again!' ) return False
def checker(q1, q2, width, minPixel, EMax, EMin, cutQ): """Checker for 1DCuts. Returns False is an error is detected.""" success = True if EMax < EMin: _GUItools.dialog( text='1D Cut could not be made. EMax ({}) < EMin ({})!'.format( EMax, EMin)) success = False if width < 0: _GUItools.dialog( text='1D Cut could not be made. Q width ({}) is negative!'.format( width)) success = False if minPixel < 0: _GUItools.dialog( text='1D Cut could not be made. Min Pixel ({}) is negative!'. format(minPixel)) success = False if not cutQ: # Cut along E if not np.all(np.isclose(q1, q2)): _GUItools.dialog( text= '1D Cut could not be made. Start ({}) is not equal to End ({}) is negative!' .format(q1, q2)) success = False return success
def QELine_plot_button_function(self): # First check if we have data, otherwise convert data if not self.stateMachine.requireStateByName('Converted'): return False ds = self.DataSetModel.getCurrentDataSet() if len(ds.convertedFiles) == 0: self.DataSet_convertData_button_function() # Get the Q points HStart = float(self.ui.QELine_HStart_lineEdit.text()) KStart = float(self.ui.QELine_KStart_lineEdit.text()) LStart = float(self.ui.QELine_LStart_lineEdit.text()) HEnd = float(self.ui.QELine_HEnd_lineEdit.text()) KEnd = float(self.ui.QELine_KEnd_lineEdit.text()) LEnd = float(self.ui.QELine_LEnd_lineEdit.text()) if self.ui.QELine_SelectUnits_RLU_radioButton.isChecked(): rlu = True Q1 = np.array([HStart, KStart, LStart]) Q2 = np.array([HEnd, KEnd, LEnd]) else: rlu = False Q1 = np.array([HStart, KStart]) Q2 = np.array([HEnd, KEnd]) # Collect them into one array QPoints = np.array([Q1, Q2]) # Define orthogonal width and minimum pixel size along Q-cut width = float(self.ui.QELine_Width_lineEdit.text()) minPixel = float(self.ui.QELine_MinPixel_lineEdit.text()) # Define energy bins EMin = float(self.ui.QELine_EMin_lineEdit.text()) EMax = float(self.ui.QELine_EMax_lineEdit.text()) NPoints = int(self.ui.QELine_NPoints_lineEdit.text()) EnergyBins = np.linspace(EMin, EMax, NPoints) # Check various plot settings if self.ui.QELine_LogScale_checkBox.isChecked(): log = True else: log = False if self.ui.QELine_ConstantBins_checkBox.isChecked(): constantBins = True else: constantBins = False try: # Make plot ax,DataLists,Bins,BinCenters,Offsets = \ ds.plotCutQELine(QPoints=QPoints, width=width, \ minPixel=minPixel, EnergyBins=EnergyBins,\ rlu=rlu,log=log,constantBins=constantBins) # Make some final changes to the plot self.QELine = ax fig = self.QELine.get_figure() fig.set_size_inches(8, 6) if self.ui.QELine_Grid_checkBox.isChecked(): ax.grid(True) else: ax.grid(False) self.QELine_setCAxis_button_function() self.windows.append(self.QELine.get_figure()) self.QELine_SetTitle_button_function() return True except: _GUItools.dialog( text= 'QELine cut could not be made. Check the limits for the cut and try again!' ) return False
def generateQELineScript(self): self.stateMachine.run() if not self.stateMachine.currentState.name in ['Raw', 'Converted']: _GUItools.dialog( text= 'It is not possible to generate a script without any data loaded.') return False folder = self.getCurrentDirectory() saveFile = QtWidgets.QFileDialog.getSaveFileName(self, 'Save File', folder, "Python (*.py)")[0] if len(saveFile) == 0: return False if path.splitext(saveFile)[1] != '.py': saveFile = path.splitext(saveFile)[0] + '.py' ds = self.DataSetModel.getCurrentDataSet() dataSetName = ds.name dataFiles = [ df.original_file.fileLocation if hasattr(df, 'original_file') else df.fileLocation for df in ds ] binning = self.ui.DataSet_binning_comboBox.currentText() HStart = self.ui.QELine_HStart_lineEdit.text() KStart = self.ui.QELine_KStart_lineEdit.text() LStart = self.ui.QELine_LStart_lineEdit.text() HEnd = self.ui.QELine_HEnd_lineEdit.text() KEnd = self.ui.QELine_KEnd_lineEdit.text() LEnd = self.ui.QELine_LEnd_lineEdit.text() width = self.ui.QELine_Width_lineEdit.text() minPixel = self.ui.QELine_MinPixel_lineEdit.text() EMin = self.ui.QELine_EMin_lineEdit.text() EMax = self.ui.QELine_EMax_lineEdit.text() NPoints = self.ui.QELine_NPoints_lineEdit.text() CAxisMin = self.ui.QELine_CAxisMin_lineEdit.text() CAxisMax = self.ui.QELine_CAxisMax_lineEdit.text() log = self.ui.QELine_LogScale_checkBox.isChecked() grid = self.ui.QELine_Grid_checkBox.isChecked() title = self.ui.QELine_SetTitle_lineEdit.text() RLU = self.ui.QELine_SelectUnits_RLU_radioButton.isChecked() generatePlotQELineScript(saveFile=saveFile, dataSetName=dataSetName, dataFiles=dataFiles, binning=binning, HStart=HStart, KStart=KStart, LStart=LStart, HEnd=HEnd, KEnd=KEnd, LEnd=LEnd, width=width, minPixel=minPixel, EMin=EMin, EMax=EMax, NPoints=NPoints, RLU=RLU, CAxisMin=CAxisMin, CAxisMax=CAxisMax, log=log, grid=grid, title=title) return True
def generate3DScript(self): # Check if data has been loaded. Abort if not self.stateMachine.run() if not self.stateMachine.currentState.name in ['Raw', 'Converted']: _GUItools.dialog( text= 'It is not possible to generate a script without any data loaded.') return False # Save the created script folder = self.getCurrentDirectory() saveFile = QtWidgets.QFileDialog.getSaveFileName(self, 'Save File', folder, "Python (*.py)")[0] if len(saveFile) == 0: return False if path.splitext(saveFile)[1] != '.py': saveFile = path.splitext(saveFile)[0] + '.py' # Start loading information from the GUI ds = self.DataSetModel.getCurrentDataSet() dataSetName = ds.name dataFiles = [ df.original_file.fileLocation if hasattr(df, 'original_file') else df.fileLocation for df in ds ] binning = self.ui.DataSet_binning_comboBox.currentText() qx = self.ui.View3D_QXBin_lineEdit.text() qy = self.ui.View3D_QYBin_lineEdit.text() E = self.ui.View3D_EBin_lineEdit.text() CAxisMin = self.ui.View3D_CAxisMin_lineEdit.text() CAxisMax = self.ui.View3D_CAxisMax_lineEdit.text() log = self.ui.View3D_LogScale_checkBox.isChecked() grid = self.ui.View3D_Grid_checkBox.isChecked() title = self.ui.View3D_SetTitle_lineEdit.text() RLU = self.ui.View3D_SelectUnits_RLU_radioButton.isChecked() radioState = [ self.ui.View3D_SelectView_QxE_radioButton.isChecked(), self.ui.View3D_SelectView_QyE_radioButton.isChecked(), self.ui.View3D_SelectView_QxQy_radioButton.isChecked() ] selectView = np.arange(3)[radioState] selectView = selectView[0] # And generate the script generateViewer3DScript(saveFile=saveFile, dataFiles=dataFiles, dataSetName=dataSetName, binning=binning, qx=qx, qy=qy, E=E, RLU=RLU, CAxisMin=CAxisMin, CAxisMax=CAxisMax, log=log, grid=grid, title=title, selectView=selectView) return True