def getStack(self, filelist=None, imagestack=None): if filelist in [None, []]: filelist, filefilter = self._getStackOfFiles(getfilter=True) else: filefilter = "" if not len(filelist): return None if filefilter in ["", "All Files (*)"]: if HDF5: if h5py.is_hdf5(filelist[0]): filefilter = "HDF5" fileindex = 0 begin = None end = None aifirafile = False if len(filelist): PyMcaDirs.inputDir = os.path.dirname(filelist[0]) #if we are dealing with HDF5, no more tests needed if not filefilter.upper().startswith('HDF5'): f = open(filelist[0], 'rb') #read 10 characters if sys.version < '3.0': line = f.read(10) else: try: line = str(f.read(10).decode()) except UnicodeDecodeError: #give a dummy value line = " " f.close() omnicfile = False if filefilter.upper().startswith('HDF5'): stack = QHDF5Stack1D.QHDF5Stack1D(filelist) omnicfile = True elif filefilter.upper().startswith('OPUS-DPT'): stack = OpusDPTMap.OpusDPTMap(filelist[0]) omnicfile = True elif filefilter.upper().startswith("AIFIRA"): stack = AifiraMap.AifiraMap(filelist[0]) omnicfile = True aifirafile = True elif filefilter.upper().startswith("SUPAVISIO"): stack = SupaVisioMap.SupaVisioMap(filelist[0]) omnicfile = True elif filefilter.upper().startswith("TEXTIMAGE"): imagestack = True fileindex = 0 stack = TextImageStack.TextImageStack(imagestack=True) elif filefilter.upper().startswith("IMAGE") and\ (filelist[0].upper().endswith("TIF") or\ filelist[0].upper().endswith("TIFF")): stack = TiffStack.TiffStack(imagestack=True) elif filefilter.upper().startswith("RENISHAW"): stack = RenishawMap.RenishawMap(filelist[0]) omnicfile = True elif filefilter == "" and\ (filelist[0].upper().endswith("TIF") or\ filelist[0].upper().endswith("TIFF")): stack = TiffStack.TiffStack(imagestack=True) elif filefilter.upper().startswith("IMAGE"): if imagestack is None: imagestack = True fileindex = 0 stack = QStack(imagestack=imagestack) elif line[0] == "{": if filelist[0].upper().endswith("RAW"): if imagestack is None: imagestack = True stack = QStack(imagestack=imagestack) elif line[0:2] in ["II", "MM"]: if imagestack is None: imagestack = True stack = QStack(imagestack=imagestack) elif line.startswith('Spectral'): stack = OmnicMap.OmnicMap(filelist[0]) omnicfile = True elif line.startswith('#\tDate'): stack = LuciaMap.LuciaMap(filelist[0]) omnicfile = True elif filelist[0].upper().endswith("RAW.GZ")or\ filelist[0].upper().endswith("EDF.GZ")or\ filelist[0].upper().endswith("CCD.GZ")or\ filelist[0].upper().endswith("RAW.BZ2")or\ filelist[0].upper().endswith("EDF.BZ2")or\ filelist[0].upper().endswith("CCD.BZ2")or\ filelist[0].upper().endswith(".CBF"): if imagestack is None: imagestack = True stack = QStack(imagestack=imagestack) elif filelist[0].upper().endswith(".RTX"): stack = RTXMap.RTXMap(filelist[0]) omnicfile = True elif filelist[0][-4:].upper() in ["PIGE", "PIGE"]: stack = SupaVisioMap.SupaVisioMap(filelist[0]) omnicfile = True elif filelist[0][-3:].upper() in ["RBS"]: stack = SupaVisioMap.SupaVisioMap(filelist[0]) omnicfile = True elif filelist[0][-3:].upper() in ["SPE"] and\ (line[0] not in ['$', '#']): #Roper Scientific format #handle it as MarCCD stack stack = QStack(imagestack=True) elif MRCMap.isMRCFile(filelist[0]): stack = MRCMap.MRCMap(filelist[0]) omnicfile = True imagestack = True elif LispixMap.isLispixMapFile(filelist[0]): stack = LispixMap.LispixMap(filelist[0]) omnicfile = True elif RenishawMap.isRenishawMapFile(filelist[0]): # This is dangerous. Any .txt file with four # columns would be accepted as a Renishaw Map # by other hand, I do not know how to handle # that case as a stack. stack = RenishawMap.RenishawMap(filelist[0]) omnicfile = True else: stack = QSpecFileStack() if len(filelist) == 1: if not omnicfile: try: stack.loadIndexedStack(filelist[0], begin, end, fileindex=fileindex) except: msg = qt.QMessageBox() msg.setIcon(qt.QMessageBox.Critical) msg.setText("%s" % sys.exc_info()[1]) if QTVERSION < '4.0.0': msg.exec_loop() else: msg.exec_() if DEBUG: raise elif len(filelist): if not omnicfile: try: stack.loadFileList(filelist, fileindex=fileindex) except: msg = qt.QMessageBox() msg.setIcon(qt.QMessageBox.Critical) msg.setText("%s" % sys.exc_info()[1]) if QTVERSION < '4.0.0': msg.exec_loop() else: msg.exec_() if DEBUG: raise if aifirafile: masterStack = DataObject.DataObject() masterStack.info = copy.deepcopy(stack.info) masterStack.data = stack.data[:, :, 0:1024] masterStack.info['Dim_2'] = int(masterStack.info['Dim_2'] / 2) slaveStack = DataObject.DataObject() slaveStack.info = copy.deepcopy(stack.info) slaveStack.data = stack.data[:, :, 1024:] slaveStack.info['Dim_2'] = int(slaveStack.info['Dim_2'] / 2) return [masterStack, slaveStack] else: return stack
def getStack(self, filelist=None, imagestack=None): if filelist in [None, []]: filelist, filefilter = self._getStackOfFiles(getfilter=True) else: filefilter = "" if not len(filelist): return None if filefilter in ["", "All Files (*)"]: if HDF5: if h5py.is_hdf5(filelist[0]): filefilter = "HDF5" fileindex = 0 begin = None end = None aifirafile = False if len(filelist): PyMcaDirs.inputDir = os.path.dirname(filelist[0]) #if we are dealing with HDF5, no more tests needed if not filefilter.upper().startswith('HDF5'): f = open(filelist[0], 'rb') #read 10 characters if sys.version < '3.0': line = f.read(10) else: try: line = str(f.read(10).decode()) except UnicodeDecodeError: #give a dummy value line = " " f.close() omnicfile = False if filefilter.upper().startswith('HDF5'): stack = QHDF5Stack1D.QHDF5Stack1D(filelist) omnicfile = True elif filefilter.upper().startswith('OPUS-DPT'): stack = OpusDPTMap.OpusDPTMap(filelist[0]) omnicfile = True elif filefilter.upper().startswith("AIFIRA"): stack = AifiraMap.AifiraMap(filelist[0]) omnicfile = True aifirafile = True elif filefilter.upper().startswith("SUPAVISIO"): stack = SupaVisioMap.SupaVisioMap(filelist[0]) omnicfile = True elif filefilter.upper().startswith("TEXTIMAGE"): imagestack = True fileindex = 0 stack = TextImageStack.TextImageStack(imagestack=True) elif filefilter.upper().startswith("IMAGE") and\ (filelist[0].upper().endswith("TIF") or\ filelist[0].upper().endswith("TIFF")): stack = TiffStack.TiffStack(imagestack=True) elif filefilter.upper().startswith("RENISHAW"): stack = RenishawMap.RenishawMap(filelist[0]) omnicfile = True elif filefilter == "" and\ (filelist[0].upper().endswith("TIF") or\ filelist[0].upper().endswith("TIFF")): stack = TiffStack.TiffStack(imagestack=True) elif filefilter.upper().startswith("IMAGE"): if imagestack is None: imagestack = True fileindex = 0 stack = QStack(imagestack=imagestack) elif line[0] == "{": if filelist[0].upper().endswith("RAW"): if imagestack is None: imagestack=True stack = QStack(imagestack=imagestack) elif line[0:2] in ["II", "MM"]: if imagestack is None: imagestack = True stack = QStack(imagestack=imagestack) elif line.startswith('Spectral'): stack = OmnicMap.OmnicMap(filelist[0]) omnicfile = True elif line.startswith('#\tDate'): stack = LuciaMap.LuciaMap(filelist[0]) omnicfile = True elif filelist[0].upper().endswith("RAW.GZ")or\ filelist[0].upper().endswith("EDF.GZ")or\ filelist[0].upper().endswith("CCD.GZ")or\ filelist[0].upper().endswith("RAW.BZ2")or\ filelist[0].upper().endswith("EDF.BZ2")or\ filelist[0].upper().endswith("CCD.BZ2")or\ filelist[0].upper().endswith(".CBF"): if imagestack is None: imagestack = True stack = QStack(imagestack=imagestack) elif filelist[0].upper().endswith(".RTX"): stack = RTXMap.RTXMap(filelist[0]) omnicfile = True elif filelist[0][-4:].upper() in ["PIGE", "PIGE"]: stack = SupaVisioMap.SupaVisioMap(filelist[0]) omnicfile = True elif filelist[0][-3:].upper() in ["RBS"]: stack = SupaVisioMap.SupaVisioMap(filelist[0]) omnicfile = True elif filelist[0][-3:].upper() in ["SPE"] and\ (line[0] not in ['$', '#']): #Roper Scientific format #handle it as MarCCD stack stack = QStack(imagestack=True) elif MRCMap.isMRCFile(filelist[0]): stack = MRCMap.MRCMap(filelist[0]) omnicfile = True imagestack = True elif LispixMap.isLispixMapFile(filelist[0]): stack = LispixMap.LispixMap(filelist[0]) omnicfile = True elif RenishawMap.isRenishawMapFile(filelist[0]): # This is dangerous. Any .txt file with four # columns would be accepted as a Renishaw Map # by other hand, I do not know how to handle # that case as a stack. stack = RenishawMap.RenishawMap(filelist[0]) omnicfile = True else: stack = QSpecFileStack() if len(filelist) == 1: if not omnicfile: try: stack.loadIndexedStack(filelist[0], begin, end, fileindex=fileindex) except: msg = qt.QMessageBox() msg.setIcon(qt.QMessageBox.Critical) msg.setText("%s" % sys.exc_info()[1]) if QTVERSION < '4.0.0': msg.exec_loop() else: msg.exec_() if DEBUG: raise elif len(filelist): if not omnicfile: try: stack.loadFileList(filelist, fileindex=fileindex) except: msg = qt.QMessageBox() msg.setIcon(qt.QMessageBox.Critical) msg.setText("%s" % sys.exc_info()[1]) if QTVERSION < '4.0.0': msg.exec_loop() else: msg.exec_() if DEBUG: raise if aifirafile: masterStack = DataObject.DataObject() masterStack.info = copy.deepcopy(stack.info) masterStack.data = stack.data[:, :, 0:1024] masterStack.info['Dim_2'] = int(masterStack.info['Dim_2'] / 2) slaveStack = DataObject.DataObject() slaveStack.info = copy.deepcopy(stack.info) slaveStack.data = stack.data[:, :, 1024:] slaveStack.info['Dim_2'] = int(slaveStack.info['Dim_2'] / 2) return [masterStack, slaveStack] else: return stack