コード例 #1
0
    def __init__(self, panel, glCanvas, visFr):
        afp.foldingPane.__init__(self,
                                 panel,
                                 -1,
                                 caption="Display",
                                 pinned=True)

        self.glCanvas = glCanvas
        self.visFr = visFr

        self.scaleBarLengths = {
            '<None>': None,
            '50nm': 50,
            '200nm': 200,
            '500nm': 500,
            '1um': 1000,
            '5um': 5000
        }
        self._pc_clim_change = False

        #Colourmap
        cmapnames = pylab.cm.cmapnames

        #print((cmapnames, self.glCanvas.cmap.name))

        #curCMapName = self.glCanvas.cmap.name
        curCMapName = 'hot'

        cmapReversed = False

        if curCMapName[-2:] == '_r':
            cmapReversed = True
            curCMapName = curCMapName[:-2]

        cmInd = cmapnames.index(curCMapName)

        ##
        pan = wx.Panel(self, -1)

        box = wx.StaticBox(pan, -1, 'Colourmap:')
        bsizer = wx.StaticBoxSizer(box)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        self.cColourmap = wx.Choice(pan, -1, choices=cmapnames)
        self.cColourmap.SetSelection(cmInd)

        hsizer.Add(self.cColourmap, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.cbCmapReverse = wx.CheckBox(pan, -1, 'Invert')
        self.cbCmapReverse.SetValue(cmapReversed)

        hsizer.Add(self.cbCmapReverse, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        bsizer.Add(hsizer, 0, wx.ALL, 0)

        bdsizer = wx.BoxSizer()
        bdsizer.Add(bsizer, 1, wx.EXPAND | wx.ALL, 0)

        pan.SetSizer(bdsizer)
        bdsizer.Fit(pan)

        #self._pnl.AddFoldPanelWindow(self, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        self.AddNewElement(pan)

        self.cColourmap.Bind(wx.EVT_CHOICE, self.OnCMapChange)
        self.cbCmapReverse.Bind(wx.EVT_CHECKBOX, self.OnCMapChange)

        #CLim
        pan = wx.Panel(self, -1)

        box = wx.StaticBox(pan, -1, 'CLim:')
        bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Min: '), 0,
                   wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)

        self.tCLimMin = wx.TextCtrl(pan,
                                    -1,
                                    '%3.2f' % self.glCanvas.clim[0],
                                    size=(40, -1))
        hsizer.Add(self.tCLimMin, 0,
                   wx.RIGHT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)

        hsizer.Add(wx.StaticText(pan, -1, '  Max: '), 0,
                   wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)

        self.tCLimMax = wx.TextCtrl(pan,
                                    -1,
                                    '%3.2f' % self.glCanvas.clim[1],
                                    size=(40, -1))
        hsizer.Add(self.tCLimMax, 0,
                   wx.RIGHT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)

        bsizer.Add(hsizer, 0, wx.ALL, 0)

        self.hlCLim = histLimits.HistLimitPanel(pan,
                                                -1,
                                                self.glCanvas.c,
                                                self.glCanvas.clim[0],
                                                self.glCanvas.clim[1],
                                                size=(150, 100))
        bsizer.Add(self.hlCLim, 0, wx.ALL | wx.EXPAND, 5)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        self.tPercentileCLim = wx.TextCtrl(pan, -1, '.95', size=(40, -1))
        hsizer.Add(self.tPercentileCLim, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                   5)

        bPercentile = wx.Button(pan, -1, 'Set Percentile')
        hsizer.Add(bPercentile, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        bsizer.Add(hsizer, 0, wx.ALL, 0)

        bdsizer = wx.BoxSizer()
        bdsizer.Add(bsizer, 1, wx.EXPAND | wx.ALL, 0)

        pan.SetSizer(bdsizer)
        bdsizer.Fit(pan)

        #self.hlCLim.Refresh()

        self.AddNewElement(pan)
        #self._pnl.AddFoldPanelWindow(self, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)

        self.tCLimMin.Bind(wx.EVT_TEXT, self.OnCLimChange)
        self.tCLimMax.Bind(wx.EVT_TEXT, self.OnCLimChange)

        self.hlCLim.Bind(histLimits.EVT_LIMIT_CHANGE, self.OnCLimHistChange)

        bPercentile.Bind(wx.EVT_BUTTON, self.OnPercentileCLim)

        #self._pnl.AddFoldPanelSeparator(self)

        #LUT
        cbLUTDraw = wx.CheckBox(self, -1, 'Show LUT')
        cbLUTDraw.SetValue(self.glCanvas.LUTDraw)
        self.AddNewElement(cbLUTDraw)
        #self._pnl.AddFoldPanelWindow(self, cbLUTDraw, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)

        cbLUTDraw.Bind(wx.EVT_CHECKBOX, self.OnLUTDrawCB)

        #Scale Bar
        pan = wx.Panel(self, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Scale Bar: '), 0,
                   wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)

        chInd = list(self.scaleBarLengths.values()).index(
            self.glCanvas.scaleBarLength)

        chScaleBar = wx.Choice(pan,
                               -1,
                               choices=list(self.scaleBarLengths.keys()))
        chScaleBar.SetSelection(chInd)
        hsizer.Add(chScaleBar, 0,
                   wx.RIGHT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)

        pan.SetSizer(hsizer)
        hsizer.Fit(pan)

        self.AddNewElement(pan)
        #self._pnl.AddFoldPanelWindow(self, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)

        chScaleBar.Bind(wx.EVT_CHOICE, self.OnChangeScaleBar)
コード例 #2
0
    def __init__(self, parent, sourceImage, destImage):
        wx.Panel.__init__(self, parent)
        self.cancelled = False

        self.parent = parent

        self.sourceImage = sourceImage
        self.destImage = destImage

        self.nChans = self.sourceImage.data.shape[3]

        self.numIters = 10

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        dispSize = (120, 80)

        
        self.hI50 = []
        self.tISlopes = []
        self.tNeighFracs = []
        self.tNSlopes = []

        for i in range(self.nChans):
            ssizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, self.sourceImage.names[i]), wx.VERTICAL)
            ssizer.Add(wx.StaticText(self, -1, 'Intensity for p = .5:'), 0, wx.ALL, 2)

            id = wx.NewId()
            #self.hIds.append(id)
            c = self.sourceImage.data[:,:,:, i].ravel()
            #print c.min(), c.max()
            hClim = histLimits.HistLimitPanel(self, id, c[::max(1, len(c)/1e4)], c.min(), c.max(), size=dispSize, log=True, threshMode=True)
            #hClim.SetThresholdMode(True)

            #hClim.Bind(histLimits.EVT_LIMIT_CHANGE, self.OnCLimChanged)
            self.hI50.append(hClim)

            ssizer.Add(hClim, 0, wx.ALL, 2)

            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            hsizer.Add(wx.StaticText(self, -1, 'Slope:'), 0, wx.ALL, 2)

            tSlope = wx.TextCtrl(self, -1, '1.0', size=(30, -1))
            self.tISlopes.append(tSlope)
            hsizer.Add(tSlope, 1, wx.ALL, 2)
            ssizer.Add(hsizer, 0, wx.ALL|wx.EXPAND, 0)

            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            hsizer.Add(wx.StaticText(self, -1, 'N Frac:'), 0, wx.ALL, 2)

            tSlope = wx.TextCtrl(self, -1, '0.5', size=(30, -1))
            self.tNeighFracs.append(tSlope)
            hsizer.Add(tSlope, 1, wx.ALL, 2)
            ssizer.Add(hsizer, 0, wx.ALL|wx.EXPAND, 0)

            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            hsizer.Add(wx.StaticText(self, -1, 'N Slope:'), 0, wx.ALL, 2)

            tSlope = wx.TextCtrl(self, -1, '1', size=(30, -1))
            self.tNSlopes.append(tSlope)
            hsizer.Add(tSlope, 1, wx.ALL, 2)
            ssizer.Add(hsizer, 0, wx.ALL|wx.EXPAND, 0)
            
            sizer1.Add(ssizer, 0, wx.ALL, 5)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(self, -1, '# Iters:'), 0, wx.ALL, 2)

        self.tNIters = wx.TextCtrl(self, -1, '10', size=(30, -1))
        hsizer.Add(self.tNIters, 1, wx.ALL, 2)
        sizer1.Add(hsizer, 0, wx.ALL|wx.EXPAND, 2)

#        self.gProgress = wx.Gauge(self, -1, numIters)
#
#        sizer1.Add(self.gProgress, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5)

        btn = wx.Button(self, -1, 'Apply')
        btn.Bind(wx.EVT_BUTTON, self.OnApply)

        sizer1.Add(btn, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

#        btn = wx.Button(self, -1, 'Done')
#        btn.Bind(wx.EVT_BUTTON, self.OnDone)
#
#        sizer1.Add(btn, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)

        self.SetSizer(sizer1)
        sizer1.Fit(self)
コード例 #3
0
    def __init__(self, parent, vp):
        wx.Panel.__init__(self, parent)

        #vsizer = wx.BoxSizer(wx.VERTICAL)

        self.vp = vp

        #self.ds = vp.ds
        if 'ds' in dir(vp.do):
            self.dsa = self.vp.do.ds
            self.vp.do.Optimise()
        else:
            self.dsa = self.vp.dsa  #[:,:,0].ravel()
            self.vp.do.Optimise(self.vp.ds)

        print((self.dsa.size))
        #self.do = vp.do

        self.scale = 2

        #self.vp.do.Optimise(self.vp.ds)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        self.hlDispMapping = histLimits.HistLimitPanel(
            self,
            -1,
            self.dsa,
            self.vp.do.getDisp1Off(),
            self.vp.do.getDisp1Off() + 255. / self.vp.do.getDisp1Gain(),
            True,
            size=(100, 80))
        self.hlDispMapping.Bind(histLimits.EVT_LIMIT_CHANGE,
                                self.OnMappingChange)

        hsizer.Add(self.hlDispMapping, 1,
                   wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)

        vsizer2 = wx.BoxSizer(wx.VERTICAL)
        self.bOptimise = wx.Button(self, -1, 'Optimise', style=wx.BU_EXACTFIT)
        self.bOptimise.Bind(wx.EVT_BUTTON, self.OnBOptimise)
        vsizer2.Add(self.bOptimise, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)

        self.cbAutoOptimise = wx.CheckBox(self, -1, 'Auto')
        self.cbAutoOptimise.SetValue(True)
        #self.cbAutoOptimise.Bind(wx.EVT_CHECKBOX, self.OnCbAutoOpt)
        vsizer2.Add(self.cbAutoOptimise, 0,
                    wx.ALIGN_CENTER_HORIZONTAL | wx.TOP, 3)
        vsizer2.Add((0, 0), 1, 0, 0)

        #hsizer.Add(vsizer2, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
        #vsizer.Add(hsizer, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5)

        #hsizer = wx.BoxSizer(wx.HORIZONTAL)

        #scaleSizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Scale"), wx.HORIZONTAL)
        self.cbScale = wx.ComboBox(self,
                                   -1,
                                   choices=["1:4", "1:2", "1:1", "2:1", "4:1"],
                                   style=wx.CB_DROPDOWN | wx.CB_READONLY,
                                   size=(55, -1))
        self.cbScale.Bind(wx.EVT_COMBOBOX, self.OnScaleChanged)
        self.cbScale.SetSelection(self.scale)

        #scaleSizer.Add(self.cbScale, 0, wx.ALL, 5)
        #hsizer.Add(wx.StaticText(self, -1, 'Scale: '), 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
        vsizer2.Add(self.cbScale, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, 5)

        hsizer.Add(vsizer2, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.ALL,
                   5)

        #vsizer.Add(hsizer, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5)

        self.SetSizer(hsizer)
        hsizer.Fit(self)
コード例 #4
0
    def __init__(self,
                 parent,
                 displayOpts,
                 horizOrientation=False,
                 thresholdControls=True,
                 **kwargs):
        kwargs['style'] = wx.TAB_TRAVERSAL
        wx.Panel.__init__(self, parent, **kwargs)

        #self.parent = parent
        self.do = displayOpts

        vsizer = wx.BoxSizer(wx.VERTICAL)

        self.hIds = []
        self.cIds = []
        self.cbIds = []
        self.hcs = []
        self.shIds = []

        cmapnames = pylab.cm.cmapnames + [
            'fastGrey', 'labeled'
        ]  # + [n + '_r' for n in pylab.cm.cmapnames]
        cmapnames.sort()
        ##do = parent.do

        dispSize = (120, 80)

        if horizOrientation:
            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            dispSize = (100, 80)

        for i in range(len(self.do.Chans)):
            ssizer = wx.StaticBoxSizer(
                wx.StaticBox(self, -1, self.do.names[i]), wx.VERTICAL)

            id = wx.NewId()
            self.hIds.append(id)
            c = self.do.ds[:, :, self.do.zp, self.do.Chans[i]].real.ravel()
            if np.iscomplexobj(c):
                if self.do.complexMode == 'real':
                    c = c.real
                elif self.do.complexMode == 'imag':
                    c = c.imag
                elif self.do.complexMode == 'angle':
                    c = np.angle(c)
                else:
                    c = np.abs(c)

            hClim = histLimits.HistLimitPanel(self,
                                              id,
                                              c[::max(1,
                                                      len(c) / 1e4)],
                                              self.do.Offs[i],
                                              self.do.Offs[i] +
                                              1. / self.do.Gains[i],
                                              size=dispSize,
                                              log=True)

            hClim.Bind(histLimits.EVT_LIMIT_CHANGE, self.OnCLimChanged)
            self.hcs.append(hClim)

            ssizer.Add(hClim, 0, wx.ALL, 2)

            hsizer2 = wx.BoxSizer(wx.HORIZONTAL)

            id = wx.NewId()
            self.cIds.append(id)
            cCmap = wx.Choice(self, id, choices=cmapnames, size=(80, -1))
            cCmap.SetSelection(cmapnames.index(self.do.cmaps[i].name))
            cCmap.Bind(wx.EVT_CHOICE, self.OnCMapChanged)
            hsizer2.Add(cCmap, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2)

            id = wx.NewId()
            self.shIds.append(id)
            cbShow = wx.CheckBox(self, id)
            cbShow.SetValue(self.do.show[i])
            cbShow.Bind(wx.EVT_CHECKBOX, self.OnShowChanged)
            hsizer2.Add(cbShow, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2)

            ssizer.Add(hsizer2, 0, wx.ALL | wx.EXPAND, 0)

            if horizOrientation:
                hsizer.Add(ssizer, 0, wx.ALL, 2)
            else:
                vsizer.Add(ssizer, 0, wx.ALL, 5)

        self.bOptimise = wx.Button(self, -1, "Stretch", style=wx.BU_EXACTFIT)

        self.cbScale = wx.Choice(self,
                                 -1,
                                 choices=[
                                     "1:16", "1:8", "1:4", "1:2", "1:1", "2:1",
                                     "4:1", "8:1", "16:1"
                                 ])
        self.cbScale.SetSelection(4)
        self.scale_11 = 4

        if horizOrientation:
            vsizer.Add(hsizer, 0, wx.ALL, 0)
            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            hsizer.Add(self.bOptimise, 0, wx.ALL | wx.ALIGN_CENTER, 5)
            hsizer.Add(self.cbScale, 0, wx.ALL | wx.ALIGN_CENTER, 5)
            vsizer.Add(hsizer, 0, wx.ALL | wx.ALIGN_CENTER, 0)
        else:
            vsizer.Add(
                self.bOptimise, 0,
                wx.LEFT | wx.RIGHT | wx.TOP | wx.ALIGN_CENTER | wx.EXPAND, 5)

            hsizer = wx.BoxSizer(wx.HORIZONTAL)

            #ssizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, 'Slice'), wx.VERTICAL)
            self.cbSlice = wx.Choice(self, -1, choices=["X-Y", "X-Z", "Y-Z"])
            self.cbSlice.SetSelection(0)
            hsizer.Add(self.cbSlice, 1, wx.ALL | wx.EXPAND, 5)

            #vsizer.Add(ssizer, 0, wx.ALL|wx.EXPAND, 5)

            #ssizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, 'Scale'), wx.VERTICAL)
            hsizer.Add(self.cbScale, 1, wx.ALL | wx.EXPAND, 5)

            vsizer.Add(hsizer, 0, wx.ALL | wx.EXPAND, 0)

            self.cbSlice.Bind(wx.EVT_CHOICE, self.OnSliceChanged)

        #self.cbSlice.Bind(wx.EVT_CHOICE, self.OnSliceChanged)
        self.cbScale.Bind(wx.EVT_CHOICE, self.OnScaleChanged)

        self.bOptimise.Bind(wx.EVT_BUTTON, self.OnOptimise)

        if self.do.ds.shape[2] > 1:
            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            hsizer.Add(wx.StaticText(self, -1, 'Projection:'), 0,
                       wx.ALL | wx.ALIGN_CENTER_VERTICAL, 0)
            self.czProject = wx.Choice(
                self, -1, choices=['None', 'Standard', 'Colour Coded'])
            self.czProject.SetSelection(0)
            self.czProject.Bind(wx.EVT_CHOICE, self.OnZProjChanged)
            hsizer.Add(self.czProject, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2)
            vsizer.Add(hsizer, 0, wx.ALL | wx.EXPAND, 0)

        if np.iscomplexobj(self.do.ds[0, 0, 0, 0]):
            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            #hsizer.Add(wx.StaticText(self, -1, 'Projection:'), 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0)
            self.cComplex = wx.Choice(
                self, -1, choices=['colored', 'real', 'imag', 'angle', 'abs'])
            self.cComplex.SetSelection(0)
            self.cComplex.Bind(wx.EVT_CHOICE, self.OnComplexChanged)
            hsizer.Add(self.cComplex, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2)
            vsizer.Add(hsizer, 0, wx.ALL | wx.EXPAND, 0)

        if thresholdControls:
            ssizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, 'Segmentation'),
                                       wx.VERTICAL)

            self.cbShowThreshold = wx.CheckBox(self, -1, 'Threshold mode')
            self.cbShowThreshold.Bind(wx.EVT_CHECKBOX, self.OnShowThreshold)
            ssizer.Add(self.cbShowThreshold, 0, wx.ALL, 5)

            self.bIsodataThresh = wx.Button(self, -1, 'Isodata')
            self.bIsodataThresh.Bind(wx.EVT_BUTTON, self.OnIsodataThresh)
            self.bIsodataThresh.Enable(False)
            ssizer.Add(self.bIsodataThresh, 0,
                       wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)

            hsizer = wx.BoxSizer(wx.HORIZONTAL)
            self.tPercThresh = wx.TextCtrl(self, -1, '.80', size=[30, -1])
            self.tPercThresh.Enable(False)
            hsizer.Add(self.tPercThresh, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                       1)
            self.bPercThresh = wx.Button(self, -1, 'Signal Fraction')
            self.bPercThresh.Bind(wx.EVT_BUTTON, self.OnSignalFracThresh)
            self.bPercThresh.Enable(False)
            hsizer.Add(self.bPercThresh, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                       1)
            ssizer.Add(hsizer, 0, wx.ALL | wx.EXPAND, 5)

            vsizer.Add(ssizer, 0, wx.ALL | wx.EXPAND, 5)

        self.SetSizer(vsizer)

        self.do.WantChangeNotification.append(self.OnDoChange)