コード例 #1
0
 def __init__(self, parent=None):
     super(ArpesBuildController, self).__init__()
     self.view = Ui_ArpesBuildWindow()
     self.view.setupUi(self)
     self.configure_views()
コード例 #2
0
	def __init__(self, parent=None):
		super(ArpesBuildController, self ).__init__()
		self.view = Ui_ArpesBuildWindow()
		self.view.setupUi(self)
		self.configure_views()		
コード例 #3
0
class ArpesBuildController(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(ArpesBuildController, self).__init__()
        self.view = Ui_ArpesBuildWindow()
        self.view.setupUi(self)
        self.configure_views()

    def configure_views(self):
        # the solvent data ...
        self.header = CONST_TALBEHEADERS
        # use numbers for numeric data to sort properly
        self.entryList = []

        # add the model to the view
        self.table_model = TableOfEntriesModel(self, self.entryList,
                                               self.header)
        self.view.tableOfEntries.setModel(self.table_model)

        # set up selection model for tableview model
        self.selection = self.view.tableOfEntries.selectionModel()
        self.selection.selectionChanged.connect(self.handleSelectionChanged)

        # auto column dropdown chooser
        for i in range(0, len(CONST_AUTOCOLUMNALT)):
            self.view.autoColumnChooser.addItem(CONST_AUTOCOLUMNALT[i])
        # self.view.autoColumnChooser.currentIndexChanged[int].connect(self.on_autoColumnChooserChanged)
        self.view.autoColumnInsertBtn.clicked.connect(self.on_autoColumnInsert)

        self.view.loadFilesBtn.clicked.connect(self.on_loadFiles)
        self.view.exportFermiBtn.clicked.connect(self.on_exportFermiSurface)

        ## Matplotlib widget
        # Do this first to be ready with default values
        self.DataPlot = MatplotlibWidget(self.view)
        # create a layout inside the blank widget and add the matplotlib widget
        layout = QtGui.QVBoxLayout(self.view.plotWidget)
        layout.addWidget(self.DataPlot)

    def handleSelectionChanged(self, selected, deselected):
        if len(selected.indexes()) == 0:
            ## deselected
            return

        index = selected.indexes()[0]
        if index.column() == 0:

            loadeddata = nx.NXroot(
                (self.table_model.entries[index.row()]).nxEntry)

            self.cData = ArpesData(loadeddata)

            self.DataPlot.plot2DData(self.cData.data, self.cData.axis1,
                                     self.cData.axis2, "", "",
                                     self.cData.title)

    def on_loadFiles(self):
        files = QtGui.QFileDialog.getOpenFileNames(
            self, 'Select one or more files to open', DATA_ROOT_FOLDER,
            'Spectra (*.sp2 *.nxs)')
        self.activateWindow()

        self.importFilesThread = QtCore.QThread()  # no parent!
        self.filesWorker = ImportFilesWorker(files)
        self.filesWorker.moveToThread(self.importFilesThread)

        self.filesWorker.progress.connect(self.on_fileImported)
        self.filesWorker.finished.connect(self.on_filesWorkerDone)
        self.filesWorker.finished.connect(self.importFilesThread.quit)

        self.importFilesThread.start()

        QtCore.QMetaObject.invokeMethod(self.filesWorker, 'processFiles',
                                        QtCore.Qt.QueuedConnection)

    def on_exportFermiSurface(self):
        listOfEntries = self.table_model.listOfEntries()
        if len(listOfEntries) > 0:
            filename = QtGui.QFileDialog.getSaveFileName(self,
                                                         "Save file",
                                                         DATA_ROOT_FOLDER,
                                                         selectedFilter='nxs')
            if len(filename) > 0:
                fermiSurfaceEntry = Arpes3DSpectrumConverter.listOfEntriesToNx(
                    listOfEntries)
                if type(fermiSurfaceEntry) == tuple:
                    QtGui.QMessageBox.critical(
                        self, "Error", "Fermisurface could not be created.\n" +
                        fermiSurfaceEntry[1])
                    return

                root = nx.NXroot(fermiSurfaceEntry.nxEntry)
                ext = os.path.splitext(str(filename))[1]
                if ext:
                    filename = str(filename.replace(ext, ".nxs"))
                else:
                    filename = str(filename) + ".nxs"
                root.save(filename=filename)

                print root.tree
            else:
                print "No filename"

        # Result is a touple with (progress in %, nxEntry of processed specturm)
    def on_fileImported(self, result):
        loadedDataResult = result[1]
        if loadedDataResult[0]:
            loadedData = loadedDataResult[2]
            for entry in loadedData.root.NXentry:
                self.table_model.setData(QtCore.QModelIndex(),
                                         TableRowItem(nxEntry=entry, wf=0))
            print "File imported, " + str(result[0] * 100) + "% finished"
        else:
            print "Error: Something went wrong loading the data, file not imported"

    def on_filesWorkerDone(self):
        self.view.tableOfEntries.resizeColumnsToContents()
        print "Import Done!"

    def on_autoColumnInsert(self):
        try:
            indexOfColumn = CONST_TALBEHEADERS.index(CONST_AUTOCOLUMNALT[
                self.view.autoColumnChooser.currentIndex()])
            initialValue = float(self.view.autoColumnInitialTxt.text())
            stepValue = float(self.view.autoColumnStepTxt.text())

            totalRows = self.table_model.rowCount()
            for row in range(0, totalRows):
                self.table_model.setData(
                    self.table_model.index(row, indexOfColumn),
                    initialValue + row * stepValue)
        except ValueError:
            print "Column not valid"
コード例 #4
0
class ArpesBuildController(QtGui.QMainWindow):
	
	def __init__(self, parent=None):
		super(ArpesBuildController, self ).__init__()
		self.view = Ui_ArpesBuildWindow()
		self.view.setupUi(self)
		self.configure_views()		

	def configure_views(self):  
		# the solvent data ...
		self.header = CONST_TALBEHEADERS
		# use numbers for numeric data to sort properly
		self.entryList = []

		# add the model to the view
		self.table_model = TableOfEntriesModel(self, self.entryList, self.header)
		self.view.tableOfEntries.setModel(self.table_model)

		# set up selection model for tableview model
		self.selection = self.view.tableOfEntries.selectionModel()
		self.selection.selectionChanged.connect(self.handleSelectionChanged)
		
		# auto column dropdown chooser
		for i in range(0,len(CONST_AUTOCOLUMNALT)):
			self.view.autoColumnChooser.addItem(CONST_AUTOCOLUMNALT[i])
		# self.view.autoColumnChooser.currentIndexChanged[int].connect(self.on_autoColumnChooserChanged)
		self.view.autoColumnInsertBtn.clicked.connect(self.on_autoColumnInsert)

		self.view.loadFilesBtn.clicked.connect(self.on_loadFiles)    
		self.view.exportFermiBtn.clicked.connect(self.on_exportFermiSurface)     

		## Matplotlib widget
		# Do this first to be ready with default values
		self.DataPlot = MatplotlibWidget(self.view)
		# create a layout inside the blank widget and add the matplotlib widget        
		layout = QtGui.QVBoxLayout(self.view.plotWidget)        
		layout.addWidget(self.DataPlot)    

	def handleSelectionChanged(self, selected, deselected):
		if len(selected.indexes()) == 0:
			## deselected
			return

		index = selected.indexes()[0]
		if index.column() == 0:

			loadeddata = nx.NXroot((self.table_model.entries[index.row()]).nxEntry)
	
			self.cData = ArpesData(loadeddata)

			self.DataPlot.plot2DData(self.cData.data, 
				self.cData.axis1, 
				self.cData.axis2, 
				"", 
				"",
				self.cData.title)

	def on_loadFiles(self):
		files=QtGui.QFileDialog.getOpenFileNames(self,
		                'Select one or more files to open',
		                '/Users/johanadell/Box Sync/Dev/ARAN/src/data',
		                'Spectra (*.sp2 *.nxs)')

		self.importFilesThread = QtCore.QThread()  # no parent!
		self.filesWorker = ImportFilesWorker(files)
		self.filesWorker.moveToThread(self.importFilesThread)

		self.filesWorker.progress.connect(self.on_fileImported)
		self.filesWorker.finished.connect(self.on_filesWorkerDone)	
		self.filesWorker.finished.connect(self.importFilesThread.quit)
					
		self.importFilesThread.start()
		
		QtCore.QMetaObject.invokeMethod(self.filesWorker, 'processFiles', QtCore.Qt.QueuedConnection)

	def on_exportFermiSurface(self):
		listOfEntries = self.table_model.listOfEntries()
		if len(listOfEntries) > 0:
			filename = QtGui.QFileDialog.getSaveFileName(self, "Save file", "", ".nxs")
			if len(filename[0]) > 0:
				fermiSurfaceEntry = Arpes3DSpectrumConverter.listOfEntriesToNx(listOfEntries)
				root = nx.NXroot(fermiSurfaceEntry.nxEntry)
				root.save(filename[0]+filename[1])

				print root.tree
			else:
				print "No filename"



		# Result is a touple with (progress in %, nxEntry of processed specturm)
	def on_fileImported(self,result):	
		loadedData = result[1]
		for entry in loadedData.root.NXentry:
			self.table_model.setData(QtCore.QModelIndex(),TableRowItem(nxEntry=entry,wf=0))
		print "File imported, "+str(result[0]*100)+"% finished"

	def on_filesWorkerDone(self):
		self.view.tableOfEntries.resizeColumnsToContents()
		print "Import Done!"

	def on_autoColumnInsert(self):
		try:
			indexOfColumn =  CONST_TALBEHEADERS.index(CONST_AUTOCOLUMNALT[self.view.autoColumnChooser.currentIndex()])
			initialValue = float(self.view.autoColumnInitialTxt.text())
			stepValue = float(self.view.autoColumnStepTxt.text())

			totalRows = self.table_model.rowCount()
			for row in range(0,totalRows):
				self.table_model.setData(self.table_model.index(row,indexOfColumn),initialValue+row*stepValue)
		except ValueError:
	 		print "Column not valid"