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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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)