def onProcessStackFinished(self): _logger.debug("Stack proccessed") self._status = "Stack Fitting finished" if self.fixedLenghtOutput: self._status = "Writing output files" nParameters = len(self._parameters) datalist = [None] * (2*len(self._sigmas.keys())+1) labels = [] for i in range(nParameters): parameter = self._parameters[i] datalist[2*i] = self._images[parameter] datalist[2*i + 1] = self._sigmas[parameter] labels.append(parameter) labels.append('s(%s)' % parameter) datalist[-1] = self._images['chisq'] labels.append('chisq') filenames = self.getOutputFileNames() csvName = filenames['csv'] edfName = filenames['edf'] ArraySave.save2DArrayListAsASCII(datalist, csvName, labels=labels, csv=True, csvseparator=";") ArraySave.save2DArrayListAsEDF(datalist, edfName, labels = labels, dtype=numpy.float32)
def _handleSaveIcon(self, event): """Handle save icon events. Get current active image and save it as a file. """ if event['event'] == 'iconClicked' and event['key'] == 'save': imageData = self.getActiveImage() if imageData is None: qt.QMessageBox.information(self, "No Data", "No image to be saved") return data, legend, info, pixmap = imageData imageList = [data] labels = ['value'] # Copied from MaskImageWidget.saveImageList filename = self.getOutputFileName() if not len(filename): return # Add PNG and JPG adapted from PlotWindow.defaultSaveAction if 'WIDGET' in self._saveFilter.upper(): fformat = self._saveFilter[-3:].upper() pixmap = qt.QPixmap.grabWidget(self._imagePlot) # Use the following instead to grab the image + histograms # pixmap = qt.QPixmap.grabWidget(self) if not pixmap.save(filename, fformat): msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setInformativeText(str(sys.exc_info()[1])) msg.setDetailedText(traceback.format_exc()) msg.exec_() return if filename.lower().endswith(".edf"): ArraySave.save2DArrayListAsEDF(imageList, filename, labels) elif filename.lower().endswith(".csv"): if "," in self._saveFilter: csvseparator = "," elif ";" in self._saveFilter: csvseparator = ";" else: csvseparator = "\t" ArraySave.save2DArrayListAsASCII(imageList, filename, labels, csv=True, csvseparator=csvseparator) else: ArraySave.save2DArrayListAsASCII(imageList, filename, labels, csv=False)
def saveImageList(self, filename, imageList, labels, csvseparator=None): if not imageList: qt.QMessageBox.information( self, "No Data", "Image list is empty.\nNothing to be saved") return if filename.lower().endswith(".edf"): ArraySave.save2DArrayListAsEDF(imageList, filename, labels) elif filename.lower().endswith(".tif"): ArraySave.save2DArrayListAsMonochromaticTiff(imageList, filename, labels) elif filename.lower().endswith(".csv"): assert csvseparator is not None ArraySave.save2DArrayListAsASCII(imageList, filename, labels, csv=True, csvseparator=csvseparator) else: ArraySave.save2DArrayListAsASCII(imageList, filename, labels, csv=False)
def saveImageList(self, filename, imageList, labels, csvseparator=None): if not imageList: qt.QMessageBox.information( self, "No Data", "Image list is empty.\nNothing to be saved") return if filename.lower().endswith(".edf"): ArraySave.save2DArrayListAsEDF(imageList, filename, labels) elif filename.lower().endswith(".tif"): ArraySave.save2DArrayListAsMonochromaticTiff( imageList, filename, labels) elif filename.lower().endswith(".csv"): assert csvseparator is not None ArraySave.save2DArrayListAsASCII(imageList, filename, labels, csv=True, csvseparator=csvseparator) else: ArraySave.save2DArrayListAsASCII(imageList, filename, labels, csv=False)
def _threadFinished(self): result = self.thread.result self.thread = None if type(result) == type((1, )): #if we receive a tuple there was an error if len(result): if result[0] == "Exception": # somehow this exception is not caught raise Exception(result[1], result[2]) #, result[3]) return if 'concentrations' in result: imageNames = result['names'] images = numpy.concatenate( (result['parameters'], result['concentrations']), axis=0) else: images = result['parameters'] imageNames = result['names'] nImages = images.shape[0] self._widget = StackPluginResultsWindow.StackPluginResultsWindow(\ usetab=False) self._widget.buildAndConnectImageButtonBox(replace=True, multiple=True) qt = StackPluginResultsWindow.qt self._widget.sigMaskImageWidgetSignal.connect(self.mySlot) self._widget.setStackPluginResults(images, image_names=imageNames) self._showWidget() # save to output directory parameters = self.configurationWidget.getParameters() outputDir = parameters["output_dir"] if outputDir in [None, ""]: if DEBUG: print("Nothing to be saved") return if parameters["file_root"] is None: fileRoot = "" else: fileRoot = parameters["file_root"].replace(" ", "") if fileRoot in [None, ""]: fileRoot = "images" if not os.path.exists(outputDir): os.mkdir(outputDir) imagesDir = os.path.join(outputDir, "IMAGES") if not os.path.exists(imagesDir): os.mkdir(imagesDir) imageList = [None] * (nImages + len(result['uncertainties'])) fileImageNames = [None] * (nImages + len(result['uncertainties'])) j = 0 for i in range(nImages): name = imageNames[i].replace(" ", "-") fileImageNames[j] = name imageList[j] = images[i] j += 1 if not imageNames[i].startswith("C("): # fitted parameter fileImageNames[j] = "s(%s)" % name imageList[j] = result['uncertainties'][i] j += 1 fileName = os.path.join(imagesDir, fileRoot + ".edf") ArraySave.save2DArrayListAsEDF(imageList, fileName, labels=fileImageNames) fileName = os.path.join(imagesDir, fileRoot + ".csv") ArraySave.save2DArrayListAsASCII(imageList, fileName, csv=True, labels=fileImageNames) if parameters["tiff"]: i = 0 for i in range(len(fileImageNames)): label = fileImageNames[i] if label.startswith("s("): continue elif label.startswith("C("): mass_fraction = "_" + label[2:-1] + "_mass_fraction" else: mass_fraction = "_" + label fileName = os.path.join(imagesDir, fileRoot + mass_fraction + ".tif") ArraySave.save2DArrayListAsMonochromaticTiff( [imageList[i]], fileName, labels=[label], dtype=numpy.float32)
def _threadFinished(self): result = self.thread.result self.thread = None if type(result) == type((1,)): #if we receive a tuple there was an error if len(result): if result[0] == "Exception": # somehow this exception is not caught raise Exception(result[1], result[2])#, result[3]) return imageNames = result['names'] images = result["images"] nImages = images.shape[0] self._widget = StackPluginResultsWindow.StackPluginResultsWindow(\ usetab=False) self._widget.buildAndConnectImageButtonBox(replace=True, multiple=True) qt = StackPluginResultsWindow.qt self._widget.sigMaskImageWidgetSignal.connect(self.mySlot) self._widget.setStackPluginResults(images, image_names=imageNames) self._showWidget() # save to output directory parameters = self.configurationWidget.getParameters() outputDir = parameters["output_dir"] if outputDir in [None, ""]: if DEBUG: print("Nothing to be saved") return if parameters["file_root"] is None: fileRoot = "" else: fileRoot = parameters["file_root"].replace(" ","") if fileRoot in [None, ""]: fileRoot = "images" if not os.path.exists(outputDir): os.mkdir(outputDir) imagesDir = os.path.join(outputDir, "IMAGES") if not os.path.exists(imagesDir): os.mkdir(imagesDir) imageList = [None] * (nImages) fileImageNames = [None] * (nImages) j = 0 for i in range(nImages): name = imageNames[i].replace(" ","-") fileImageNames[j] = name imageList[j] = images[i] j += 1 fileName = os.path.join(imagesDir, fileRoot+".edf") ArraySave.save2DArrayListAsEDF(imageList, fileName, labels=fileImageNames) fileName = os.path.join(imagesDir, fileRoot+".csv") ArraySave.save2DArrayListAsASCII(imageList, fileName, csv=True, labels=fileImageNames) if parameters["tiff"]: i = 0 for i in range(len(fileImageNames)): label = fileImageNames[i] mass_fraction = "_" + label fileName = os.path.join(imagesDir, fileRoot + mass_fraction + ".tif") ArraySave.save2DArrayListAsMonochromaticTiff([imageList[i]], fileName, labels=[label], dtype=numpy.float32)
def threadFinished(self): result = self.thread.result self.thread = None if type(result) == type((1,)): #if we receive a tuple there was an error if len(result): if result[0] == "Exception": # somehow this exception is not caught raise Exception(result[1], result[2]) return if 'concentrations' in result: imageNames = result['names'] images = numpy.concatenate((result['parameters'], result['concentrations']), axis=0) else: images = result['parameters'] imageNames = result['names'] nImages = images.shape[0] self._widget = StackPluginResultsWindow.StackPluginResultsWindow(\ usetab=False) self._widget.buildAndConnectImageButtonBox() qt = StackPluginResultsWindow.qt self._widget.sigMaskImageWidgetSignal.connect(self.mySlot) self._widget.setStackPluginResults(images, image_names=imageNames) self._showWidget() # save to output directory parameters = self.configurationWidget.getParameters() outputDir = parameters["output_dir"] if outputDir in [None, ""]: if DEBUG: print("Nothing to be saved") return if parameters["file_root"] is None: fileRoot = "" else: fileRoot = parameters["file_root"].replace(" ","") if fileRoot in [None, ""]: fileRoot = "images" if not os.path.exists(outputDir): os.mkdir(outputDir) imagesDir = os.path.join(outputDir, "IMAGES") if not os.path.exists(imagesDir): os.mkdir(imagesDir) imageList = [None] * (nImages + len(result['uncertainties'])) fileImageNames = [None] * (nImages + len(result['uncertainties'])) j = 0 for i in range(nImages): name = imageNames[i].replace(" ","-") fileImageNames[j] = name imageList[j] = images[i] j += 1 if not imageNames[i].startswith("C("): # fitted parameter fileImageNames[j] = "s(%s)" % name imageList[j] = result['uncertainties'][i] j += 1 fileName = os.path.join(imagesDir, fileRoot+".edf") ArraySave.save2DArrayListAsEDF(imageList, fileName, labels=fileImageNames) fileName = os.path.join(imagesDir, fileRoot+".csv") ArraySave.save2DArrayListAsASCII(imageList, fileName, csv=True, labels=fileImageNames)