Ejemplo n.º 1
0
    def GenPointFindingPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Point Finding", pinned = True)
#        item = _pnl.AddFoldPanel("Point Finding", collapsed=False,
#                                      foldIcons=self.Images)

        pan = wx.Panel(item, -1)
        vsizer = wx.BoxSizer(wx.VERTICAL)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Threshold:'), 1,wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        self.tThreshold = wx.TextCtrl(pan, -1, value='0.6', size=(40, -1))

        hsizer.Add(self.tThreshold, 0,wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        
        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 2)
        
        #load any additional point finding settings
        self._populateFindOptionsPanel(pan, vsizer)
        
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        bTest = wx.Button(pan, -1, 'Test', style=wx.BU_EXACTFIT)
        bTest.Bind(wx.EVT_BUTTON, self.OnTest)
        hsizer.Add(bTest, 0,wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
        
        bTestF = wx.Button(pan, -1, 'Test This Frame', style=wx.BU_EXACTFIT)
        bTestF.Bind(wx.EVT_BUTTON, self.OnTestFrame)
        hsizer.Add(bTestF, 0,wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
        
        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 2)
        
        pan.SetSizerAndFit(vsizer)

        item.AddNewElement(pan)
        _pnl.AddPane(item)
Ejemplo n.º 2
0
    def GenBlobFitPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Object Fitting", pinned=True)
        #        item = _pnl.AddFoldPanel("Object Fitting", collapsed=False,
        #                                      foldIcons=self.Images)

        bFitObjects = wx.Button(item, -1, 'Fit')

        bFitObjects.Bind(wx.EVT_BUTTON, self.OnFitObjects)
        #_pnl.AddFoldPanelWindow(item, bFitObjects, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)
        item.AddNewElement(bFitObjects)

        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Bead wxy:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
        self.tBeadWXY = wx.TextCtrl(pan, -1, value='125', size=(40, -1))

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

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

        item.AddNewElement(pan)

        bCalcShiftMap = wx.Button(item, -1, 'Shiftmap')
        bCalcShiftMap.Bind(wx.EVT_BUTTON, self.OnCalcShiftmap)
        #_pnl.AddFoldPanelWindow(item, bFitObjects, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)
        item.AddNewElement(bCalcShiftMap)
        _pnl.AddPane(item)
Ejemplo n.º 3
0
    def GenBlobFitPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Object Fitting", pinned = True)
#        item = _pnl.AddFoldPanel("Object Fitting", collapsed=False,
#                                      foldIcons=self.Images)

        bFitObjects = wx.Button(item, -1, 'Fit')


        bFitObjects.Bind(wx.EVT_BUTTON, self.OnFitObjects)
        #_pnl.AddFoldPanelWindow(item, bFitObjects, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)
        item.AddNewElement(bFitObjects)

        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Bead wxy:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        self.tBeadWXY = wx.TextCtrl(pan, -1, value='125', size=(40, -1))

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

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

        item.AddNewElement(pan)
        
        bCalcShiftMap = wx.Button(item, -1, 'Shiftmap')
        bCalcShiftMap.Bind(wx.EVT_BUTTON, self.OnCalcShiftmap)
        #_pnl.AddFoldPanelWindow(item, bFitObjects, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)
        item.AddNewElement(bCalcShiftMap)
        _pnl.AddPane(item)
Ejemplo n.º 4
0
    def GenPointFindingPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Point Finding", pinned=True)
        #        item = _pnl.AddFoldPanel("Point Finding", collapsed=False,
        #                                      foldIcons=self.Images)

        pan = wx.Panel(item, -1)
        vsizer = wx.BoxSizer(wx.VERTICAL)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Threshold:'), 1,
                   wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
        self.tThreshold = wx.TextCtrl(pan, -1, value='0.6', size=(40, -1))

        hsizer.Add(self.tThreshold, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)

        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 2)

        #load any additional point finding settings
        self._populateFindOptionsPanel(pan, vsizer)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        bTest = wx.Button(pan, -1, 'Test', style=wx.BU_EXACTFIT)
        bTest.Bind(wx.EVT_BUTTON, self.OnTest)
        hsizer.Add(bTest, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)

        bTestF = wx.Button(pan, -1, 'Test This Frame', style=wx.BU_EXACTFIT)
        bTestF.Bind(wx.EVT_BUTTON, self.OnTestFrame)
        hsizer.Add(bTestF, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)

        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 2)

        pan.SetSizerAndFit(vsizer)

        item.AddNewElement(pan)
        _pnl.AddPane(item)
Ejemplo n.º 5
0
    def GenBlobPanel(self, pnl):
#        item = self._pnl.AddFoldPanel("Objects", collapsed=False,
#                                      foldIcons=self.Images)
        item = afp.foldingPane(pnl, -1, caption="Objects", pinned = True)

        pan = wx.Panel(item, -1)
        bsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Threshold [nm]:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.tBlobDist = wx.TextCtrl(pan, -1, '%3.0f' % self.pipeline.objThreshold,size=(40,-1))
        hsizer.Add(self.tBlobDist, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Min Size [events]:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.tMinObjSize = wx.TextCtrl(pan, -1, '%d' % self.pipeline.objMinSize, size=(40, -1))
        hsizer.Add(self.tMinObjSize, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Jittering:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.tObjJitter = wx.TextCtrl(pan, -1, '%d' % self.pipeline.blobJitter, size=(40, -1))
        hsizer.Add(self.tObjJitter, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        self.bApplyThreshold = wx.Button(pan, -1, 'Apply')
        bsizer.Add(self.bApplyThreshold, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

        self.bObjMeasure = wx.Button(pan, -1, 'Measure')
        #self.bObjMeasure.Enable(False)
        bsizer.Add(self.bObjMeasure, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Object Colour:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.cBlobColour = wx.Choice(pan, -1, choices=['Index', 'Random'])
        self.cBlobColour.SetSelection(0)
        self.cBlobColour.Bind(wx.EVT_CHOICE, self.OnSetBlobColour)

        hsizer.Add(self.cBlobColour, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        bsizer.Add(hsizer, 0, wx.ALL|wx.EXPAND, 0)

        pan.SetSizer(bsizer)
        bsizer.Fit(pan)


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

        self.bApplyThreshold.Bind(wx.EVT_BUTTON, self.OnObjApplyThreshold)
        self.bObjMeasure.Bind(wx.EVT_BUTTON, self.OnObjMeasure)

        pnl.AddPane(item)
Ejemplo n.º 6
0
    def GenPlayPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Playback", pinned = True)

        self.playPan = PlayPanel(item, self.dsviewer)

        

        item.AddNewElement(self.playPan)
        _pnl.AddPane(item)
Ejemplo n.º 7
0
 def AddAqTool(self, panel, title):
     '''Adds a pane to the Acquisition section of the GUI
     
     Parameters
     ----------
     panel : an instance of a wx.Window derived class
         The pane to add
     title : string
         The caption for the panel.
     '''
     item = afp.foldingPane(self.aqPanel, -1, caption=title, pinned=True)
     panel.Reparent(item)
     item.AddNewElement(panel)
     self.aqPanel.AddPane(item)
Ejemplo n.º 8
0
 def AddAqTool(self, panel, title):
     '''Adds a pane to the Acquisition section of the GUI
     
     Parameters
     ----------
     panel : an instance of a wx.Window derived class
         The pane to add
     title : string
         The caption for the panel.
     '''
     item = afp.foldingPane(self.aqPanel, -1, caption=title, pinned = True)
     panel.Reparent(item)
     item.AddNewElement(panel)
     self.aqPanel.AddPane(item)
Ejemplo n.º 9
0
    def GenDataSourcePanel(self, pnl):
        item = afp.foldingPane(pnl, -1, caption="Data Source", pinned = False)

        self.dsRadioIds = []
        for ds in self.pipeline.dataSources:
            rbid = wx.NewId()
            self.dsRadioIds.append(rbid)
            rb = wx.RadioButton(item, rbid, ds._name)
            rb.SetValue(ds == self.pipeline.selectedDataSource)

            rb.Bind(wx.EVT_RADIOBUTTON, self.OnSourceChange)
            item.AddNewElement(rb)

        pnl.AddPane(item)
Ejemplo n.º 10
0
    def GenPointsPanel(self, title='Points'):
        item = afp.foldingPane(self._pnl, -1, caption=title, pinned=True)
        #        item = self._pnl.AddFoldPanel(title, collapsed=False,
        #                                      foldIcons=self.Images)

        pan = wx.Panel(item, -1)
        bsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Size [nm]:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.tPointSize = wx.TextCtrl(pan, -1,
                                      '%3.2f' % self.glCanvas.pointSize)
        hsizer.Add(self.tPointSize, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

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

        colData = ['<None>']

        if not self.pipeline.colourFilter == None:
            colData += list(self.pipeline.keys())

        colData += list(self.pipeline.GeneratedMeasures.keys())

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Colour:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.chPointColour = wx.Choice(pan,
                                       -1,
                                       choices=colData,
                                       size=(100, -1))
        if self.colData in colData:
            self.chPointColour.SetSelection(colData.index(self.colData))
        hsizer.Add(self.chPointColour, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

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

        pan.SetSizer(bsizer)
        bsizer.Fit(pan)

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

        self.tPointSize.Bind(wx.EVT_TEXT, self.OnPointSizeChange)
        self.chPointColour.Bind(wx.EVT_CHOICE, self.OnChangePointColour)

        self._pnl.AddPane(item)
Ejemplo n.º 11
0
    def GenFitStatusPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Fit Status", pinned=True)

        pan = wx.Panel(item, -1, size=(160, 300))

        vsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Colour:'), 0,
                   wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)

        self.chProgDispColour = wx.Choice(pan,
                                          -1,
                                          choices=['z', 'gFrac', 't'],
                                          size=(60, -1))
        self.chProgDispColour.Bind(wx.EVT_CHOICE, self.OnProgDispColourChange)
        hsizer.Add(self.chProgDispColour, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                   0)

        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 2)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'CMap:'), 0,
                   wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)

        self.chProgDispCMap = wx.Choice(pan,
                                        -1,
                                        choices=['gist_rainbow', 'RdYlGn'],
                                        size=(60, -1))
        self.chProgDispCMap.Bind(wx.EVT_CHOICE, self.OnProgDispCMapChange)
        hsizer.Add(self.chProgDispCMap, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                   0)

        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 7)

        self.progPan = progGraph.progPanel(pan,
                                           self.fitResults,
                                           size=(220, 250))
        self.progPan.draw()

        vsizer.Add(self.progPan, 1,
                   wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, 0)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)

        #_pnl.AddFoldPanelWindow(item, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 0)
        item.AddNewElement(pan)
        _pnl.AddPane(item)
Ejemplo n.º 12
0
 def AddCamTool(self, panel, title):
     '''Adds a pane to the Camera section of the GUI
     
     Parameters
     ----------
     panel : an instance of a wx.Window derived class
         The pane to add
     title : string
         The caption for the panel.
     '''
     #item = self.camPanel.AddFoldPanel(title, collapsed=False, foldIcons=self.Images)
     item = afp.foldingPane(self.camPanel, -1, caption=title, pinned=True)
     panel.Reparent(item)
     item.AddNewElement(panel)
     self.camPanel.AddPane(item)
Ejemplo n.º 13
0
 def AddCamTool(self, panel, title):
     '''Adds a pane to the Camera section of the GUI
     
     Parameters
     ----------
     panel : an instance of a wx.Window derived class
         The pane to add
     title : string
         The caption for the panel.
     '''
     #item = self.camPanel.AddFoldPanel(title, collapsed=False, foldIcons=self.Images)
     item = afp.foldingPane(self.camPanel, -1, caption=title, pinned = True)
     panel.Reparent(item)
     item.AddNewElement(panel)
     self.camPanel.AddPane(item)
Ejemplo n.º 14
0
    def GenPointsPanel(self, pnl, title='Points'):
        item = afp.foldingPane(pnl, -1, caption=title, pinned = True)
#        item = self._pnl.AddFoldPanel(title, collapsed=False,
#                                      foldIcons=self.Images)

        pan = wx.Panel(item, -1)
        bsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Size [nm]:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.tPointSize = wx.TextCtrl(pan, -1, '%3.2f' % self.glCanvas.pointSize)
        hsizer.Add(self.tPointSize, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        
        colData = ['<None>']

        if not self.pipeline.colourFilter == None:
            colData += list(self.pipeline.keys())

        colData += list(self.pipeline.GeneratedMeasures.keys())

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Colour:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.chPointColour = wx.Choice(pan, -1, choices=colData, size=(100, -1))
        if self.colData in colData:
            self.chPointColour.SetSelection(colData.index(self.colData))
        hsizer.Add(self.chPointColour, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        bsizer.Add(hsizer, 0, wx.ALL, 0)
        
        pan.SetSizer(bsizer)
        bsizer.Fit(pan)

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

        self.tPointSize.Bind(wx.EVT_TEXT, self.OnPointSizeChange)
        self.chPointColour.Bind(wx.EVT_CHOICE, self.OnChangePointColour)

        pnl.AddPane(item)
Ejemplo n.º 15
0
    def GenQuadTreePanel(self):
        from PYME.Analysis.QuadTree import pointQT

        item = afp.foldingPane(self._pnl, -1, caption="QuadTree", pinned=True)
        #        item = self._pnl.AddFoldPanel("QuadTree", collapsed=False,
        #                                      foldIcons=self.Images)

        pan = wx.Panel(item, -1)
        bsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Leaf Size:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.tQTLeafSize = wx.TextCtrl(pan, -1, '%d' % pointQT.QT_MAXRECORDS)
        hsizer.Add(self.tQTLeafSize, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

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

        self.stQTSNR = wx.StaticText(
            pan, -1,
            'Effective SNR = %3.2f' % pylab.sqrt(pointQT.QT_MAXRECORDS / 2.0))
        bsizer.Add(self.stQTSNR, 0, wx.ALL, 5)

        #hsizer = wx.BoxSizer(wx.HORIZONTAL)
        #hsizer.Add(wx.StaticText(pan, -1, 'Goal pixel size [nm]:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        #self.tQTSize = wx.TextCtrl(pan, -1, '20000')
        #hsizer.Add(self.tQTLeafSize, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        pan.SetSizer(bsizer)
        bsizer.Fit(pan)

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

        self.tQTLeafSize.Bind(wx.EVT_TEXT, self.OnQTLeafChange)

        self._pnl.AddPane(item)
Ejemplo n.º 16
0
    def GenQuadTreePanel(self, pnl):
        from PYME.Analysis.QuadTree import pointQT
        
        item = afp.foldingPane(pnl, -1, caption="QuadTree", pinned = True)
#        item = self._pnl.AddFoldPanel("QuadTree", collapsed=False,
#                                      foldIcons=self.Images)

        pan = wx.Panel(item, -1)
        bsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Leaf Size:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.tQTLeafSize = wx.TextCtrl(pan, -1, '%d' % pointQT.QT_MAXRECORDS)
        hsizer.Add(self.tQTLeafSize, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        self.stQTSNR = wx.StaticText(pan, -1, 'Effective SNR = %3.2f' % pylab.sqrt(pointQT.QT_MAXRECORDS/2.0))
        bsizer.Add(self.stQTSNR, 0, wx.ALL, 5)

        #hsizer = wx.BoxSizer(wx.HORIZONTAL)
        #hsizer.Add(wx.StaticText(pan, -1, 'Goal pixel size [nm]:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        #self.tQTSize = wx.TextCtrl(pan, -1, '20000')
        #hsizer.Add(self.tQTLeafSize, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        #bsizer.Add(hsizer, 0, wx.ALL, 0)
        
        pan.SetSizer(bsizer)
        bsizer.Fit(pan)

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

        self.tQTLeafSize.Bind(wx.EVT_TEXT, self.OnQTLeafChange)

        pnl.AddPane(item)
Ejemplo n.º 17
0
    def GenTrackingPanel(self, _pnl):
        item = afp.foldingPane(_pnl,
                               -1,
                               caption="Particle Tracking",
                               pinned=True)

        pan = self.edit_traits(parent=item, kind='panel')
        item.AddNewElement(pan.control)

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

        #        vsizer = wx.BoxSizer(wx.VERTICAL)
        #
        ##        #if self.multiChannel: #we have channels
        #        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        #        hsizer.Add(wx.StaticText(pan, -1, 'Features:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        #
        #        self.tFeatures = wx.Text(pan, -1, 'x, y')
        #
        #        hsizer.Add(self.tFeatures, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        #
        #        vsizer.Add(hsizer, 0,wx.EXPAND|wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 0)
        #
        #        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        #
        #
        #
        #        vsizer.Add(hsizer, 0,wx.ALL|wx.ALIGN_RIGHT, 5)
        #
        #
        #        pan.SetSizer(vsizer)
        #        vsizer.Fit(pan)

        #item.AddNewElement(pan)
        bTrack = wx.Button(item, -1, 'Track')
        bTrack.Bind(wx.EVT_BUTTON, self.OnTrack)
        item.AddNewElement(bTrack)

        _pnl.AddPane(item)
Ejemplo n.º 18
0
    def GenTrackingPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Particle Tracking", pinned = True)
        
        pan = self.edit_traits(parent=item, kind='panel')
        item.AddNewElement(pan.control)
        
        #pan = wx.Panel(item, -1)

#        vsizer = wx.BoxSizer(wx.VERTICAL)
#
##        #if self.multiChannel: #we have channels            
#        hsizer = wx.BoxSizer(wx.HORIZONTAL)
#        hsizer.Add(wx.StaticText(pan, -1, 'Features:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
#    
#        self.tFeatures = wx.Text(pan, -1, 'x, y')
#            
#        hsizer.Add(self.tFeatures, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
#    
#        vsizer.Add(hsizer, 0,wx.EXPAND|wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 0)        
#        
#        hsizer = wx.BoxSizer(wx.HORIZONTAL)
#
#
#        
#        vsizer.Add(hsizer, 0,wx.ALL|wx.ALIGN_RIGHT, 5)
#        
#        
#        pan.SetSizer(vsizer)
#        vsizer.Fit(pan)


        #item.AddNewElement(pan)
        bTrack = wx.Button(item, -1, 'Track')
        bTrack.Bind(wx.EVT_BUTTON, self.OnTrack)
        item.AddNewElement(bTrack)
        
        _pnl.AddPane(item)
Ejemplo n.º 19
0
    def GenFitStatusPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Fit Status", pinned = True)

        pan = wx.Panel(item, -1, size = (160, 300))

        vsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Colour:'), 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)

        self.chProgDispColour = wx.Choice(pan, -1, choices = ['z', 'gFrac', 't'], size=(60, -1))
        self.chProgDispColour.Bind(wx.EVT_CHOICE, self.OnProgDispColourChange)
        hsizer.Add(self.chProgDispColour, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0)

        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 2)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'CMap:'), 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)

        self.chProgDispCMap = wx.Choice(pan, -1, choices = ['gist_rainbow', 'RdYlGn'], size=(60, -1))
        self.chProgDispCMap.Bind(wx.EVT_CHOICE, self.OnProgDispCMapChange)
        hsizer.Add(self.chProgDispCMap, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0)

        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 7)

        self.progPan = progGraph.progPanel(pan, self.fitResults, size=(220, 250))
        self.progPan.draw()

        vsizer.Add(self.progPan, 1,wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 0)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)

        #_pnl.AddFoldPanelWindow(item, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 0)
        item.AddNewElement(pan)
        _pnl.AddPane(item)
Ejemplo n.º 20
0
    def GenPSFPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="PSF Extraction", pinned = True)

        pan = wx.Panel(item, -1)

        vsizer = wx.BoxSizer(wx.VERTICAL)

        #if self.multiChannel: #we have channels            
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Channel:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
    
        self.chChannel = wx.Choice(pan, -1, choices=self.do.names)
            
        hsizer.Add(self.chChannel, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
    
        vsizer.Add(hsizer, 0,wx.EXPAND|wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 0)        
        
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
#
#        hsizer.Add(wx.StaticText(pan, -1, 'Threshold:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
#        self.tThreshold = wx.TextCtrl(pan, -1, value='50', size=(40, -1))
#
        bTagPSF = wx.Button(pan, -1, 'Tag', style=wx.BU_EXACTFIT)
        bTagPSF.Bind(wx.EVT_BUTTON, self.OnTagPSF)
        hsizer.Add(bTagPSF, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        bTagPoints = wx.Button(pan, -1, 'Tag Points', style=wx.BU_EXACTFIT)
        bTagPoints.Bind(wx.EVT_BUTTON, self.OnTagPoints)
        hsizer.Add(bTagPoints, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        bClearTagged = wx.Button(pan, -1, 'Clear', style=wx.BU_EXACTFIT)
        bClearTagged.Bind(wx.EVT_BUTTON, self.OnClearTags)
        hsizer.Add(bClearTagged, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'ROI Size:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.tPSFROI = wx.TextCtrl(pan, -1, value='30,30,30', size=(40, -1))
        hsizer.Add(self.tPSFROI, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        self.tPSFROI.Bind(wx.EVT_TEXT, self.OnPSFROI)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Blur:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

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

        vsizer.Add(hsizer, 0,wx.EXPAND|wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 0)
        
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'PSF Type:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

        self.chType = wx.Choice(pan, -1, choices=['Widefield', 'Confocal'], size=(40, -1))
        hsizer.Add(self.chType, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        if 'Camera.IntegrationTime' in self.image.mdh.getEntryNames():
            #most likely widefield
            self.chType.SetSelection(0)
        else:
            #most likely confocal
            #confocal is a safe default as widefield just does some fancy extra
            #background correction
            self.chType.SetSelection(1)

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


        hsizer = wx.BoxSizer(wx.HORIZONTAL)        
        bExtract = wx.Button(pan, -1, 'Extract', style=wx.BU_EXACTFIT)
        bExtract.Bind(wx.EVT_BUTTON, self.OnExtractPSF)
        hsizer.Add(bExtract, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5) 
        
        bExtractSplit = wx.Button(pan, -1, 'Extract Split', style=wx.BU_EXACTFIT)
        bExtractSplit.Bind(wx.EVT_BUTTON, self.OnExtractSplitPSF)
        hsizer.Add(bExtractSplit, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        
        vsizer.Add(hsizer, 0,wx.ALL|wx.ALIGN_RIGHT, 5)
        
        bAxialShift = wx.Button(pan, -1, 'Estimate axial shift', style=wx.BU_EXACTFIT)
        bAxialShift.Bind(wx.EVT_BUTTON, self.OnCalcShift)
        vsizer.Add(bAxialShift, 0,wx.ALL|wx.ALIGN_RIGHT, 5)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)

        #_pnl.AddFoldPanelWindow(item, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        item.AddNewElement(pan)
        _pnl.AddPane(item)
Ejemplo n.º 21
0
    def GenBlobFindingPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Object Finding", pinned=True)

        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Threshold:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
        self.tThreshold = wx.TextCtrl(pan, -1, value='50', size=(40, -1))

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

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

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

        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        #hsizer.Add(wx.StaticText(pan, -1, 'Method:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        self.chMethod = wx.Choice(
            pan,
            -1,
            choices=['Simple Threshold', 'SNR Threshold', 'Multi-threshold'])
        self.chMethod.SetSelection(0)
        self.chMethod.Bind(wx.EVT_CHOICE, self.OnChangeMethod)

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

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

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

        pan = wx.Panel(item, -1)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Channel:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.chChannel = wx.Choice(pan, -1, choices=self.do.names)

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

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

        item.AddNewElement(pan)

        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Blur size:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
        self.tBlurSize = wx.TextCtrl(pan, -1, value='1.5', size=(40, -1))
        self.tBlurSize.Disable()

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

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

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

        #self.cbSNThreshold = wx.CheckBox(item, -1, 'SNR Threshold')
        #self.cbSNThreshold.SetValue(False)

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

        #self.cbThresholdRange = wx.CheckBox(item, -1, 'Multi-thresholds')
        #self.cbThresholdRange.SetValue(False)

        #_pnl.AddFoldPanelWindow(item, self.cbSNThreshold, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        #item.AddNewElement(self.cbThresholdRange)

        bFindObjects = wx.Button(item, -1, 'Find')

        bFindObjects.Bind(wx.EVT_BUTTON, self.OnFindObjects)
        #_pnl.AddFoldPanelWindow(item, bFindObjects, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)
        item.AddNewElement(bFindObjects)
        _pnl.AddPane(item)
Ejemplo n.º 22
0
    def GenBlobFindingPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Object Finding", pinned = True)

        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Threshold:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        self.tThreshold = wx.TextCtrl(pan, -1, value='50', size=(40, -1))

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

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

        #_pnl.AddFoldPanelWindow(item, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        item.AddNewElement(pan)
        
        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        #hsizer.Add(wx.StaticText(pan, -1, 'Method:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        self.chMethod = wx.Choice(pan, -1, choices=['Simple Threshold', 'SNR Threshold', 'Multi-threshold'])
        self.chMethod.SetSelection(0)
        self.chMethod.Bind(wx.EVT_CHOICE, self.OnChangeMethod)

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

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

        #_pnl.AddFoldPanelWindow(item, pan, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        item.AddNewElement(pan)
        
        pan = wx.Panel(item, -1)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Channel:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
    
        self.chChannel = wx.Choice(pan, -1, choices=self.do.names)
            
        hsizer.Add(self.chChannel, 1,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
    
        pan.SetSizer(hsizer)
        hsizer.Fit(pan) 
        
        item.AddNewElement(pan)
        
        pan = wx.Panel(item, -1)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Blur size:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        self.tBlurSize = wx.TextCtrl(pan, -1, value='1.5', size=(40, -1))
        self.tBlurSize.Disable()

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

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

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

        #self.cbSNThreshold = wx.CheckBox(item, -1, 'SNR Threshold')
        #self.cbSNThreshold.SetValue(False)

        #_pnl.AddFoldPanelWindow(item, self.cbSNThreshold, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        #item.AddNewElement(self.cbSNThreshold)
        
        #self.cbThresholdRange = wx.CheckBox(item, -1, 'Multi-thresholds')
        #self.cbThresholdRange.SetValue(False)

        #_pnl.AddFoldPanelWindow(item, self.cbSNThreshold, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 5)
        #item.AddNewElement(self.cbThresholdRange)

        bFindObjects = wx.Button(item, -1, 'Find')


        bFindObjects.Bind(wx.EVT_BUTTON, self.OnFindObjects)
        #_pnl.AddFoldPanelWindow(item, bFindObjects, fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 10)
        item.AddNewElement(bFindObjects)
        _pnl.AddPane(item)
Ejemplo n.º 23
0
    def GenAnalysisPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Analysis", pinned = True)
        
        ##############################
        pan = wx.Panel(item, -1)
        vsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Start at:'), 1,wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        if 'Protocol.DataStartsAt' in self.image.mdh.getEntryNames():
            startAt = self.image.mdh.getEntry('Protocol.DataStartsAt')
        else:
            startAt = self.do.zp
        self.tStartAt = wx.TextCtrl(pan, -1, value='%d' % startAt, size=(50, -1))

        hsizer.Add(self.tStartAt, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0)
        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 2)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Background:'), 1,wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        self.tBackgroundFrames = wx.TextCtrl(pan, -1, value='-30:0', size=(50, -1))

        hsizer.Add(self.tBackgroundFrames, 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0)
        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 2)
        
        pan.SetSizer(vsizer)
        vsizer.Fit(pan)
        item.AddNewElement(pan)

        self.cbSubtractBackground = wx.CheckBox(item, -1, 'Subtract background in fit')
        self.cbSubtractBackground.SetValue(True)


        item.AddNewElement(self.cbSubtractBackground)

        #############################
        #std options
        pan = wx.Panel(item, -1)
        vsizer = wx.BoxSizer(wx.VERTICAL)
        pan.SetSizer(vsizer)
        
        self._populateStdOptionsPanel(pan, vsizer)
                
        item.AddNewElement(pan)

        
        #######################
        #Fit factory selection
        pan = wx.Panel(item, -1)

        #find out what fit factories we have
        self.fitFactories = PYME.Analysis.FitFactories.resFitFactories
        print((self.fitFactories))

        vsizer = wx.BoxSizer(wx.VERTICAL)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Type:'), 0,wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
        self.cFitType = wx.Choice(pan, -1, choices = ['{:<35} \t- {:} '.format(f, PYME.Analysis.FitFactories.useFor[f]) for f in self.fitFactories], size=(110, -1))
        
        if 'Analysis.FitModule' in self.image.mdh.getEntryNames():
            #has already been analysed - most likely to want the same method again
            self.cFitType.SetSelection(self.fitFactories.index(self.image.mdh['Analysis.FitModule']))
            self.tThreshold.SetValue('%s' % self.image.mdh['Analysis.DetectionThreshold'])
        #elif 'Camera.ROIPosY' in self.image.mdh.getEntryNames() and (self.image.mdh.getEntry('Camera.ROIHeight') + 1 + 2*(self.image.mdh.getEntry('Camera.ROIPosY')-1)) == 512:
        #    #we have a symetrical ROI about the centre - most likely want to analyse using splitter
        #    self.cFitType.SetSelection(self.fitFactories.index('SplitterFitQR'))
        #    self.tThreshold.SetValue('0.5')
        else:
            self.cFitType.SetSelection(self.fitFactories.index('LatGaussFitFR'))
            
        self.cFitType.Bind(wx.EVT_CHOICE, self.OnFitModuleChanged)

        hsizer.Add(self.cFitType, 1,wx.ALIGN_CENTER_VERTICAL, 0)
        vsizer.Add(hsizer, 0,wx.BOTTOM|wx.EXPAND, 2)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)

        item.AddNewElement(pan)

#        self.cbDrift = wx.CheckBox(item, -1, 'Estimate Drift')
#        self.cbDrift.SetValue(False)
#
#        #_pnl.AddFoldPanelWindow(item, self.cbDrift, fpb.FPB_ALIGN_WIDTH, 7, 5)
#        item.AddNewElement(self.cbDrift)


        ########################################        
        #custom  (fit factory dependant) options        
        self.customOptionsPan = wx.Panel(item, -1)
        self.customOptionsSizer = wx.BoxSizer(wx.VERTICAL)
        self.customOptionsPan.SetSizer(self.customOptionsSizer)

        self._populateCustomAnalysisPanel(self.customOptionsPan, self.customOptionsSizer)        

        item.AddNewElement(self.customOptionsPan)
        
        ######################
        #Go
        self.bGo = wx.Button(item, -1, 'Go')


        self.bGo.Bind(wx.EVT_BUTTON, self.OnGo)
        item.AddNewElement(self.bGo)
        _pnl.AddPane(item)

        self.analysisPanel = item
Ejemplo n.º 24
0
    def GenAnalysisPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="Analysis", pinned=True)

        ##############################
        pan = wx.Panel(item, -1)
        vsizer = wx.BoxSizer(wx.VERTICAL)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Start at:'), 1,
                   wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
        if 'Protocol.DataStartsAt' in self.image.mdh.getEntryNames():
            startAt = self.image.mdh.getEntry('Protocol.DataStartsAt')
        else:
            startAt = self.do.zp
        self.tStartAt = wx.TextCtrl(pan,
                                    -1,
                                    value='%d' % startAt,
                                    size=(50, -1))

        hsizer.Add(self.tStartAt, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 0)
        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 2)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Background:'), 1,
                   wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
        self.tBackgroundFrames = wx.TextCtrl(pan,
                                             -1,
                                             value='-30:0',
                                             size=(50, -1))

        hsizer.Add(self.tBackgroundFrames, 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 0)
        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 2)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)
        item.AddNewElement(pan)

        self.cbSubtractBackground = wx.CheckBox(item, -1,
                                                'Subtract background in fit')
        self.cbSubtractBackground.SetValue(True)

        item.AddNewElement(self.cbSubtractBackground)

        #############################
        #std options
        pan = wx.Panel(item, -1)
        vsizer = wx.BoxSizer(wx.VERTICAL)
        pan.SetSizer(vsizer)

        self._populateStdOptionsPanel(pan, vsizer)

        item.AddNewElement(pan)

        #######################
        #Fit factory selection
        pan = wx.Panel(item, -1)

        #find out what fit factories we have
        self.fitFactories = PYME.Analysis.FitFactories.resFitFactories
        print((self.fitFactories))

        vsizer = wx.BoxSizer(wx.VERTICAL)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        hsizer.Add(wx.StaticText(pan, -1, 'Type:'), 0,
                   wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
        self.cFitType = wx.Choice(pan,
                                  -1,
                                  choices=[
                                      '{:<35} \t- {:} '.format(
                                          f,
                                          PYME.Analysis.FitFactories.useFor[f])
                                      for f in self.fitFactories
                                  ],
                                  size=(110, -1))

        if 'Analysis.FitModule' in self.image.mdh.getEntryNames():
            #has already been analysed - most likely to want the same method again
            self.cFitType.SetSelection(
                self.fitFactories.index(self.image.mdh['Analysis.FitModule']))
            self.tThreshold.SetValue(
                '%s' % self.image.mdh['Analysis.DetectionThreshold'])
        #elif 'Camera.ROIPosY' in self.image.mdh.getEntryNames() and (self.image.mdh.getEntry('Camera.ROIHeight') + 1 + 2*(self.image.mdh.getEntry('Camera.ROIPosY')-1)) == 512:
        #    #we have a symetrical ROI about the centre - most likely want to analyse using splitter
        #    self.cFitType.SetSelection(self.fitFactories.index('SplitterFitQR'))
        #    self.tThreshold.SetValue('0.5')
        else:
            self.cFitType.SetSelection(
                self.fitFactories.index('LatGaussFitFR'))

        self.cFitType.Bind(wx.EVT_CHOICE, self.OnFitModuleChanged)

        hsizer.Add(self.cFitType, 1, wx.ALIGN_CENTER_VERTICAL, 0)
        vsizer.Add(hsizer, 0, wx.BOTTOM | wx.EXPAND, 2)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)

        item.AddNewElement(pan)

        #        self.cbDrift = wx.CheckBox(item, -1, 'Estimate Drift')
        #        self.cbDrift.SetValue(False)
        #
        #        #_pnl.AddFoldPanelWindow(item, self.cbDrift, fpb.FPB_ALIGN_WIDTH, 7, 5)
        #        item.AddNewElement(self.cbDrift)

        ########################################
        #custom  (fit factory dependant) options
        self.customOptionsPan = wx.Panel(item, -1)
        self.customOptionsSizer = wx.BoxSizer(wx.VERTICAL)
        self.customOptionsPan.SetSizer(self.customOptionsSizer)

        self._populateCustomAnalysisPanel(self.customOptionsPan,
                                          self.customOptionsSizer)

        item.AddNewElement(self.customOptionsPan)

        ######################
        #Go
        self.bGo = wx.Button(item, -1, 'Go')

        self.bGo.Bind(wx.EVT_BUTTON, self.OnGo)
        item.AddNewElement(self.bGo)
        _pnl.AddPane(item)

        self.analysisPanel = item
Ejemplo n.º 25
0
    def GenPSFPanel(self, _pnl):
        item = afp.foldingPane(_pnl, -1, caption="PSF Extraction", pinned=True)

        pan = wx.Panel(item, -1)

        vsizer = wx.BoxSizer(wx.VERTICAL)

        #if self.multiChannel: #we have channels
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Channel:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.chChannel = wx.Choice(pan, -1, choices=self.do.names)

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

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        #
        #        hsizer.Add(wx.StaticText(pan, -1, 'Threshold:'), 0,wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
        #        self.tThreshold = wx.TextCtrl(pan, -1, value='50', size=(40, -1))
        #
        bTagPSF = wx.Button(pan, -1, 'Tag', style=wx.BU_EXACTFIT)
        bTagPSF.Bind(wx.EVT_BUTTON, self.OnTagPSF)
        hsizer.Add(bTagPSF, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        bTagPoints = wx.Button(pan, -1, 'Tag Points', style=wx.BU_EXACTFIT)
        bTagPoints.Bind(wx.EVT_BUTTON, self.OnTagPoints)
        hsizer.Add(bTagPoints, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        bClearTagged = wx.Button(pan, -1, 'Clear', style=wx.BU_EXACTFIT)
        bClearTagged.Bind(wx.EVT_BUTTON, self.OnClearTags)
        hsizer.Add(bClearTagged, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'ROI Size:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.tPSFROI = wx.TextCtrl(pan, -1, value='30,30,30', size=(40, -1))
        hsizer.Add(self.tPSFROI, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
        self.tPSFROI.Bind(wx.EVT_TEXT, self.OnPSFROI)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'Blur:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

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

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(wx.StaticText(pan, -1, 'PSF Type:'), 0,
                   wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        self.chType = wx.Choice(pan,
                                -1,
                                choices=['Widefield', 'Confocal'],
                                size=(40, -1))
        hsizer.Add(self.chType, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
        if 'Camera.IntegrationTime' in self.image.mdh.getEntryNames():
            #most likely widefield
            self.chType.SetSelection(0)
        else:
            #most likely confocal
            #confocal is a safe default as widefield just does some fancy extra
            #background correction
            self.chType.SetSelection(1)

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

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        bExtract = wx.Button(pan, -1, 'Extract', style=wx.BU_EXACTFIT)
        bExtract.Bind(wx.EVT_BUTTON, self.OnExtractPSF)
        hsizer.Add(bExtract, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

        bExtractSplit = wx.Button(pan,
                                  -1,
                                  'Extract Split',
                                  style=wx.BU_EXACTFIT)
        bExtractSplit.Bind(wx.EVT_BUTTON, self.OnExtractSplitPSF)
        hsizer.Add(bExtractSplit, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)

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

        bAxialShift = wx.Button(pan,
                                -1,
                                'Estimate axial shift',
                                style=wx.BU_EXACTFIT)
        bAxialShift.Bind(wx.EVT_BUTTON, self.OnCalcShift)
        vsizer.Add(bAxialShift, 0, wx.ALL | wx.ALIGN_RIGHT, 5)

        pan.SetSizer(vsizer)
        vsizer.Fit(pan)

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