def finalizeResults(self):
     #create Overlay for connected components:
     if self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Results"] is None:
         colortab = OverlayItem.createDefault16ColorColorTable()
         myColor = OverlayItem.qrgb(255, 0, 0)
         ov = OverlayItem(self.ccThread.result, color = myColor, alpha = 1.0, colorTable = colortab, autoAdd = True, autoVisible = True)
         self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Results"] = ov        
     else:
         self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Results"]._data = DataAccessor(self.ccThread.result)
 def filterSynapses(self, inputOverlay, label, minsize, maxsize):
     #This is a special function to filter synapses. It assumes that the input overlay
     #is a threhsold overlay and computes it for equal probabilities, and then dilates the
     #the current connected components to the size of their counterparts in the equal 
     #probability connected components. The resulting objects are filtered to be between minsize 
     #and maxsize pixels in volume.
     
     #FIXME: This function is very specific and is only put here until ilastik 0.6 allows 
     #to make it into a special workflow. Remove as soon as possible!
     parts = label.split(" ")
     labelnum = int(parts[0])
     #labelname = parts[1]
     thres = self.dataMgr[self.dataMgr._activeImageNumber].Connected_Components.inputData
     cc = self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Results"]
     if thres is None:
         print "no threshold overlay"
         return
     
     if not isinstance(thres._data, MultivariateThresholdAccessor):
         print "no threshold overlay used for connected components"
         return
     if cc is None:
         print "No connected components overlay"
         return
     
     sfad = SynapseFilterAndSegmentor(self.dataMgr, labelnum, minsize, maxsize, cc, inputOverlay)
     objs_user = sfad.computeUserThreshObjects()
     objs_ref = sfad.computeReferenceObjects()
     #goodsizes = [s for s in goodsizes if s>100]
     
     #mingoodsize = min(goodsizes)
     #maxgoodsize = max(goodsizes)
     objs_final = sfad.filterObjects(objs_user, objs_ref)
     #create a new, filtered overlay:
     result = numpy.zeros(cc.shape, dtype = 'int32')
     objcounter = 1
     for iobj in objs_final:
         for i in range(len(iobj[0])):
             result[0, iobj[0][i], iobj[1][i], iobj[2][i], 0] = int(objcounter)
         objcounter = objcounter +1
     
     if self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Filtered"] is None:
         #colortab = [QtGui.qRgb(i, i, i) for i in range(256)]
         colortab = OverlayItem.createDefault16ColorColorTable()
         myColor = OverlayItem.qrgb(255, 0, 0) #QtGui.QColor(255, 0, 0)
         ov = OverlayItem(result, color = myColor, alpha = 1.0, colorTable = colortab, autoAdd = True, autoVisible = True)
         self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Filtered"] = ov
     else:
         self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr["Connected Components/CC Filtered"]._data = DataAccessor(result)        
 def finalizeResults(self):
     #create Overlay for connected components:
     if self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
             "Connected Components/CC Results"] is None:
         colortab = OverlayItem.createDefault16ColorColorTable()
         myColor = OverlayItem.qrgb(255, 0, 0)
         ov = OverlayItem(self.ccThread.result,
                          color=myColor,
                          alpha=1.0,
                          colorTable=colortab,
                          autoAdd=True,
                          autoVisible=True)
         self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
             "Connected Components/CC Results"] = ov
     else:
         self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
             "Connected Components/CC Results"]._data = DataAccessor(
                 self.ccThread.result)
    def filterSynapses(self, inputOverlay, label, minsize, maxsize):
        #This is a special function to filter synapses. It assumes that the input overlay
        #is a threhsold overlay and computes it for equal probabilities, and then dilates the
        #the current connected components to the size of their counterparts in the equal
        #probability connected components. The resulting objects are filtered to be between minsize
        #and maxsize pixels in volume.

        #FIXME: This function is very specific and is only put here until ilastik 0.6 allows
        #to make it into a special workflow. Remove as soon as possible!
        parts = label.split(" ")
        labelnum = int(parts[0])
        #labelname = parts[1]
        thres = self.dataMgr[
            self.dataMgr._activeImageNumber].Connected_Components.inputData
        cc = self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
            "Connected Components/CC Results"]
        if thres is None:
            print "no threshold overlay"
            return

        if not isinstance(thres._data, MultivariateThresholdAccessor):
            print "no threshold overlay used for connected components"
            return
        if cc is None:
            print "No connected components overlay"
            return

        sfad = SynapseFilterAndSegmentor(self.dataMgr, labelnum, minsize,
                                         maxsize, cc, inputOverlay)
        objs_user = sfad.computeUserThreshObjects()
        objs_ref = sfad.computeReferenceObjects()
        #goodsizes = [s for s in goodsizes if s>100]

        #mingoodsize = min(goodsizes)
        #maxgoodsize = max(goodsizes)
        objs_final = sfad.filterObjects(objs_user, objs_ref)
        #create a new, filtered overlay:
        result = numpy.zeros(cc.shape, dtype='int32')
        objcounter = 1
        for iobj in objs_final:
            for i in range(len(iobj[0])):
                result[0, iobj[0][i], iobj[1][i], iobj[2][i],
                       0] = int(objcounter)
            objcounter = objcounter + 1

        if self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
                "Connected Components/CC Filtered"] is None:
            #colortab = [QtGui.qRgb(i, i, i) for i in range(256)]
            colortab = OverlayItem.createDefault16ColorColorTable()
            myColor = OverlayItem.qrgb(255, 0, 0)  #QtGui.QColor(255, 0, 0)
            ov = OverlayItem(result,
                             color=myColor,
                             alpha=1.0,
                             colorTable=colortab,
                             autoAdd=True,
                             autoVisible=True)
            self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
                "Connected Components/CC Filtered"] = ov
        else:
            self.dataMgr[self.dataMgr._activeImageNumber].overlayMgr[
                "Connected Components/CC Filtered"]._data = DataAccessor(
                    result)