コード例 #1
0
    def _getFileList(self, fileTypeList, message=None, getfilter=None):
        if message is None:
            message = "Please select a file"
        if getfilter is None:
            getfilter = False
        wdir = PyMcaDirs.inputDir
        filterused = None
        if getfilter:
            filelist, filterused = PyMcaFileDialogs.getFileList(self.parent,
                            filetypelist=fileTypeList,
                            mode="OPEN",
                            message=message,
                            currentdir=wdir,
                            getfilter=True,
                            single=False,
                            native=True)
        else:
            filelist = PyMcaFileDialogs.getFileList(self.parent,
                            filetypelist=fileTypeList,
                            mode="OPEN",
                            message=message,
                            currentdir=wdir,
                            getfilter=False,
                            single=False,
                            native=True)
        if not(len(filelist)):
            return []
        PyMcaDirs.inputDir = os.path.dirname(filelist[0])
        if PyMcaDirs.outputDir is None:
            PyMcaDirs.outputDir = os.path.dirname(filelist[0])

        if getfilter:
            return filelist, filterused
        else:
            return filelist
コード例 #2
0
ファイル: SimpleFitBatchGui.py プロジェクト: dnaudet/pymca
 def browseFitConfiguration(self):
     if self._inputDir is None:
         self._inputDir = PyMcaDirs.inputDir
     elif os.path.exists(self._inputDir):
         PyMcaDirs.inputDir = self._inputDir
     filetypes  = ["Configuration Files (*.cfg)"]
     if self._inputDir is None:
         self._inputDir = PyMcaDirs.inputDir
     elif os.path.exists(self._inputDir):
         PyMcaDirs.inputDir = self._inputDir
     message = "Select a Simple Fit Configuration File"
     mode = "OPEN"
     getfilter = False
     currentfilter = None #self._lastInputFileFilter
     fileList = PyMcaFileDialogs.getFileList(self,
                                              filetypelist=filetypes,
                                              message=message,
                                              mode=mode,
                                              getfilter=getfilter,
                                              single=True,
                                              currentfilter=currentfilter)
     if not len(fileList):
         return
     self._inputDir = os.path.dirname(fileList[0])
     self.setFitConfigurationFile(fileList[0])
     self.raise_()
コード例 #3
0
ファイル: QStackWidget.py プロジェクト: aaron-parsons/pymca
 def _getOutputTiffFilename(self):
     fileTypes = "TIFF Files (*.tif *.tiff *.TIF *.TIFF)"
     message = "Enter output filename"
     wdir = PyMcaDirs.outputDir
     filename = PyMcaFileDialogs.getFileList(self,
                                     message=message,
                                     mode="SAVE",
                                     currentdir=wdir,
                                     filetypelist=[fileTypes],
                                     getfilter=False,
                                     single=True)
     if len(filename):
         filename = filename[0]
     if len(filename):
         try:
             fname = qt.safe_str(filename)
             if fname.endswith('.tif') or\
                fname.endswith('.tiff') or\
                fname.endswith('.TIF') or\
                fname.endswith('.TIFF'):
                 return fname
             else:
                 return fname + ".tif"
         except UnicodeEncodeError:
             msg = qt.QMessageBox(self)
             msg.setWindowTitle("Encoding error")
             msg.setIcon(qt.QMessageBox.Critical)
             msg.setText("Please use ASCII characters in file name and path")
             msg.exec_()
     return ""
コード例 #4
0
ファイル: QStackWidget.py プロジェクト: Aidan-zhang/pymca
 def _getOutputTiffFilename(self):
     fileTypes = "TIFF Files (*.tif *.tiff *.TIF *.TIFF)"
     message = "Enter output filename"
     wdir = PyMcaDirs.outputDir
     filename = PyMcaFileDialogs.getFileList(self,
                                             message=message,
                                             mode="SAVE",
                                             currentdir=wdir,
                                             filetypelist=[fileTypes],
                                             getfilter=False,
                                             single=True)
     if len(filename):
         filename = filename[0]
     if len(filename):
         try:
             fname = qt.safe_str(filename)
             if fname.endswith('.tif') or\
                fname.endswith('.tiff') or\
                fname.endswith('.TIF') or\
                fname.endswith('.TIFF'):
                 return fname
             else:
                 return fname + ".tif"
         except UnicodeEncodeError:
             msg = qt.QMessageBox(self)
             msg.setWindowTitle("Encoding error")
             msg.setIcon(qt.QMessageBox.Critical)
             msg.setText(
                 "Please use ASCII characters in file name and path")
             msg.exec_()
     return ""
コード例 #5
0
 def _loadSlot(self):
     if self.inputDir is None:
         if self.inputDir is not None:
             self.inputDir = self.outputDir
         else:
             self.inputDir = PyMcaDirs.inputDir
     wdir = self.inputDir
     if not os.path.exists(wdir):
         wdir = os.getcwd()
     filename = PyMcaFileDialogs.getFileList(self,
                         filetypelist=["Transmission table files (*.csv)",
                                       "Transmission table files (*)"],
                         mode="OPEN",
                         message="Choose 2-column transmission table file",
                         currentdir=wdir,
                         single=True)
     if len(filename):
         filename = qt.safe_str(filename[0])
         if len(filename):
             try:
                 self.loadTransmissionTable(filename)
                 self.inputDir = os.path.dirname(filename)
                 PyMcaDirs.inputDir = self.inputDir
             except:
                 msg = qt.QMessageBox(self)
                 msg.setIcon(qt.QMessageBox.Critical)
                 msg.setText("Error transmission table: %s" % (sys.exc_info()[1]))
                 msg.exec()
                 return
コード例 #6
0
ファイル: EnergyTable.py プロジェクト: waltpessoa/pymca
 def loadButtonClicked(self):
     if self.inputDir is None:
         if self.inputDir is not None:
             self.inputDir = self.outputDir
         else:
             self.inputDir = PyMcaDirs.inputDir
     wdir = self.inputDir
     if not os.path.exists(wdir):
         wdir = os.getcwd()
     filename = PyMcaFileDialogs.getFileList(
         self,
         filetypelist=["Energy table files (*.csv)"],
         mode="OPEN",
         message="Choose energy table file",
         currentdir=wdir,
         single=True)
     if len(filename):
         filename = qt.safe_str(filename[0])
         if len(filename):
             try:
                 self.loadEnergyTableParameters(filename)
                 self.inputDir = os.path.dirname(filename)
                 PyMcaDirs.inputDir = self.inputDir
             except:
                 msg = qt.QMessageBox(self)
                 msg.setIcon(qt.QMessageBox.Critical)
                 msg.setText("Error loading energy table: %s" %
                             (sys.exc_info()[1]))
                 msg.exec_()
コード例 #7
0
ファイル: EnergyTable.py プロジェクト: dnaudet/pymca
 def loadButtonClicked(self):
     if self.inputDir is None:
         if self.inputDir is not None:
             self.inputDir = self.outputDir
         else:
             self.inputDir = PyMcaDirs.inputDir
     wdir = self.inputDir
     if not os.path.exists(wdir):
         wdir = os.getcwd()
     filename = PyMcaFileDialogs.getFileList(self,
                         filetypelist=["Energy table files (*.csv)"],
                         mode="OPEN",
                         message="Choose energy table file",
                         currentdir=wdir,
                         single=True)
     if len(filename):
         filename = qt.safe_str(filename[0])
         if len(filename):
             try:
                 self.loadEnergyTableParameters(filename)
                 self.inputDir = os.path.dirname(filename)
                 PyMcaDirs.inputDir = self.inputDir
             except:
                 msg = qt.QMessageBox(self)
                 msg.setIcon(qt.QMessageBox.Critical)
                 msg.setText("Error loading energy table: %s" % (sys.exc_info()[1]))
                 msg.exec_()
コード例 #8
0
 def browseFitConfiguration(self):
     if self._inputDir is None:
         self._inputDir = PyMcaDirs.inputDir
     elif os.path.exists(self._inputDir):
         PyMcaDirs.inputDir = self._inputDir
     filetypes = ["Configuration Files (*.cfg)"]
     if self._inputDir is None:
         self._inputDir = PyMcaDirs.inputDir
     elif os.path.exists(self._inputDir):
         PyMcaDirs.inputDir = self._inputDir
     message = "Select a Simple Fit Configuration File"
     mode = "OPEN"
     getfilter = False
     currentfilter = None  #self._lastInputFileFilter
     fileList = PyMcaFileDialogs.getFileList(self,
                                             filetypelist=filetypes,
                                             message=message,
                                             mode=mode,
                                             getfilter=getfilter,
                                             single=True,
                                             currentfilter=currentfilter)
     if not len(fileList):
         return
     self._inputDir = os.path.dirname(fileList[0])
     self.setFitConfigurationFile(fileList[0])
     self.raise_()
コード例 #9
0
 def saveSignal(self):
     fileList = PyMcaFileDialogs.getFileList(self,
                                             filetypelist=['cfg file (*.cfg)'],
                                             mode="SAVE",
                                             single=True,
                                             getfilter=False)
     if len(fileList):
         self.saveConfiguration(fileList[0])
コード例 #10
0
 def browseConfigurationFile(self):
     f = PyMcaFileDialogs.getFileList(parent=self,
                                  filetypelist=["Configuration files (*.cfg)"],
                                  message="Open a fit configuration file",
                                  mode="OPEN",
                                  single=True)
     if len(f):
         self._configLine.setText(f[0])
コード例 #11
0
 def browseConfigurationFile(self):
     f = PyMcaFileDialogs.getFileList(parent=self,
                                  filetypelist=["Configuration files (*.cfg)"],
                                  message="Open a fit configuration file",
                                  mode="OPEN",
                                  single=True)
     if len(f):
         self._configLine.setText(f[0])
コード例 #12
0
 def saveSignal(self):
     fileList = PyMcaFileDialogs.getFileList(self,
                                             filetypelist=['cfg file (*.cfg)'],
                                             mode="SAVE",
                                             single=True,
                                             getfilter=False)
     if len(fileList):
         self.saveConfiguration(fileList[0])
コード例 #13
0
 def saveImage(self):
     filelist = PyMcaFileDialogs.getFileList(
         parent=self,
         filetypelist=["Image files (*.png)"],
         message="Please give output file name",
         mode="SAVE",
         getfilter=False)
     if len(filelist):
         self.glWidget.saveImage(filelist[0])
コード例 #14
0
ファイル: SceneGLWindow.py プロジェクト: PiRK/pymca
 def saveImage(self):
     filelist = PyMcaFileDialogs.getFileList(
         parent=self,
         filetypelist=["Image files (*.png)"],
         message="Please give output file name",
         mode="SAVE",
         getfilter=False)
     if len(filelist):
         self.glWidget.saveImage(filelist[0])
コード例 #15
0
    def _saveSlot(self):
        if self.outputDir is None:
            if self.inputDir is not None:
                self.outputDir = self.inputDir
            else:
                self.outputDir = PyMcaDirs.outputDir
        wdir = self.outputDir
        format_list = ['";"-separated CSV *.csv',
                       '","-separated CSV *.csv',
                       '"tab"-separated CSV *.csv']
        if self.outputFilter is None:
            self.outputFilter = format_list[0]
        outfile, filterused = PyMcaFileDialogs.getFileList(self,
                                        filetypelist=format_list,
                                        mode="SAVE",
                                        message="Output File Selection",
                                        currentdir=wdir,
                                        currentfilter=self.outputFilter,
                                        getfilter=True,
                                        single=True)
        if len(outfile):
            outputFile = qt.safe_str(outfile[0])
        else:
            return
        self.outputFilter = qt.safe_str(filterused)
        filterused = self.outputFilter.split()
        try:
            self.outputDir  = os.path.dirname(outputFile)
            PyMcaDirs.outputDir = os.path.dirname(outputFile)
        except:
            self.outputDir  = "."
        if not outputFile.endswith('.csv'):
            outputFile += '.csv'
        #always overwrite
        if "," in filterused[0]:
            csv = ","
        elif ";" in filterused[0]:
            csv = ";"
        else:
            csv = "\t"

        ddict = self.getTransmissionTable()
        x = ddict["energy"]
        y = ddict["transmission"]

        try:
            ArraySave.saveXY(x, y, outputFile,
                             xlabel="Energy", ylabel="Transmission",
                             csv=True, csvseparator=csv)
        except IOError:
            msg = qt.QMessageBox(self)
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("Input Output Error: %s" % (sys.exc_info()[1]))
            msg.exec()
            return
コード例 #16
0
 def load(self):
     fileList = PyMcaFileDialogs.getFileList(parent=self,
                                             filetypelist=["Fit files (*.cfg)"],
                                             message="Select a fit configuration file",
                                             mode="OPEN",
                                             getfilter=False,
                                             single=True)
     if len(fileList):
         d = ConfigDict.ConfigDict()
         d.read(fileList[0])
         self.setParameters(d)
コード例 #17
0
ファイル: StrategyHandler.py プロジェクト: maurov/pymca
 def load(self):
     fileList = PyMcaFileDialogs.getFileList(parent=self,
                                             filetypelist=["Fit files (*.cfg)"],
                                             message="Select a fit configuration file",
                                             mode="OPEN",
                                             getfilter=False,
                                             single=True)
     if len(fileList):
         d = ConfigDict.ConfigDict()
         d.read(fileList[0])
         self.setParameters(d)
コード例 #18
0
ファイル: SIFTAlignmentWindow.py プロジェクト: sjmvm/pymca
 def browseFile(self):
     filelist = PyMcaFileDialogs.getFileList(self,
                             filetypelist=['HDF5 files (*.h5)'],
                             message="Please enter output file",
                             mode="SAVE",
                             single=True)
     if len(filelist):
         name = filelist[0]
         if not name.endswith('.h5'):
             name = name + ".h5"
         self.fileName.setText(name)
コード例 #19
0
ファイル: FFTAlignmentWindow.py プロジェクト: dnaudet/pymca
 def browseFile(self):
     filelist = PyMcaFileDialogs.getFileList(self,
                             filetypelist=['HDF5 files (*.h5)'],
                             message="Please enter output file",
                             mode="SAVE",
                             single=True)
     if len(filelist):
         name = filelist[0]
         if not name.endswith('.h5'):
             name = name + ".h5"
         self.fileName.setText(name)
コード例 #20
0
ファイル: Object3DStack.py プロジェクト: waltpessoa/pymca
def getObject3DInstance(config=None):
    #for the time being a former configuration
    #for serializing purposes is not implemented

    #I do the import here for the case PyMca is not installed
    #because the modules could be instanstiated without using
    #this method
    try:
        from PyMca5.PyMcaIO import EDFStack
        from PyMca5.PyMcaIO import TiffStack
    except ImportError:
        import EDFStack
        import TiffStack

    fileTypeList = [
        'EDF Z Stack (*edf *ccd)', 'EDF X Stack (*edf *ccd)',
        'TIFF Stack (*tif *tiff)'
    ]
    old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select the object file(s)",
        mode="OPEN",
        getfilter=True)
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old
    if not len(fileList):
        return None
    if filterUsed == fileTypeList[0]:
        fileindex = 2
    else:
        fileindex = 1
    #file index is irrelevant in case of an actual 3D stack.
    filename = fileList[0]
    legend = os.path.basename(filename)
    if filterUsed == fileTypeList[2]:
        #TIFF
        stack = TiffStack.TiffStack(dtype=numpy.float32, imagestack=False)
        stack.loadFileList(fileList, fileindex=1)
    elif len(fileList) == 1:
        stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False)
        stack.loadIndexedStack(filename, fileindex=fileindex)
    else:
        stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False)
        stack.loadFileList(fileList, fileindex=fileindex)
    if stack is None:
        raise IOError("Problem reading stack.")
    object3D = Object3DStack(name=legend)
    object3D.setStack(stack)
    return object3D
コード例 #21
0
 def _loadImageFiles(self):
     fileTypeList = ["PNG Files (*png)",
                     "JPEG Files (*jpg *jpeg)",
                     "IMAGE Files (*)",
                     "DAT Files (*dat)",
                     "CSV Files (*csv)",
                     "EDF Files (*edf)",
                     "EDF Files (*ccd)",
                     "EDF Files (*)",
                     'HDF5 Files (*.h5 *.nxs *.hdf *.hdf5)']
     filenamelist, filefilter = PyMcaFileDialogs.getFileList(parent=None,
                                 filetypelist=fileTypeList,
                                 message="Open image file",
                                 getfilter=True,
                                 single=False,
                                 currentfilter=None)
     if not filenamelist:
         return
     filefilter = filefilter.split()[0].lower()
     extension = qt.safe_str(os.path.splitext(filenamelist[0])[1]).lower()
     if (filefilter in ["edf"]) or \
        (extension in [".edf", ".tif"]):
         imagenames, imagelist = self._readImageListEdf(filenamelist)
         if imagenames:
             try:
                 self._createStackPluginWindowEdf(imagenames, imagelist)
             except AttributeError:
                 self._createStackPluginWindow(imagenames, imagelist)
     elif (filefilter in ["hdf5"]) or \
        (extension in [".h5", ".nxs", ".hdf", ".hdf5"]):
         imagenames, imagelist = self._readImageListHdf5(filenamelist)
         if imagenames:
             try:
                 self._createStackPluginWindowHdf5(imagenames, imagelist)
             except AttributeError:
                 self._createStackPluginWindow(imagenames, imagelist)
     elif extension in [".csv", ".dat"]:
         imagenames, imagelist = self._readImageListSpec(filenamelist)
         if imagenames:
             try:
                 self._createStackPluginWindowSpec(imagenames, imagelist)
             except AttributeError:
                 self._createStackPluginWindow(imagenames, imagelist)
     else:
         imagenames, imagelist = self._readImageListQImageReadable(filenamelist)
         if imagenames:
             try:
                 self._createStackPluginWindowQImage(imagenames, imagelist)
             except AttributeError:
                 self._createStackPluginWindow(imagenames, imagelist)
コード例 #22
0
ファイル: Object3DStack.py プロジェクト: PiRK/pymca
def getObject3DInstance(config=None):
    #for the time being a former configuration
    #for serializing purposes is not implemented

    #I do the import here for the case PyMca is not installed
    #because the modules could be instanstiated without using
    #this method
    try:
        from PyMca5.PyMcaIO import EDFStack
        from PyMca5.PyMcaIO import TiffStack
    except ImportError:
        import EDFStack
        import TiffStack

    fileTypeList = ['EDF Z Stack (*edf *ccd)',
                    'EDF X Stack (*edf *ccd)',
                    'TIFF Stack (*tif *tiff)']
    old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select the object file(s)",
        mode="OPEN",
        getfilter=True)
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old
    if not len(fileList):
        return None
    if filterUsed == fileTypeList[0]:
        fileindex = 2
    else:
        fileindex = 1
    #file index is irrelevant in case of an actual 3D stack.
    filename = fileList[0]
    legend = os.path.basename(filename)
    if filterUsed == fileTypeList[2]:
        #TIFF
        stack = TiffStack.TiffStack(dtype=numpy.float32, imagestack=False)
        stack.loadFileList(fileList, fileindex=1)
    elif len(fileList) == 1:
        stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False)
        stack.loadIndexedStack(filename, fileindex=fileindex)
    else:
        stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False)
        stack.loadFileList(fileList, fileindex=fileindex)
    if stack is None:
        raise IOError("Problem reading stack.")
    object3D = Object3DStack(name=legend)
    object3D.setStack(stack)
    return object3D
コード例 #23
0
    def _getFileList(self, fileTypeList, message=None, getfilter=None):
        if message is None:
            message = "Please select a file"
        if getfilter is None:
            getfilter = False
        wdir = PyMcaDirs.inputDir
        filterused = None
        if getfilter:
            filelist, filterused = PyMcaFileDialogs.getFileList(
                self.parent,
                filetypelist=fileTypeList,
                mode="OPEN",
                message=message,
                currentdir=wdir,
                getfilter=True,
                single=False,
                native=True)
        else:
            filelist = PyMcaFileDialogs.getFileList(self.parent,
                                                    filetypelist=fileTypeList,
                                                    mode="OPEN",
                                                    message=message,
                                                    currentdir=wdir,
                                                    getfilter=False,
                                                    single=False,
                                                    native=True)
        if not (len(filelist)):
            return []
        PyMcaDirs.inputDir = os.path.dirname(filelist[0])
        if PyMcaDirs.outputDir is None:
            PyMcaDirs.outputDir = os.path.dirname(filelist[0])

        if getfilter:
            return filelist, filterused
        else:
            return filelist
コード例 #24
0
ファイル: XASParameters.py プロジェクト: maurov/pymca
 def saveParameters(self, fname=None):
     if fname is None:
         fname = PyMcaFileDialogs.getFileList(self,
                                      filetypelist=["Configuration (*.ini)",
                                                    "Configuration (*.cfg)"],
                                      message="Please enter output file name",
                                      mode="SAVE",
                                      getfilter=False,
                                      single=True)
         if len(fname):
             fname = fname[0]
         else:
             return
     ddict = ConfigDict.ConfigDict()
     ddict["XASParameters"] = self.getParameters()
     ddict.write(fname)
コード例 #25
0
 def saveParameters(self, fname=None):
     if fname is None:
         fname = PyMcaFileDialogs.getFileList(self,
                                      filetypelist=["Configuration (*.ini)",
                                                    "Configuration (*.cfg)"],
                                      message="Please enter output file name",
                                      mode="SAVE",
                                      getfilter=False,
                                      single=True)
         if len(fname):
             fname = fname[0]
         else:
             return
     ddict = ConfigDict.ConfigDict()
     ddict["XASParameters"] = self.getParameters()
     ddict.write(fname)
コード例 #26
0
 def loadParameters(self, fname=None):
     if fname is None:
         fname = PyMcaFileDialogs.getFileList(self,
                                      filetypelist=["Configuration (*.ini)",
                                                    "Configuration (*.cfg)",
                                                    "All files (*)"],
                                      message="Please set input file name",
                                      mode="OPEN",
                                      getfilter=False,
                                      single=True)
         if len(fname):
             fname = fname[0]
         else:
             return
     d = ConfigDict.ConfigDict()
     d.read(fname)
     self.setParameters(d["XASParameters"])
コード例 #27
0
ファイル: SimpleFitBatchGui.py プロジェクト: dnaudet/pymca
 def browseOutputDirectory(self):
     if self._outputDir is None:
         self._outputDir = PyMcaDirs.outputDir
     elif os.path.exists(self._outputDir):
         PyMcaDirs.inputDir = self._outputDir
     message = "Select a Simple Fit Configuration File"
     mode = "OPEN"
     fileList = PyMcaFileDialogs.getExistingDirectory(self,
                                              message=message,
                                              mode=mode)
     if not len(fileList):
         return
     if type(fileList) != type([]):
         fileList = [fileList]
     self._outputDir = os.path.dirname(fileList[0])
     self.setOutputDirectory(fileList[0])
     self.raise_()
コード例 #28
0
 def browseOutputDirectory(self):
     if self._outputDir is None:
         self._outputDir = PyMcaDirs.outputDir
     elif os.path.exists(self._outputDir):
         PyMcaDirs.inputDir = self._outputDir
     message = "Select a Simple Fit Configuration File"
     mode = "OPEN"
     fileList = PyMcaFileDialogs.getExistingDirectory(self,
                                                      message=message,
                                                      mode=mode)
     if not len(fileList):
         return
     if type(fileList) != type([]):
         fileList = [fileList]
     self._outputDir = os.path.dirname(fileList[0])
     self.setOutputDirectory(fileList[0])
     self.raise_()
コード例 #29
0
ファイル: XASParameters.py プロジェクト: maurov/pymca
 def loadParameters(self, fname=None):
     if fname is None:
         fname = PyMcaFileDialogs.getFileList(self,
                                      filetypelist=["Configuration (*.ini)",
                                                    "Configuration (*.cfg)",
                                                    "All files (*)"],
                                      message="Please set input file name",
                                      mode="OPEN",
                                      getfilter=False,
                                      single=True)
         if len(fname):
             fname = fname[0]
         else:
             return
     d = ConfigDict.ConfigDict()
     d.read(fname)
     self.setParameters(d["XASParameters"])
コード例 #30
0
ファイル: SpecfitGui.py プロジェクト: waltpessoa/pymca
    def funevent(self, item):
        item = str(item)
        if item in self.specfit.theorylist:
            self.specfit.settheory(item)
        else:
            filelist = PyMcaFileDialogs.getFileList(
                self,
                message="Select python module with your function(s)",
                filetypelist=["Python Files (*.py)", "All Files (*)"],
                mode="OPEN",
                single=True,
                getfilter=False)

            if not len(filelist):
                functionsfile = ""
            else:
                functionsfile = filelist[0]
            if len(functionsfile):
                try:
                    if self.specfit.importfun(functionsfile):
                        qt.QMessageBox.critical(self, "ERROR",
                                                "Function not imported")
                        return
                    else:
                        #empty the ComboBox
                        n = self.guiconfig.FunComBox.count()
                        while (self.guiconfig.FunComBox.count() > 1):
                            self.guiconfig.FunComBox.removeItem(1)
                        #and fill it again
                        for key in self.specfit.theorylist:
                            if QTVERSION < '4.0.0':
                                self.guiconfig.FunComBox.insertItem(str(key))
                            else:
                                self.guiconfig.FunComBox.addItem(str(key))
                except:
                    qt.QMessageBox.critical(self, "ERROR",
                                            "Function not imported")
            i = 1 + self.specfit.theorylist.index(
                self.specfit.fitconfig['fittheory'])
            if QTVERSION < '4.0.0':
                self.guiconfig.FunComBox.setCurrentItem(i)
            else:
                self.guiconfig.FunComBox.setCurrentIndex(i)
        self.__initialparameters()
        return
コード例 #31
0
ファイル: Object3DPixmap.py プロジェクト: waltpessoa/pymca
def getObject3DInstance(config=None):
    fileTypeList = [
        'Picture Files (*jpg *jpeg *tif *tiff *png)', 'EDF Files (*edf)',
        'EDF Files (*ccd)', 'ADSC Files (*img)', 'EDF Files (*)'
    ]
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select one object data file",
        mode="OPEN",
        getfilter=True)
    if not len(fileList):
        return
    fname = fileList[0]
    if filterUsed.split()[0] == "Picture":
        qimage = qt.QImage(fname)
        if qimage.isNull():
            msg = qt.QMessageBox(self)
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("Cannot read file %s as an image" % fname)
            msg.exec_()
            return
        object3D = Object3DPixmap(os.path.basename(fname))
        object3D.setQImage(qimage)
        return object3D
    if filterUsed.split()[0] in ["EDF", "ADSC"]:
        edf = EdfFile.EdfFile(fname)
        data = edf.GetData(0)
        if True:
            object3D = Object3DPixmap(os.path.basename(fname))
            object3D.setImageData(data)
        else:
            (image, size, minmax) = spslut.transform(data, (1, 0),
                                                     (spslut.LINEAR, 3.0),
                                                     "RGBX", spslut.TEMP, 1,
                                                     (0, 1), (0, 255), 1)
            object3D = Object3DPixmap(os.path.basename(fname))
            object3D.setPixmap(image,
                               size[0],
                               size[1],
                               xmirror=False,
                               ymirror=False)
        return object3D
    return None
コード例 #32
0
 def browseList(self):
     if self._inputDir is None:
         self._inputDir = PyMcaDirs.inputDir
     elif os.path.exists(self._inputDir):
         PyMcaDirs.inputDir = self._inputDir
     filetypes = ["Mca Files (*.mca)", "Edf Files (*.edf)"]
     if HDF5SUPPORT:
         filetypes.append("HDF5 Files(*.nxs *.h5 *.hdf)")
     filetypes.append("SPEC Files (*.spec)")
     filetypes.append("SPEC Files (*.dat)")
     filetypes.append("All files (*)")
     message = "Open a set of files"
     mode = "OPEN"
     getfilter = True
     currentfilter = self._lastInputFileFilter
     fileList, fileFilter = PyMcaFileDialogs.getFileList(
         self,
         filetypelist=filetypes,
         message=message,
         mode=mode,
         getfilter=getfilter,
         single=False,
         currentfilter=currentfilter)
     if not len(fileList):
         return
     else:
         self._lastInputFileFilter = fileFilter
     self._inputDir = os.path.dirname(fileList[0])
     if (QTVERSION < '4.2.0') or (not len(self._fileList)):
         self.setFileList(fileList)
         self.raise_()
         return
     msg = qt.QMessageBox()
     msg.setWindowTitle("Append or replace")
     msg.setIcon(qt.QMessageBox.Information)
     msg.setText("Do you want to delete current file list?")
     msg.setStandardButtons(qt.QMessageBox.Yes | qt.QMessageBox.No)
     answer = msg.exec()
     if answer == qt.QMessageBox.Yes:
         append = False
     else:
         append = True
     self.setFileList(fileList, append=append)
     self.raise_()
コード例 #33
0
ファイル: SpecfitGui.py プロジェクト: vasole/pymca
 def funevent(self,item):
     item=str(item)
     if item in self.specfit.theorylist:
         self.specfit.settheory(item)
     else:
         filelist = PyMcaFileDialogs.getFileList(self,
                      message="Select python module with your function(s)",
                      filetypelist=["Python Files (*.py)",
                                    "All Files (*)"],
                      mode="OPEN",
                      single=True,
                      getfilter=False)
                             
         if not len(filelist):           
             functionsfile = ""
         else:
             functionsfile = filelist[0]
         if len(functionsfile):
             try:
                 if self.specfit.importfun(functionsfile):
                     qt.QMessageBox.critical(self, "ERROR",
                                             "Function not imported")
                     return
                 else:
                     #empty the ComboBox
                     n=self.guiconfig.FunComBox.count()
                     while(self.guiconfig.FunComBox.count()>1):
                       self.guiconfig.FunComBox.removeItem(1)
                     #and fill it again
                     for key in self.specfit.theorylist:
                         if QTVERSION < '4.0.0':
                             self.guiconfig.FunComBox.insertItem(str(key))
                         else:
                             self.guiconfig.FunComBox.addItem(str(key))
             except:
                 qt.QMessageBox.critical(self, "ERROR",
                                         "Function not imported")
         i=1+self.specfit.theorylist.index(self.specfit.fitconfig['fittheory'])
         if QTVERSION < '4.0.0':
             self.guiconfig.FunComBox.setCurrentItem(i)
         else:
             self.guiconfig.FunComBox.setCurrentIndex(i)
     self.__initialparameters()
     return
コード例 #34
0
ファイル: SimpleFitBatchGui.py プロジェクト: dnaudet/pymca
 def browseList(self):
     if self._inputDir is None:
         self._inputDir = PyMcaDirs.inputDir
     elif os.path.exists(self._inputDir):
         PyMcaDirs.inputDir = self._inputDir
     filetypes  = ["Mca Files (*.mca)",
                   "Edf Files (*.edf)"]
     if HDF5SUPPORT:
         filetypes.append("HDF5 Files(*.nxs *.h5 *.hdf)")
     filetypes.append("SPEC Files (*.spec)")
     filetypes.append("SPEC Files (*.dat)")
     filetypes.append("All files (*)")
     message = "Open a set of files"
     mode = "OPEN"
     getfilter = True
     currentfilter = self._lastInputFileFilter
     fileList, fileFilter  = PyMcaFileDialogs.getFileList(self,
                                              filetypelist=filetypes,
                                              message=message,
                                              mode=mode,
                                              getfilter=getfilter,
                                              single=False,
                                              currentfilter=currentfilter)
     if not len(fileList):
         return
     else:
         self._lastInputFileFilter = fileFilter
     self._inputDir = os.path.dirname(fileList[0])
     if (QTVERSION < '4.2.0') or (not len(self._fileList)):
         self.setFileList(fileList)
         self.raise_()
         return
     msg = qt.QMessageBox()
     msg.setWindowTitle("Append or replace")
     msg.setIcon(qt.QMessageBox.Information)
     msg.setText("Do you want to delete current file list?")
     msg.setStandardButtons(qt.QMessageBox.Yes|qt.QMessageBox.No)
     answer=msg.exec_()
     if answer == qt.QMessageBox.Yes:
         append = False
     else:
         append = True
     self.setFileList(fileList, append=append)
     self.raise_()
コード例 #35
0
ファイル: Object3DPixmap.py プロジェクト: PiRK/pymca
def getObject3DInstance(config=None):
    fileTypeList = ['Picture Files (*jpg *jpeg *tif *tiff *png)',
                    'EDF Files (*edf)',
                    'EDF Files (*ccd)',
                    'ADSC Files (*img)',
                    'EDF Files (*)']
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select one object data file",
        mode="OPEN",
        getfilter=True)
    if not len(fileList):
        return
    fname = fileList[0]
    if filterUsed.split()[0] == "Picture":
        qimage = qt.QImage(fname)
        if qimage.isNull():
            msg = qt.QMessageBox(self)
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("Cannot read file %s as an image" % fname)
            msg.exec_()
            return
        object3D = Object3DPixmap(os.path.basename(fname))
        object3D.setQImage(qimage)
        return object3D
    if filterUsed.split()[0] in ["EDF", "ADSC"]:
        edf = EdfFile.EdfFile(fname)
        data = edf.GetData(0)
        if True:
            object3D = Object3DPixmap(os.path.basename(fname))
            object3D.setImageData(data)
        else:
            (image,size,minmax)= spslut.transform(data, (1,0),
                                      (spslut.LINEAR,3.0),
                                      "RGBX", spslut.TEMP,
                                      1,
                                      (0, 1),
                                      (0, 255), 1)
            object3D = Object3DPixmap(os.path.basename(fname))
            object3D.setPixmap(image, size[0], size[1], xmirror = False, ymirror = False)
        return object3D
    return None
コード例 #36
0
ファイル: PyMcaPostBatch.py プロジェクト: gbzan/pymca
 def _getStackOfFiles(self):
     wdir = PyMcaDirs.inputDir
     fileTypeList = [
         "Batch Result Files (*dat)", "EDF Files (*edf)",
         "EDF Files (*ccd)", "TIFF Files (*tif *tiff *TIF *TIFF)",
         "Image Files (* jpg *jpeg *tif *tiff *png)", "All Files (*)"
     ]
     message = "Open ONE Batch result file or SEVERAL EDF files"
     filelist = PyMcaFileDialogs.getFileList(parent=self,
                                             filetypelist=fileTypeList,
                                             message=message,
                                             currentdir=wdir,
                                             mode="OPEN",
                                             single=False)
     if filelist:
         PyMcaDirs.inputDir = os.path.dirname(filelist[0])
         return filelist
     else:
         return []
コード例 #37
0
ファイル: PyMcaPostBatch.py プロジェクト: maurov/pymca
    def _getStackOfFiles(self):
        wdir = PyMcaDirs.inputDir
        fileTypeList = ["Batch Result Files (*dat)",
                        "EDF Files (*edf)",
                        "EDF Files (*ccd)",
                        "TIFF Files (*tif *tiff *TIF *TIFF)",
                        "Image Files (* jpg *jpeg *tif *tiff *png)",
                        "All Files (*)"]
        message = "Open ONE Batch result file or SEVERAL EDF files"

        filelist = PyMcaFileDialogs.getFileList(parent=self,
                                filetypelist=fileTypeList,
                                message=message,
                                currentdir=wdir,
                                mode="OPEN",
                                single=False)
        if not len(filelist):
            return []
        PyMcaDirs.inputDir = os.path.dirname(filelist[0])
        return filelist
コード例 #38
0
    def replace1DAxisWithASCII(self):
        stack = self.getStackDataObject()
        mcaIndex = stack.info.get('McaIndex', -1)
        nPoints = stack.data.shape[mcaIndex]
        fileList = PyMcaFileDialogs.getFileList(None,
                                           filetypelist=["ASCII files (*)"],
                                           message="Select ASCII file",
                                           mode="OPEN",
                                           getfilter=False,
                                           single=True)
        if not len(fileList):
            return

        filename = fileList[0]
        data = numpy.loadtxt(filename)
        data.shape = -1
        if data.size != nPoints:
            raise ValueError("Number of read values not equal to %d" % nPoints)
        else:
            stack.x = [data]
            self.setStack(stack, mcaindex=mcaIndex)
コード例 #39
0
ファイル: Object3DMesh.py プロジェクト: PiRK/pymca
def getObject3DInstance(config=None):
    #for the time being a former configuration
    #for serializing purposes is not implemented


    #I do the import here for the case PyMca is not installed
    #because the modules could be instanstiated without using
    #this method
    try:
        from PyMca5.PyMcaIO import EdfFile
    except ImportError:
        import EdfFile

    fileTypeList = ['EDF Files (*edf)',
                    'EDF Files (*ccd)',
                    'ADSC Files (*img)',
                    'All Files (*)']
    old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select one object data file",
        mode="OPEN",
        getfilter=True)
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old
    if not len(fileList):
        return None
    if filterUsed == fileTypeList[0]:
        fileindex = 2
    else:
        fileindex = 1
    #file index is irrelevant in case of an actual 3D stack.
    filename = fileList[0]
    legend = os.path.basename(filename)
    edf = EdfFile.EdfFile(filename, access='rb')
    data = edf.GetData(0).astype(numpy.float32)
    object3D = Object3DMesh(os.path.basename(filename))
    object3D.setData(data, z=data[:])
    return object3D
コード例 #40
0
ファイル: ChimeraStack.py プロジェクト: PiRK/pymca
def getObject3DInstance(config=None):
    #for the time being a former configuration
    #for serializing purposes is not implemented

    #I do the import here for the case PyMca is not installed
    #because the modules could be instanstiated without using
    #this method
    try:
        from PyMca5.PyMcaIO import EDFStack
    except ImportError:
        import EDFStack

    fileTypeList = ['Chimera Stack (*cmp)',
                    'Chimera Stack (*)']
    old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1
    #PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select the object file(s)",
        mode="OPEN",
        getfilter=True)
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old
    if not len(fileList):
        return None
    if filterUsed == fileTypeList[0]:
        fileindex = 2
    else:
        fileindex = 1
    #file index is irrelevant in case of an actual 3D stack.
    filename = fileList[0]
    legend = os.path.basename(filename)
    f = h5py.File(filename)
    stack = f['Image']['data'].value
    f = None
    if stack is None:
        raise IOError("Problem reading stack.")
    object3D = ChimeraStack(name=legend)
    object3D.setStack(stack)
    return object3D
コード例 #41
0
ファイル: Object3DMesh.py プロジェクト: gbzan/pymca
def getObject3DInstance(config=None):
    #for the time being a former configuration
    #for serializing purposes is not implemented


    #I do the import here for the case PyMca is not installed
    #because the modules could be instanstiated without using
    #this method
    try:
        from PyMca5.PyMcaIO import EdfFile
    except ImportError:
        import EdfFile

    fileTypeList = ['EDF Files (*edf)',
                    'EDF Files (*ccd)',
                    'ADSC Files (*img)',
                    'All Files (*)']
    old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select one object data file",
        mode="OPEN",
        getfilter=True)
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old
    if not len(fileList):
        return None
    if filterUsed == fileTypeList[0]:
        fileindex = 2
    else:
        fileindex = 1
    #file index is irrelevant in case of an actual 3D stack.
    filename = fileList[0]
    legend = os.path.basename(filename)
    edf = EdfFile.EdfFile(filename, access='rb')
    data = edf.GetData(0).astype(numpy.float32)
    object3D = Object3DMesh(os.path.basename(filename))
    object3D.setData(data, z=data[:])
    return object3D
コード例 #42
0
ファイル: ChimeraStack.py プロジェクト: waltpessoa/pymca
def getObject3DInstance(config=None):
    #for the time being a former configuration
    #for serializing purposes is not implemented

    #I do the import here for the case PyMca is not installed
    #because the modules could be instanstiated without using
    #this method
    try:
        from PyMca5.PyMcaIO import EDFStack
    except ImportError:
        import EDFStack

    fileTypeList = ['Chimera Stack (*cmp)', 'Chimera Stack (*)']
    old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1
    #PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False
    fileList, filterUsed = PyMcaFileDialogs.getFileList(
        parent=None,
        filetypelist=fileTypeList,
        message="Please select the object file(s)",
        mode="OPEN",
        getfilter=True)
    PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old
    if not len(fileList):
        return None
    if filterUsed == fileTypeList[0]:
        fileindex = 2
    else:
        fileindex = 1
    #file index is irrelevant in case of an actual 3D stack.
    filename = fileList[0]
    legend = os.path.basename(filename)
    f = h5py.File(filename)
    stack = f['Image']['data'].value
    f = None
    if stack is None:
        raise IOError("Problem reading stack.")
    object3D = ChimeraStack(name=legend)
    object3D.setStack(stack)
    return object3D
コード例 #43
0
 def browseOutputDir(self):
     f = PyMcaFileDialogs.getExistingDirectory(
         parent=self, message="Please select output directory", mode="OPEN")
     if len(f):
         self._outLine.setText(f)
コード例 #44
0
ファイル: EnergyTable.py プロジェクト: dnaudet/pymca
    def saveButtonClicked(self):
        energylist, weightlist, flaglist, scatterlist = self.table.getParameters()
        if self.outputDir is None:
            if self.inputDir is not None:
                self.outputDir = self.inputDir
            else:
                self.outputDir = PyMcaDirs.outputDir
        wdir = self.outputDir
        format_list = ['";"-separated CSV *.csv',
                       '","-separated CSV *.csv',
                       '"tab"-separated CSV *.csv']
        if self.outputFilter is None:
            self.outputFilter = format_list[0]
        outfile, filterused = PyMcaFileDialogs.getFileList(self,
                                        filetypelist=format_list,                                          
                                        mode="SAVE",
                                        message="Output File Selection",
                                        currentdir=wdir,
                                        currentfilter=self.outputFilter,
                                        getfilter=True,
                                        single=True)
        if len(outfile):
            outputFile = qt.safe_str(outfile[0])
        else:
            return
        self.outputFilter = qt.safe_str(filterused)
        filterused = self.outputFilter.split()
        try:
            self.outputDir  = os.path.dirname(outputFile)
            PyMcaDirs.outputDir = os.path.dirname(outputFile)
        except:
            self.outputDir  = "."
        if not outputFile.endswith('.csv'):
            outputFile += '.csv'
        #always overwrite
        if os.path.exists(outputFile):
            os.remove(outputFile)
        try:
            if sys.version < "3.0.0":
                ffile=open(outputFile,'wb')
            else:
                ffile=open(outputFile,'w')
        except IOError:
            msg = qt.QMessageBox(self)
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("Input Output Error: %s" % (sys.exc_info()[1]))
            msg.exec_()
            return
        if "," in filterused[0]:
            csv = ","
        elif ";" in filterused[0]:
            csv = ";"
        else:
            csv = "\t"

        ffile.write('"energy"%s"weight"%s"flag"%s"scatter"\n' % (csv, csv, csv))
        #write the scatter lines in first instance
        alreadysaved = []
        for i in range(len(energylist)):
            if (energylist[i] is not None) and \
               (scatterlist[i] == 1):
                ffile.write("%f%s%f%s%d%s%d\n" % \
                   (energylist[i], csv,
                    weightlist[i], csv,
                    flaglist[i], csv,
                    scatterlist[i]))
                alreadysaved.append(i)

        for i in range(len(energylist)):
            if energylist[i] is not None:
                if i not in alreadysaved:
                    ffile.write("%f%s%f%s%d%s%d\n" % \
                       (energylist[i], csv,
                        weightlist[i], csv,
                        flaglist[i], csv,
                        scatterlist[i]))
        ffile.close()
コード例 #45
0
    def _loadImageFiles(self):
        if self.getStackDataObject() is None:
            return
        getfilter = True
        fileTypeList = [
            "PNG Files (*png)",
            "JPEG Files (*jpg *jpeg)",
            "IMAGE Files (*)",
            "EDF Files (*edf)",
            "EDF Files (*ccd)",
            "EDF Files (*)",
        ]
        message = "Open image file"
        filenamelist, filefilter = PyMcaFileDialogs.getFileList(
            parent=None,
            filetypelist=fileTypeList,
            message=message,
            getfilter=getfilter,
            single=False,
            currentfilter=None,
        )
        if len(filenamelist) < 1:
            return
        imagelist = []
        imagenames = []
        mask = self.getStackSelectionMask()
        if mask is None:
            r, n = self.getStackROIImagesAndNames()
            shape = r[0].shape
        else:
            shape = mask.shape
        if filefilter.split()[0] in ["EDF"]:
            for filename in filenamelist:
                # read the edf file
                edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename)

                # the list of images
                keylist = edf.getSourceInfo()["KeyList"]
                if len(keylist) < 1:
                    msg = qt.QMessageBox(None)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read image from file")
                    msg.exec_()
                    return

                for key in keylist:
                    # get the data
                    dataObject = edf.getDataObject(key)
                    data = dataObject.data
                    if data.shape[0] not in shape:
                        continue
                    if data.shape[1] not in shape:
                        continue
                    imagename = dataObject.info.get("Title", "")
                    if imagename != "":
                        imagename += " "
                    imagename += os.path.basename(filename) + " " + key
                    imagelist.append(data)
                    imagenames.append(imagename)
            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            crop = False
            self.widget = StackPluginResultsWindow.StackPluginResultsWindow(parent=None, usetab=False)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setStackPluginResults(imagelist, image_names=imagenames)
            self._showWidget()
            return
        else:
            # Try pure Image formats
            for filename in filenamelist:
                image = qt.QImage(filename)
                if image.isNull():
                    msg = qt.QMessageBox(self)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read file %s as an image" % filename)
                    msg.exec_()
                    return
                imagelist.append(image)
                imagenames.append(os.path.basename(filename))

            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            self.widget = ExternalImagesWindow.ExternalImagesWindow(
                parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True
            )
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setImageData(None)
            self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames)
            # data=self.__stackImageData)
            self._showWidget()
            return
コード例 #46
0
    def _shiftFromFile(self):
        stack = self.getStackDataObject()
        if stack is None:
            return
        data = stack.data
        mcaIndex = stack.info.get("McaIndex")
        if not (mcaIndex in [0, -1, 2]):
            raise IndexError("1D index must be 0, 2, or -1")
        filefilter = ["HDF5 Files (*.h5 *.nxs *.hdf)", "CSV 2-column (*.csv)", "ASCII 2-column (*)"]
        filename, ffilter = PyMcaFileDialogs.getFileList(
            parent=None,
            filetypelist=filefilter,
            message="Load",
            mode="OPEN",
            single=True,
            getfilter=True,
            currentfilter=filefilter[0],
        )
        if len(filename):
            if DEBUG:
                print("file name = %s file filter = %s" % (filename, ffilter))
        else:
            if DEBUG:
                print("nothing selected")
            return
        filename = filename[0]
        if ffilter.startswith("HDF5"):
            # browse
            self.__hdf5Dialog = qt.QDialog()
            self.__hdf5Dialog.setWindowTitle("Select your data set by a double click")
            self.__hdf5Dialog.mainLayout = qt.QVBoxLayout(self.__hdf5Dialog)
            self.__hdf5Dialog.mainLayout.setContentsMargins(0, 0, 0, 0)
            self.__hdf5Dialog.mainLayout.setSpacing(0)
            fileModel = HDF5Widget.FileModel()
            fileView = HDF5Widget.HDF5Widget(fileModel)
            hdf5File = fileModel.openFile(filename)
            shiftsDataset = None
            fileView.sigHDF5WidgetSignal.connect(self._hdf5WidgetSlot)
            self.__hdf5Dialog.mainLayout.addWidget(fileView)
            self.__hdf5Dialog.resize(400, 200)
            ret = self.__hdf5Dialog.exec_()
            if not ret:
                return
            shifts = hdf5File[self.__shitfsDataset].value
            hdf5File.close()
        else:
            sf = specfilewrapper.Specfile(filename)
            nScans = len(sf)
            targetScan = None
            for scan in sf:
                if scan.lines() == data.shape[stack.info["McaIndex"]]:
                    targetScan = scan
                    break
            if targetScan is None:
                scan = None
                sf = None
                raise IOError("Number of read lines does not match stack shape")
            shifts = targetScan.data()
            targetScan = None
            scan = None
            sf = None
            if shifts.shape[0] == 3 and shifts.shape[1] == data.shape[stack.info["McaIndex"]]:
                # one column was added (point number)
                shifts = shifts[1:].T

        filename = None
        if not isinstance(data, numpy.ndarray):
            filefilter = ["HDF5 Files (*.h5)"]
            filename = PyMcaFileDialogs.getFileList(
                parent=None,
                filetypelist=filefilter,
                message="Select output file",
                mode="SAVE",
                single=True,
                getfilter=False,
                currentfilter=filefilter[0],
            )
            if len(filename):
                filename = filename[0]
                if DEBUG:
                    print("file name = %s" % filename)
            else:
                raise IOError("No output file selected")
        if filename is not None:
            self.__hdf5 = self.initializeHDF5File(filename)
        crop = False
        if DEBUG:
            result = self.shiftStack(stack, shifts, crop=crop, filename=filename)
        else:
            result = self.__shiftStack(stack, shifts, crop=crop, filename=filename)
            if result is not None:
                # exception occurred
                raise Exception(result[1], result[2], result[3])

        if filename is not None:
            hdf = self.__hdf5
            alignmentGroup = hdf["/entry_000/Alignment"]
            outputShifts = self.getHDF5BufferIntoGroup(
                alignmentGroup, shape=(stack.data.shape[mcaIndex], 2), name="shifts", dtype=numpy.float32
            )
            outputShifts[:, :] = shifts
            attributes = {"interpretation": "image"}
            # fill the axes information
            dataGroup = hdf["/entry_000/Data"]
            if mcaIndex == 0:
                reference_shape = data[0].shape
            else:
                reference_shape = data.shape[0], data.shape[1]
            try:
                activeCurve = self.getActiveCurve()
                if activeCurve is None:
                    activeCurve = self.getAllCurves()[0]
                x, y, legend, info = activeCurve
                dataGroup[info["xlabel"]] = numpy.array(x, dtype=numpy.float32)
                dataGroup[info["xlabel"]].attrs["axis"] = numpy.int32(1)
                axesAttribute = "%s:dim_1:dim_2" % info["xlabel"]
            except:
                if DEBUG:
                    raise
                dataGroup["dim_0"] = numpy.arange(stack.data.shape[mcaIndex]).astype(numpy.float32)
                dataGroup["dim_0"].attrs["axis"] = numpy.int32(1)
                axesAttribute = "dim_0:dim_1:dim_2"
            dataGroup["dim_1"] = numpy.arange(reference_shape[0]).astype(numpy.float32)
            dataGroup["dim_1"].attrs["axis"] = numpy.int32(2)
            dataGroup["dim_2"] = numpy.arange(reference_shape[1]).astype(numpy.float32)
            dataGroup["dim_2"].attrs["axis"] = numpy.int32(3)
            dim2 = numpy.arange(reference_shape[1]).astype(numpy.float32)
            dataGroup["data"].attrs["axes"] = axesAttribute
            self.finishHDF5File(hdf)
        else:
            self.setStack(stack)
コード例 #47
0
    def _loadImageFiles(self):
        if self.getStackDataObject() is None:
            return
        getfilter = True
        fileTypeList = ["PNG Files (*png)",
                        "JPEG Files (*jpg *jpeg)",
                        "IMAGE Files (*)",
                        "DAT Files (*dat)",
                        "CSV Files (*csv)",
                        "EDF Files (*edf)",
                        "EDF Files (*ccd)",
                        "EDF Files (*)"]
        message = "Open image file"
        filenamelist, filefilter = PyMcaFileDialogs.getFileList(parent=None,
                                    filetypelist=fileTypeList,
                                    message=message,
                                    getfilter=getfilter,
                                    single=False,
                                    currentfilter=None)
        if len(filenamelist) < 1:
            return
        imagelist = []
        imagenames= []
        mask = self.getStackSelectionMask()
        if mask is None:
            r, n = self.getStackROIImagesAndNames()
            shape = r[0].shape
        else:
            shape = mask.shape
        extension = qt.safe_str(os.path.splitext(filenamelist[0])[1])
        if (filefilter.split()[0] in ["EDF"]) or \
           (extension.upper() in [".EDF", ".TIF"]):
            for filename in filenamelist:
                #read the edf file
                edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename)

                #the list of images
                keylist = edf.getSourceInfo()['KeyList']
                if len(keylist) < 1:
                    msg = qt.QMessageBox(None)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read image from file")
                    msg.exec_()
                    return

                for key in keylist:
                    #get the data
                    dataObject = edf.getDataObject(key)
                    data = dataObject.data
                    if data.shape[0] not in shape:
                        continue
                    if data.shape[1] not in shape:
                        continue
                    imagename  = dataObject.info.get('Title', "")
                    if imagename != "":
                        imagename += " "
                    imagename += os.path.basename(filename)+" "+key
                    imagelist.append(data)
                    imagenames.append(imagename)
            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            crop = False
            self.widget = StackPluginResultsWindow.StackPluginResultsWindow(parent=None,
                                                    usetab=False)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setStackPluginResults(imagelist,
                                              image_names=imagenames)
            self._showWidget()
            return
        elif extension.lower() in [".csv", ".dat"]:
            # what to do if more than one file selected ?
            from PyMca5.PyMca import specfilewrapper as Specfile
            sf = Specfile.Specfile(filenamelist[0])
            scan = sf[0]
            labels = scan.alllabels()
            data = scan.data()
            scan = None
            sf = None
            if "column" in labels:
                offset = labels.index("column")
                ncols = int(data[offset].max() + 1)
                offset += 1
            else:
                raise IOError("Only images exported as csv supported")
            imagelist = []
            imagenames= []
            for i in range(offset, len(labels)):
                if labels[i].startswith("s("):
                    continue
                tmpData = data[i]
                tmpData.shape = -1, ncols
                imagelist.append(tmpData)
                imagenames.append(labels[i])
            crop = False
            self.widget = StackPluginResultsWindow.StackPluginResultsWindow(parent=None,
                                                    usetab=False)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setStackPluginResults(imagelist,
                                              image_names=imagenames)
            self._showWidget()
            return
        else:
            #Try pure Image formats
            for filename in filenamelist:
                image = qt.QImage(filename)
                if image.isNull():
                    msg = qt.QMessageBox(None)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read file %s as an image" % filename)
                    msg.exec_()
                    return
                imagelist.append(image)
                imagenames.append(os.path.basename(filename))

            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            self.widget = ExternalImagesWindow.ExternalImagesWindow(parent=None,
                                                    rgbwidget=None,
                                                    selection=True,
                                                    colormap=True,
                                                    imageicons=True,
                                                    standalonesave=True)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setImageData(None)
            self.widget.setQImageList(imagelist, shape[1], shape[0],
                                                clearmask=False,
                                                data=None,
                                                imagenames=imagenames)
                                                #data=self.__stackImageData)
            self._showWidget()
            return
コード例 #48
0
    def _loadImageFiles(self):
        if self.getStackDataObject() is None:
            return
        getfilter = True
        fileTypeList = [
            "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)",
            "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)"
        ]
        message = "Open image file"
        filenamelist, filefilter = PyMcaFileDialogs.getFileList(
            parent=None,
            filetypelist=fileTypeList,
            message=message,
            getfilter=getfilter,
            single=False,
            currentfilter=None)
        if len(filenamelist) < 1:
            return
        imagelist = []
        imagenames = []
        mask = self.getStackSelectionMask()
        if mask is None:
            r, n = self.getStackROIImagesAndNames()
            shape = r[0].shape
        else:
            shape = mask.shape
        if filefilter.split()[0] in ["EDF"]:
            for filename in filenamelist:
                #read the edf file
                edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename)

                #the list of images
                keylist = edf.getSourceInfo()['KeyList']
                if len(keylist) < 1:
                    msg = qt.QMessageBox(None)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read image from file")
                    msg.exec_()
                    return

                for key in keylist:
                    #get the data
                    dataObject = edf.getDataObject(key)
                    data = dataObject.data
                    if data.shape[0] not in shape:
                        continue
                    if data.shape[1] not in shape:
                        continue
                    imagename = dataObject.info.get('Title', "")
                    if imagename != "":
                        imagename += " "
                    imagename += os.path.basename(filename) + " " + key
                    imagelist.append(data)
                    imagenames.append(imagename)
            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            crop = False
            self.widget = StackPluginResultsWindow.StackPluginResultsWindow(
                parent=None, usetab=False)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setStackPluginResults(imagelist,
                                              image_names=imagenames)
            self._showWidget()
            return
        else:
            #Try pure Image formats
            for filename in filenamelist:
                image = qt.QImage(filename)
                if image.isNull():
                    msg = qt.QMessageBox(self)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read file %s as an image" % filename)
                    msg.exec_()
                    return
                imagelist.append(image)
                imagenames.append(os.path.basename(filename))

            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            self.widget = ExternalImagesWindow.ExternalImagesWindow(
                parent=None,
                rgbwidget=None,
                selection=True,
                colormap=True,
                imageicons=True,
                standalonesave=True)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setImageData(None)
            self.widget.setQImageList(imagelist,
                                      shape[1],
                                      shape[0],
                                      clearmask=False,
                                      data=None,
                                      imagenames=imagenames)
            #data=self.__stackImageData)
            self._showWidget()
            return
コード例 #49
0
 def browseOutputDir(self):
     fileList = PyMcaFileDialogs.getExistingDirectory(parent=self,
                                  message="Please select output directory",
                                  mode="OPEN")
     if len(fileList):
         self._outdirLine.setText(fileList)
コード例 #50
0
    def _loadImageFiles(self):
        if self.getStackDataObject() is None:
            return
        getfilter = True
        fileTypeList = [
            "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)",
            "DAT Files (*dat)", "CSV Files (*csv)", "EDF Files (*edf)",
            "EDF Files (*ccd)", "EDF Files (*)"
        ]
        message = "Open image file"
        filenamelist, filefilter = PyMcaFileDialogs.getFileList(
            parent=None,
            filetypelist=fileTypeList,
            message=message,
            getfilter=getfilter,
            single=False,
            currentfilter=None)
        if len(filenamelist) < 1:
            return
        imagelist = []
        imagenames = []
        mask = self.getStackSelectionMask()
        if mask is None:
            r, n = self.getStackROIImagesAndNames()
            shape = r[0].shape
        else:
            shape = mask.shape
        extension = qt.safe_str(os.path.splitext(filenamelist[0])[1])
        if (filefilter.split()[0] in ["EDF"]) or \
           (extension.upper() in [".EDF", ".TIF"]):
            for filename in filenamelist:
                #read the edf file
                edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename)

                #the list of images
                keylist = edf.getSourceInfo()['KeyList']
                if len(keylist) < 1:
                    msg = qt.QMessageBox(None)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read image from file")
                    msg.exec_()
                    return

                for key in keylist:
                    #get the data
                    dataObject = edf.getDataObject(key)
                    data = dataObject.data
                    if data.shape[0] not in shape:
                        continue
                    if data.shape[1] not in shape:
                        continue
                    imagename = dataObject.info.get('Title', "")
                    if imagename != "":
                        imagename += " "
                    imagename += os.path.basename(filename) + " " + key
                    imagelist.append(data)
                    imagenames.append(imagename)
            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            crop = False
            self.widget = StackPluginResultsWindow.StackPluginResultsWindow(
                parent=None, usetab=False)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setStackPluginResults(imagelist,
                                              image_names=imagenames)
            self._showWidget()
            return
        elif extension.lower() in [".csv", ".dat"]:
            # what to do if more than one file selected ?
            from PyMca5.PyMca import specfilewrapper as Specfile
            sf = Specfile.Specfile(filenamelist[0])
            scan = sf[0]
            labels = scan.alllabels()
            data = scan.data()
            scan = None
            sf = None
            if "column" in labels:
                offset = labels.index("column")
                ncols = int(data[offset].max() + 1)
                offset += 1
            else:
                raise IOError("Only images exported as csv supported")
            imagelist = []
            imagenames = []
            for i in range(offset, len(labels)):
                if labels[i].startswith("s("):
                    continue
                tmpData = data[i]
                tmpData.shape = -1, ncols
                imagelist.append(tmpData)
                imagenames.append(labels[i])
            crop = False
            self.widget = StackPluginResultsWindow.StackPluginResultsWindow(
                parent=None, usetab=False)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setStackPluginResults(imagelist,
                                              image_names=imagenames)
            self._showWidget()
            return
        else:
            #Try pure Image formats
            for filename in filenamelist:
                image = qt.QImage(filename)
                if image.isNull():
                    msg = qt.QMessageBox(None)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Cannot read file %s as an image" % filename)
                    msg.exec_()
                    return
                imagelist.append(image)
                imagenames.append(os.path.basename(filename))

            if len(imagelist) == 0:
                msg = qt.QMessageBox(None)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot read a valid image from the file")
                msg.exec_()
                return
            self.widget = ExternalImagesWindow.ExternalImagesWindow(
                parent=None,
                rgbwidget=None,
                selection=True,
                colormap=True,
                imageicons=True,
                standalonesave=True)
            self.widget.buildAndConnectImageButtonBox()
            self.widget.sigMaskImageWidgetSignal.connect(self.mySlot)
            self.widget.setImageData(None)
            self.widget.setQImageList(imagelist,
                                      shape[1],
                                      shape[0],
                                      clearmask=False,
                                      data=None,
                                      imagenames=imagenames)
            #data=self.__stackImageData)
            self._showWidget()
            return
コード例 #51
0
ファイル: EnergyTable.py プロジェクト: waltpessoa/pymca
    def saveButtonClicked(self):
        energylist, weightlist, flaglist, scatterlist = self.table.getParameters(
        )
        if self.outputDir is None:
            if self.inputDir is not None:
                self.outputDir = self.inputDir
            else:
                self.outputDir = PyMcaDirs.outputDir
        wdir = self.outputDir
        format_list = [
            '";"-separated CSV *.csv', '","-separated CSV *.csv',
            '"tab"-separated CSV *.csv'
        ]
        if self.outputFilter is None:
            self.outputFilter = format_list[0]
        outfile, filterused = PyMcaFileDialogs.getFileList(
            self,
            filetypelist=format_list,
            mode="SAVE",
            message="Output File Selection",
            currentdir=wdir,
            currentfilter=self.outputFilter,
            getfilter=True,
            single=True)
        if len(outfile):
            outputFile = qt.safe_str(outfile[0])
        else:
            return
        self.outputFilter = qt.safe_str(filterused)
        filterused = self.outputFilter.split()
        try:
            self.outputDir = os.path.dirname(outputFile)
            PyMcaDirs.outputDir = os.path.dirname(outputFile)
        except:
            self.outputDir = "."
        if not outputFile.endswith('.csv'):
            outputFile += '.csv'
        #always overwrite
        if os.path.exists(outputFile):
            os.remove(outputFile)
        try:
            if sys.version < "3.0.0":
                ffile = open(outputFile, 'wb')
            else:
                ffile = open(outputFile, 'w')
        except IOError:
            msg = qt.QMessageBox(self)
            msg.setIcon(qt.QMessageBox.Critical)
            msg.setText("Input Output Error: %s" % (sys.exc_info()[1]))
            msg.exec_()
            return
        if "," in filterused[0]:
            csv = ","
        elif ";" in filterused[0]:
            csv = ";"
        else:
            csv = "\t"

        ffile.write('"energy"%s"weight"%s"flag"%s"scatter"\n' %
                    (csv, csv, csv))
        #write the scatter lines in first instance
        alreadysaved = []
        for i in range(len(energylist)):
            if (energylist[i] is not None) and \
               (scatterlist[i] == 1):
                ffile.write("%f%s%f%s%d%s%d\n" % \
                   (energylist[i], csv,
                    weightlist[i], csv,
                    flaglist[i], csv,
                    scatterlist[i]))
                alreadysaved.append(i)

        for i in range(len(energylist)):
            if energylist[i] is not None:
                if i not in alreadysaved:
                    ffile.write("%f%s%f%s%d%s%d\n" % \
                       (energylist[i], csv,
                        weightlist[i], csv,
                        flaglist[i], csv,
                        scatterlist[i]))
        ffile.close()