def showData(cls): EDVerbose.screen("*" * 20 + "EDPluginControlAlignStackv1_0" + "*" * 20) EDVerbose.screen("Reference Frame: %s" % cls.__iRefFrame) if len(cls.__dictRelShift) < len(cls.__dictAbsShift): mydict = cls.__dictAbsShift.copy() else: mydict = cls.__dictRelShift.copy() lstTxt = [] for i in mydict: txt = "Frame %4i:\t" % i rela = cls.__dictRelShift.get(i) abso = cls.__dictAbsShift.get(i) if rela: txt += "relative: (%.3f, %.3f)\t" % rela else: txt += "relative: %12s\t" % rela if abso: txt += "absolute: (%.3f, %.3f)" % abso else: txt += "absolute: %12s" % abso lstTxt.append(txt) EDVerbose.screen(os.linesep.join(lstTxt)) items = EDPluginAccumulatorv1_0.getItems() items.sort() EDVerbose.screen("Items in the accumulator: %s" % (items)) querylist = [" "] + [ str(i) for i in EDPluginAccumulatorv1_0.getQueries().keys() ] EDVerbose.screen("Queries in the accumulator: " + os.linesep.join(querylist))
def showData(cls): EDVerbose.screen("*"*20 + "EDPluginControlAlignStackv1_0" + "*" * 20) EDVerbose.screen("Reference Frame: %s" % cls.__iRefFrame) if len(cls.__dictRelShift) < len(cls.__dictAbsShift): mydict = cls.__dictAbsShift.copy() else: mydict = cls.__dictRelShift.copy() lstTxt = [] for i in mydict: txt = "Frame %4i:\t" % i rela = cls.__dictRelShift.get(i) abso = cls.__dictAbsShift.get(i) if rela: txt += "relative: (%.3f, %.3f)\t" % rela else: txt += "relative: %12s\t" % rela if abso: txt += "absolute: (%.3f, %.3f)" % abso else: txt += "absolute: %12s" % abso lstTxt.append(txt) EDVerbose.screen(os.linesep.join(lstTxt)) items = EDPluginAccumulatorv1_0.getItems() items.sort() EDVerbose.screen("Items in the accumulator: %s" % (items)) querylist = [" "] + [ str(i) for i in EDPluginAccumulatorv1_0.getQueries().keys()] EDVerbose.screen("Queries in the accumulator: " + os.linesep.join(querylist))
def doSuccessExecAccumultor(self, _edPlugin=None): with self.semAccumulator: self.DEBUG("EDPluginControlAlignStackv1_0.doSuccessExecAccumultor") self.retrieveSuccessMessages(_edPlugin, "EDPluginControlAlignStackv1_0.doSuccessExecAccumultor") for query in _edPlugin.dataOutput.getQuery(): self.addExtraTime(60) _edPlugin.addExtraTime(60) accType = query.getItem()[0].getValue().split()[0] listInt = [int(i.getValue().split()[1]) for i in query.getItem()] if accType == "raw": listFrame = [self.getFrameRef(i) for i in listInt] xsdata = XSDataInputMeasureOffset(image=listFrame) doSIFT = False if self.xsdMeasureOffset is not None: xsdata.setCropBorders(self.xsdMeasureOffset.getCropBorders()) xsdata.setSmoothBorders(self.xsdMeasureOffset.getSmoothBorders()) xsdata.setBackgroundSubtraction(self.xsdMeasureOffset.getRemoveBackground()) if self.xsdMeasureOffset.useSift is not None: doSIFT = self.xsdMeasureOffset.useSift.value if max(listInt) > EDPluginControlAlignStackv1_0.__iRefFrame: listInt.sort() else: listInt.sort(reverse=True) xsdata.setIndex([XSDataInteger(i) for i in listInt ]) if doSIFT: edPluginExecMeasure = self.loadPlugin(self.__strControlledPluginMeasureSIFT) else: edPluginExecMeasure = self.loadPlugin(self.__strControlledPluginMeasureFFT) edPluginExecMeasure.setDataInput(xsdata) edPluginExecMeasure.connectSUCCESS(self.doSuccessExecMeasureOffset) edPluginExecMeasure.connectFAILURE(self.doFailureExecMeasureOffset) self.queue.put(edPluginExecMeasure) elif accType == "shift": shift_1 = 0.0 shift_2 = 0.0 for frame in listInt: shift_1 += EDPluginControlAlignStackv1_0.__dictRelShift[frame][0] shift_2 += EDPluginControlAlignStackv1_0.__dictRelShift[frame][1] if listInt[0] > EDPluginControlAlignStackv1_0.__iRefFrame: iFrameShift = max(listInt) else: iFrameShift = min(listInt) EDPluginControlAlignStackv1_0.__dictAbsShift[iFrameShift] = (shift_1, shift_2) self.screen("Frame number %i has absolute offset of %.3f,%.3f" % (iFrameShift, shift_1, shift_2)) edPluginExecShift = self.loadPlugin(self.__strControlledPluginShift) edPluginExecShift.dataInput = XSDataInputShiftImage(index=XSDataInteger(iFrameShift), offset=[XSDataDouble(shift_1), XSDataDouble(shift_2)], inputImage=self.getFrameRef(iFrameShift), outputImage=XSDataImageExt(shared=XSDataString("Shifted-%06i" % iFrameShift))) edPluginExecShift.connectSUCCESS(self.doSuccessExecShiftImage) edPluginExecShift.connectFAILURE(self.doFailureExecShiftImage) self.queue.put(edPluginExecShift) self.DEBUG("Items: %s" % EDPluginAccumulatorv1_0.getItems()) self.DEBUG("Queries: %s" % EDPluginAccumulatorv1_0.getQueries())
def uploadReferenceFrame(self, entry): paths = entry.split(":") if len(paths) == 1 and os.path.isfile(paths[0]): obj = fabio.open(paths[0]).data EDVerbose.WARNING("Got reference frame %s via fabio" % entry) EDPluginControlAlignStackv1_0.addFrame(-1, obj) EDPluginAccumulatorv1_0.addItem(XSDataString("raw -001")) self.updateAttrRefImage(obj) elif len(paths) == 2 and os.path.isfile(paths[0]): hdf = h5py.File(paths[0]) if paths[1] in hdf: obj = hdf[paths[1]] if obj.__class__.__name__ == "Group": if self.REFERENCE_FRAME_NAME in obj: data = obj[self.REFERENCE_FRAME_NAME][:] EDPluginControlAlignStackv1_0.addFrame(-1, data) EDPluginAccumulatorv1_0.addItem("raw -001") self.updateAttrRefImage(data) else: EDVerbose.ERROR( "HDF5: No '%s' in group %s from %s" % (self.REFERENCE_FRAME_NAME, paths[1], paths[0]) ) elif obj.__class__.__name__ == "Dataset": data = obj[:] EDPluginControlAlignStackv1_0.addFrame(-1, data) EDPluginAccumulatorv1_0.addItem(XSDataString("raw -001")) self.updateAttrRefImage(data) else: EDVerbose.ERROR("HDF5: No such internal path %s in %s" % (paths[1], paths[0])) else: EDVerbose.ERROR("No such entry %s" % entry)
def uploadReferenceFrame(self, entry): paths = entry.split(":") if len(paths) == 1 and os.path.isfile(paths[0]): obj = fabio.open(paths[0]).data EDVerbose.WARNING("Got reference frame %s via fabio" % entry) EDPluginControlAlignStackv1_0.addFrame(-1, obj) EDPluginAccumulatorv1_0.addItem(XSDataString("raw -001")) self.updateAttrRefImage(obj) elif len(paths) == 2 and os.path.isfile(paths[0]): hdf = h5py.File(paths[0]) if paths[1] in hdf: obj = hdf[paths[1]] if obj.__class__.__name__ == "Group": if self.REFERENCE_FRAME_NAME in obj: data = obj[self.REFERENCE_FRAME_NAME][:] EDPluginControlAlignStackv1_0.addFrame(-1, data) EDPluginAccumulatorv1_0.addItem("raw -001") self.updateAttrRefImage(data) else: EDVerbose.ERROR("HDF5: No '%s' in group %s from %s" % (self.REFERENCE_FRAME_NAME, paths[1], paths[0])) elif obj.__class__.__name__ == "Dataset": data = obj[:] EDPluginControlAlignStackv1_0.addFrame(-1, data) EDPluginAccumulatorv1_0.addItem(XSDataString("raw -001")) self.updateAttrRefImage(data) else: EDVerbose.ERROR("HDF5: No such internal path %s in %s" % (paths[1], paths[0])) else: EDVerbose.ERROR("No such entry %s" % entry)
def doSuccessExecAccumultor(self, _edPlugin=None): with self.semAccumulator: self.DEBUG("EDPluginControlAlignStackv1_0.doSuccessExecAccumultor") self.retrieveSuccessMessages( _edPlugin, "EDPluginControlAlignStackv1_0.doSuccessExecAccumultor") for query in _edPlugin.dataOutput.getQuery(): self.addExtraTime(60) _edPlugin.addExtraTime(60) accType = query.getItem()[0].getValue().split()[0] listInt = [ int(i.getValue().split()[1]) for i in query.getItem() ] if accType == "raw": listFrame = [self.getFrameRef(i) for i in listInt] xsdata = XSDataInputMeasureOffset(image=listFrame) doSIFT = False if self.xsdMeasureOffset is not None: xsdata.setCropBorders( self.xsdMeasureOffset.getCropBorders()) xsdata.setSmoothBorders( self.xsdMeasureOffset.getSmoothBorders()) xsdata.setBackgroundSubtraction( self.xsdMeasureOffset.getRemoveBackground()) if self.xsdMeasureOffset.useSift is not None: doSIFT = self.xsdMeasureOffset.useSift.value if max(listInt ) > EDPluginControlAlignStackv1_0.__iRefFrame: listInt.sort() else: listInt.sort(reverse=True) xsdata.setIndex([XSDataInteger(i) for i in listInt]) if doSIFT: edPluginExecMeasure = self.loadPlugin( self.__strControlledPluginMeasureSIFT) else: edPluginExecMeasure = self.loadPlugin( self.__strControlledPluginMeasureFFT) edPluginExecMeasure.setDataInput(xsdata) edPluginExecMeasure.connectSUCCESS( self.doSuccessExecMeasureOffset) edPluginExecMeasure.connectFAILURE( self.doFailureExecMeasureOffset) self.queue.put(edPluginExecMeasure) elif accType == "shift": shift_1 = 0.0 shift_2 = 0.0 for frame in listInt: shift_1 += EDPluginControlAlignStackv1_0.__dictRelShift[ frame][0] shift_2 += EDPluginControlAlignStackv1_0.__dictRelShift[ frame][1] if listInt[0] > EDPluginControlAlignStackv1_0.__iRefFrame: iFrameShift = max(listInt) else: iFrameShift = min(listInt) EDPluginControlAlignStackv1_0.__dictAbsShift[ iFrameShift] = (shift_1, shift_2) self.screen( "Frame number %i has absolute offset of %.3f,%.3f" % (iFrameShift, shift_1, shift_2)) edPluginExecShift = self.loadPlugin( self.__strControlledPluginShift) edPluginExecShift.dataInput = XSDataInputShiftImage( index=XSDataInteger(iFrameShift), offset=[XSDataDouble(shift_1), XSDataDouble(shift_2)], inputImage=self.getFrameRef(iFrameShift), outputImage=XSDataImageExt( shared=XSDataString("Shifted-%06i" % iFrameShift))) edPluginExecShift.connectSUCCESS( self.doSuccessExecShiftImage) edPluginExecShift.connectFAILURE( self.doFailureExecShiftImage) self.queue.put(edPluginExecShift) self.DEBUG("Items: %s" % EDPluginAccumulatorv1_0.getItems()) self.DEBUG("Queries: %s" % EDPluginAccumulatorv1_0.getQueries())