Ejemplo n.º 1
0
 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())
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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())