def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Spacing/Angle Calculator') sbszauto = wx.StaticBoxSizer(sb, wx.VERTICAL) szoptions = wx.GridBagSizer(5, 5) ## auto raster self.widgets['raster preset'] = PresetChoice(self, -1) presets = self.node.presetsclient.getPresetNames() self.widgets['raster preset'].setChoices(presets) self.widgets['raster overlap'] = FloatEntry(self, -1, chars=8) movetypes = self.node.calclients.keys() self.widgets['raster movetype'] = Choice(self, -1, choices=movetypes) self.autobut = wx.Button( self, -1, 'Calculate spacing and angle using the following parameters:') szauto = wx.GridBagSizer(5, 5) szauto.Add(self.autobut, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Raster Preset') szauto.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szauto.Add(self.widgets['raster preset'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Overlap percent') szauto.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szauto.Add(self.widgets['raster overlap'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Move Type') szauto.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szauto.Add(self.widgets['raster movetype'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) sbszauto.Add(szauto, 1, wx.EXPAND | wx.ALL, 5) self.Bind(wx.EVT_BUTTON, self.onAutoButton, self.autobut) ## end of auto raster szoptions.Add(sbszauto, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Raster Spacing') self.widgets['raster spacing'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['raster spacing'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Raster Angle') self.widgets['raster angle'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['raster angle'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szbutton = wx.GridBagSizer(5, 5) self.bclear = wx.Button(self, -1, 'Clear Targets') szbutton.Add(self.bclear, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT) szbutton.AddGrowableCol(0) self.Bind(wx.EVT_BUTTON, self.onClearButton, self.bclear) self.btest = wx.Button(self, -1, 'Test') szbutton.Add(self.btest, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) szbutton.AddGrowableCol(1) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.btest) return [szoptions, szbutton]
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Stuff') sbsz= wx.StaticBoxSizer(sb, wx.VERTICAL) sz = wx.GridBagSizer(5, 5) self.gobut = wx.Button(self, -1, 'Go') sz.Add(self.gobut, (0, 0), (1, 1), wx.ALIGN_CENTER) self.testbut = wx.Button(self, -1, 'Test') sz.Add(self.testbut, (0, 1), (1, 1), wx.ALIGN_CENTER) lab = wx.StaticText(self, -1, 'minsize') self.widgets['minsize'] = FloatEntry(self, -1) sz.Add(lab, (1,0), (1,1)) sz.Add(self.widgets['minsize'], (1,1), (1,1)) lab = wx.StaticText(self, -1, 'maxsize') self.widgets['maxsize'] = FloatEntry(self, -1) sz.Add(lab, (2,0), (1,1)) sz.Add(self.widgets['maxsize'], (2,1), (1,1)) lab = wx.StaticText(self, -1, 'pause') self.widgets['pause'] = FloatEntry(self, -1) sz.Add(lab, (3,0), (1,1)) sz.Add(self.widgets['pause'], (3,1), (1,1)) lab = wx.StaticText(self, -1, 'label') self.widgets['label'] = Entry(self, -1) sz.Add(lab, (4,0), (1,1)) sz.Add(self.widgets['label'], (4,1), (1,1)) lab = wx.StaticText(self, -1, 'threshold') self.widgets['threshold'] = FloatEntry(self, -1) sz.Add(lab, (5,0), (1,1)) sz.Add(self.widgets['threshold'], (5,1), (1,1)) lab = wx.StaticText(self, -1, 'maxcount') self.widgets['maxcount'] = IntEntry(self, -1) sz.Add(lab, (6,0), (1,1)) sz.Add(self.widgets['maxcount'], (6,1), (1,1)) lab = wx.StaticText(self, -1, 'minbright') self.widgets['minbright'] = FloatEntry(self, -1) sz.Add(lab, (7,0), (1,1)) sz.Add(self.widgets['minbright'], (7,1), (1,1)) lab = wx.StaticText(self, -1, 'maxbright') self.widgets['maxbright'] = FloatEntry(self, -1) sz.Add(lab, (8,0), (1,1)) sz.Add(self.widgets['maxbright'], (8,1), (1,1)) lab = wx.StaticText(self, -1, 'cutoffpercent') self.widgets['cutoffpercent'] = FloatEntry(self, -1) sz.Add(lab, (9,0), (1,1)) sz.Add(self.widgets['cutoffpercent'], (9,1), (1,1)) lab = wx.StaticText(self, -1, 'magsteps') self.widgets['magsteps'] = IntEntry(self, -1) sz.Add(lab, (10,0), (1,1)) sz.Add(self.widgets['magsteps'], (10,1), (1,1)) lab = wx.StaticText(self, -1, 'mag1') self.widgets['mag1'] = IntEntry(self, -1) sz.Add(lab, (11,0), (1,1)) sz.Add(self.widgets['mag1'], (11,1), (1,1)) lab = wx.StaticText(self, -1, 'mag2') self.widgets['mag2'] = IntEntry(self, -1) sz.Add(lab, (12,0), (1,1)) sz.Add(self.widgets['mag2'], (12,1), (1,1)) sbsz.Add(sz, 0, wx.EXPAND|wx.ALL, 5) self.Bind(wx.EVT_BUTTON, self.onGo, self.gobut) self.Bind(wx.EVT_BUTTON, self.onTest, self.testbut) return [sbsz,]
def addTiltSettings(self): sb = wx.StaticBox(self, -1, 'Tilt Options') sbsz = wx.StaticBoxSizer(sb, wx.VERTICAL) sizer = wx.GridBagSizer(5, 4) bordersize = 3 label = wx.StaticText(self, -1, 'Activation Interval') sizer.Add(label, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) self.widgets['activation interval'] = IntEntry(self, -1, chars=5, style=wx.ALIGN_RIGHT) sizer.Add(self.widgets['activation interval'], (0,2), (1,2), wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'List of Tilts to Collect (in degrees)') sizer.Add(label, (1, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) self.widgets['tilts'] = Entry(self, -1, chars=15, style=wx.ALIGN_RIGHT) sizer.Add(self.widgets['tilts'], (1,2), (1,2), wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Maximum Tilt Stepsize (in degrees)') sizer.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['stepsize'] = IntEntry(self, -1, chars=2, value='15') sizer.Add(self.widgets['stepsize'], (2,1), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Pause Between Steps') sizer.Add(label, (2, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['pause'] = FloatEntry(self, -1, chars=2, value='1') sizer.Add(self.widgets['pause'], (2,3), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Min Feature Size') sizer.Add(label, (3,0), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['minsize'] = FloatEntry(self, -1, chars=6, value='0.0') sizer.Add(self.widgets['minsize'], (3,1), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Max Feature Size') sizer.Add(label, (3, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['maxsize'] = FloatEntry(self, -1, chars=6, value='0.0') sizer.Add(self.widgets['maxsize'], (3,3), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Median Filter (pixels)') sizer.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['medfilt'] = IntEntry(self, -1, chars=2, value='0') sizer.Add(self.widgets['medfilt'], (4,1), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'LowPass Filter (pixels)') sizer.Add(label, (4, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['lowfilt'] = FloatEntry(self, -1, chars=2, value='0.0') sizer.Add(self.widgets['lowfilt'], (4,3), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Drift threshold') sizer.Add(label, (5, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['drift threshold'] = FloatEntry(self, -1, chars=6, value='0.0') sizer.Add(self.widgets['drift threshold'], (5,1), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) label = wx.StaticText(self, -1, 'Drift preset') sizer.Add(label, (5, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) presets = self.node.presetsclient.getPresetNames() self.widgets['drift preset'] = PresetChoice(self, -1) self.widgets['drift preset'].setChoices(presets) sizer.Add(self.widgets['drift preset'], (5,3), (1,1), wx.ALL|wx.ALIGN_CENTER_VERTICAL, bordersize) sbsz.Add(sizer, 0, wx.ALIGN_CENTER|wx.ALL, 2) return sbsz
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Ice Thickness Threshold') sbszice = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Focus Template Thickness') sbszftt = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Target Template') sbsztt = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['ice min mean'] = FloatEntry(self, -1, chars=6) self.widgets['ice max mean'] = FloatEntry(self, -1, chars=6) self.widgets['ice max std'] = FloatEntry(self, -1, chars=6) self.widgets['focus hole'] = Choice(self, -1, choices=self.node.focustypes) self.widgets['target template'] = wx.CheckBox(self, -1, 'Use target template') self.widgets['focus template'] = leginon.gui.wx.TargetTemplate.Panel(self, 'Focus Target Template', autofill=True) self.widgets['acquisition template'] = leginon.gui.wx.TargetTemplate.Panel(self, 'Acquisition Target Template', autofill=True) self.widgets['focus template thickness'] = wx.CheckBox(self, -1, 'Use focus template thickness and limit to one focus target') self.widgets['focus stats radius'] = IntEntry(self, -1, chars=6) self.widgets['focus min mean thickness'] = FloatEntry(self, -1, chars=6) self.widgets['focus max mean thickness'] = FloatEntry(self, -1, chars=6) self.widgets['focus max stdev thickness'] = FloatEntry(self, -1, chars=6) szice = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Min. mean:') szice.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice min mean'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Max. mean:') szice.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice max mean'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Max. stdev.:') szice.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice max std'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Focus hole selection:') szice.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['focus hole'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szice.AddGrowableCol(1) sbszice.Add(szice, 1, wx.EXPAND|wx.ALL, 5) szftt = wx.GridBagSizer(5, 5) szftt.Add(self.widgets['focus template thickness'], (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Stats. radius:') szftt.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szftt.Add(self.widgets['focus stats radius'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Min. mean thickness:') szftt.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szftt.Add(self.widgets['focus min mean thickness'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Max. mean thickness:') szftt.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szftt.Add(self.widgets['focus max mean thickness'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Max. std. thickness:') szftt.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szftt.Add(self.widgets['focus max stdev thickness'], (4, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) szftt.AddGrowableCol(1) sbszftt.Add(szftt, 1, wx.EXPAND|wx.ALL, 5) sztt = wx.GridBagSizer(5, 5) sztt.Add(self.widgets['target template'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sztt.Add(sbszftt, (1, 0), (3, 1), wx.ALIGN_CENTER) sztt.Add(self.widgets['focus template'], (0, 1), (2, 1), wx.ALIGN_CENTER|wx.EXPAND) sztt.Add(self.widgets['acquisition template'], (2, 1), (2, 1), wx.ALIGN_CENTER|wx.EXPAND) sztt.AddGrowableCol(1) sztt.AddGrowableRow(0) sztt.AddGrowableRow(2) sbsztt.Add(sztt, 1, wx.EXPAND|wx.ALL, 5) self.bice = wx.Button(self, -1, '&Test targeting') self.cice = wx.Button(self, -1, '&Clear targets') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.cice, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT) szbutton.Add(self.bice, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szbutton.AddGrowableCol(1) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.bice) self.Bind(wx.EVT_BUTTON, self.onClearButton, self.cice) self.growrows = [False, True, False,] return [sbszice, sbsztt, szbutton]
def addTomoBasicSettings(self): tiltsb = wx.StaticBox(self, -1, 'Tilt') tiltsbsz = wx.StaticBoxSizer(tiltsb, wx.VERTICAL) expsb = wx.StaticBox(self, -1, 'Exposure') expsbsz = wx.StaticBoxSizer(expsb, wx.VERTICAL) miscsb = wx.StaticBox(self, -1, 'Misc.') miscsbsz = wx.StaticBoxSizer(miscsb, wx.VERTICAL) # tiltsbsz self.widgets['tilt min'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['tilt max'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['tilt start'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['tilt step'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') tiltsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Min.') tiltsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt min'], (0, 1), (1, 1), wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Max.') tiltsz.Add(label, (0, 2), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt max'], (0, 3), (1, 1), wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Start') tiltsz.Add(label, (0, 4), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt start'], (0, 5), (1, 1), wx.ALIGN_LEFT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Step') tiltsz.Add(label, (0, 6), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt step'], (0, 7), (1, 1), wx.ALIGN_LEFT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'degree(s)') tiltsz.Add(label, (0, 8), (1, 1), wx.ALIGN_CENTER_VERTICAL) tiltsbsz.Add(tiltsz, 0, wx.EXPAND | wx.ALL, 5) #expsz self.widgets['dose'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=7, value='200.0') expsz = wx.GridBagSizer(5, 10) label = wx.StaticText(self, -1, 'Total dose') expsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) expsz.Add(self.widgets['dose'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'e-/A^2') expsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) expsz.AddGrowableCol(0) expsz.AddGrowableRow(0) expsbsz.Add(expsz, 1, wx.EXPAND | wx.ALL, 5) #misc self.widgets['integer'] = wx.CheckBox(self, -1, 'Scale by') self.widgets['intscale'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='10.0') self.widgets['mean threshold'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='100.0') intsz = wx.GridBagSizer(5, 5) intsz.Add(self.widgets['integer'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) intsz.Add(self.widgets['intscale'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'to convert to integer') intsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) mtsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Consider images with less than') mtsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) mtsz.Add(self.widgets['mean threshold'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'counts as obstructed') mtsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz = wx.GridBagSizer(5, 10) miscsz.Add(intsz, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz.Add(mtsz, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsbsz.Add(miscsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) # overall sz = wx.GridBagSizer(5, 5) sz.Add(tiltsbsz, (0, 0), (1, 2), wx.EXPAND) sz.Add(expsbsz, (1, 0), (1, 1), wx.EXPAND) sz.Add(miscsbsz, (1, 1), (1, 1), wx.EXPAND) sz.AddGrowableRow(0) sz.AddGrowableRow(1) sz.AddGrowableCol(0) sz.AddGrowableCol(1) return sz
def addSettings(self): overridebox = wx.StaticBox(self, -1, "Override Preset during Testing") overridesz = wx.StaticBoxSizer(overridebox, wx.VERTICAL) errbox = wx.StaticBox(self, -1, "Error Checking and Correction during Testing") errsz = wx.StaticBoxSizer(errbox, wx.VERTICAL) # pause time self.widgets['pause time'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=4, value='0.0') szpausetime = wx.GridBagSizer(5, 5) szpausetime.Add(wx.StaticText(self, -1, 'Wait'), (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szpausetime.Add(self.widgets['pause time'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) szpausetime.Add( wx.StaticText(self, -1, 'seconds before acquiring image'), (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) # override preset self.widgets['override preset'] = wx.CheckBox(self, -1, 'Override Preset') self.widgets['instruments'] = leginon.gui.wx.Instrument.SelectionPanel( self, passive=True) self.panel.setInstrumentSelection(self.widgets['instruments']) self.widgets['camera settings'] = leginon.gui.wx.Camera.CameraPanel( self) self.widgets['camera settings'].setGeometryLimits({ 'size': self.node.instrument.camerasize, 'binnings': self.node.instrument.camerabinnings, 'binmethod': self.node.instrument.camerabinmethod }) self.widgets['background readout'] = wx.CheckBox( self, -1, 'Background Readout') sz = wx.GridBagSizer(5, 10) sz.Add(self.widgets['override preset'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['instruments'], (1, 0), (1, 1), wx.EXPAND) sz.Add(self.widgets['camera settings'], (2, 0), (1, 1), wx.EXPAND) sz.Add(self.widgets['background readout'], (3, 0), (1, 1), wx.EXPAND) overridesz.Add(sz, 0, wx.ALIGN_CENTER | wx.ALL, 5) # error checking and correction self.widgets['check calibration'] = wx.CheckBox( self, -1, 'Measure move error') precsz = wx.GridBagSizer(5, 5) label1 = wx.StaticText(self, -1, 'Move to within') self.widgets['precision'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=6, value='0.0') label2 = wx.StaticText(self, -1, 'm of clicked position') precsz.Add(label1, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) precsz.Add(self.widgets['precision'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) precsz.Add(label2, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label1 = wx.StaticText(self, -1, 'Acceptable distance:') self.widgets['accept precision'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=6, value='1e-3') label2 = wx.StaticText(self, -1, '(m) if move error get worse') precsz.Add(label1, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) precsz.Add(self.widgets['accept precision'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) precsz.Add(label2, (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['final image shift'] = wx.CheckBox( self, -1, 'Final Image Shift') precsz.Add(self.widgets['final image shift'], (2, 0), (1, 2)) #maxerrsz = wx.GridBagSizer(5, 5) #label = wx.StaticText(self, -1, 'Local Correlation Size (pixels)') #self.widgets['max error'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=6, value='0.0') #maxerrsz.Add(label, (0, 0), (1, 1)) #maxerrsz.Add(self.widgets['max error'], (0, 1), (1, 1), # wx.ALIGN_CENTER_VERTICAL) hysfixsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, '') self.widgets['cycle after'] = wx.CheckBox( self, -1, 'Preset cycle after final move') self.widgets['cycle each'] = wx.CheckBox( self, -1, 'Preset cycle after each move') hysfixsz.Add(self.widgets['cycle after'], (0, 0), (1, 1)) hysfixsz.Add(self.widgets['cycle each'], (1, 0), (1, 1)) ## ccsz = wx.GridBagSizer(5, 5) ccsz.Add(self.widgets['check calibration'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) #sz.Add(maxerrsz, (1, 0), (1, 1), # wx.ALIGN_CENTER_VERTICAL) ccsz.Add(precsz, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) ccsz.Add(hysfixsz, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) errsz.Add(ccsz, 0, wx.ALIGN_CENTER | wx.ALL, 5) # settings sizer sz = wx.GridBagSizer(5, 10) sz.Add(overridesz, (0, 0), (6, 1)) sz.Add(szpausetime, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(errsz, (3, 1), (1, 1)) #sz.AddGrowableRow(2) return sz
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Robot') sbsz = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['column pressure threshold'] = FloatEntry(self, -1, min=0.0, chars=6) self.widgets['default Z position'] = FloatEntry(self, -1, min=-2.0, chars=8) self.widgets['simulate'] = wx.CheckBox( self, -1, 'Simulate Robot Insert/Extraction') self.widgets['turbo on'] = wx.CheckBox(self, -1, 'Turbo Pump Always On') self.widgets['grid clear wait'] = wx.CheckBox( self, -1, 'Wait for User Confirmation of Grid Clearing') self.widgets['pause'] = wx.CheckBox(self, -1, 'Pause before Extraction') szcolumnpressure = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Column pressure threshold:') szcolumnpressure.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szcolumnpressure.Add(self.widgets['column pressure threshold'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) szdefzposition = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Default Z Position:') szdefzposition.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szdefzposition.Add(self.widgets['default Z position'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) szsimu = wx.GridBagSizer(5, 5) szsimu.Add(self.widgets['simulate'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szpump = wx.GridBagSizer(5, 5) szpump.Add(self.widgets['turbo on'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz = wx.GridBagSizer(5, 5) szgridclear = wx.GridBagSizer(5, 5) szgridclear.Add(self.widgets['grid clear wait'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz = wx.GridBagSizer(5, 5) szpause = wx.GridBagSizer(5, 5) szpause.Add(self.widgets['pause'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(szcolumnpressure, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(szdefzposition, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(szsimu, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(szpump, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(szgridclear, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(szpause, (5, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sbsz.Add(sz, 0, wx.ALIGN_CENTER | wx.ALL, 5) return [sbsz]
class PartCutoffDialog(wx.Dialog): #================== def __init__(self, parent): self.parent = parent ### get stats rmsd = self.parent.getRmsdArray() worstvalstr = "%.3f" % (rmsd.max()) meanvalstr = "%.3f +/- %.3f" % (rmsd.mean(), rmsd.std()) minworsterrstr = "%.3f" % (self.parent.minworsterr) ### create dialog wx.Dialog.__init__(self, self.parent.frame, -1, "Particle Cutoff Removal") ### create input area inforow = wx.FlexGridSizer(3, 2, 15, 15) meanlabel = wx.StaticText(self, -1, "Current mean RMSD: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) meanvalue = wx.StaticText(self, -1, meanvalstr, style=wx.ALIGN_CENTER | wx.ALIGN_CENTER_VERTICAL) inforow.Add(meanlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( meanvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) worstlabel = wx.StaticText(self, -1, "Current worst RMSD: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) worstvalue = wx.StaticText(self, -1, worstvalstr, style=wx.ALIGN_CENTER | wx.ALIGN_CENTER_VERTICAL) inforow.Add(worstlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( worstvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) cutofflabel = wx.StaticText(self, -1, "RMSD cutoff: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.cutoffvalue = FloatEntry(self, -1, allownone=False, chars=8, value=minworsterrstr) inforow.Add(cutofflabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( self.cutoffvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) ### create button area cancelcutoff = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.applycutoff = wx.Button(self, wx.ID_APPLY, '&Apply') self.Bind(wx.EVT_BUTTON, self.onApplyCutoff, self.applycutoff) buttonrow = wx.GridSizer(1, 2) buttonrow.Add(cancelcutoff, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.applycutoff, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) ### merge input and button areas self.sizer = wx.FlexGridSizer(2, 1) self.sizer.Add(inforow, 0, wx.EXPAND | wx.ALL, 10) self.sizer.Add(buttonrow, 0, wx.EXPAND | wx.ALL, 5) self.SetSizerAndFit(self.sizer) #================== def onApplyCutoff(self, evt): ### get values cutoff = self.cutoffvalue.GetValue() a1 = self.parent.getArray1() a2 = self.parent.getArray2() rmsd = self.parent.getRmsdArray() ### must set a lower bound if cutoff < rmsd.mean(): self.Destroy() dialog = wx.MessageDialog( self.parent.frame, "Particle Cutoff must be greater than the mean error", 'Error', wx.OK | wx.ICON_ERROR) dialog.ShowModal() dialog.Destroy() return ### find good particles g1 = [] g2 = [] for i, val in enumerate(rmsd): if val < cutoff: g1.append(a1[i]) g2.append(a2[i]) ### replace existing particles with only good ones apDisplay.printMsg("Eliminated " + str(len(a1) - len(g1)) + " particles") self.parent.panel1.setTargets('Worst', []) self.parent.panel2.setTargets('Worst', []) self.parent.panel1.setTargets('Picked', g1) self.parent.panel2.setTargets('Picked', g2) self.parent.onUpdate(None) self.parent.statbar.PushStatusText( "Removed " + str(len(a1) - len(g1)) + " particles", 0) self.Destroy() return
def __init__(self, parent): self.parent = parent ### get stats rmsd = self.parent.getRmsdArray() worstvalstr = "%.3f" % (rmsd.max()) meanvalstr = "%.3f +/- %.3f" % (rmsd.mean(), rmsd.std()) minworsterrstr = "%.3f" % (self.parent.minworsterr) ### create dialog wx.Dialog.__init__(self, self.parent.frame, -1, "Particle Cutoff Removal") ### create input area inforow = wx.FlexGridSizer(3, 2, 15, 15) meanlabel = wx.StaticText(self, -1, "Current mean RMSD: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) meanvalue = wx.StaticText(self, -1, meanvalstr, style=wx.ALIGN_CENTER | wx.ALIGN_CENTER_VERTICAL) inforow.Add(meanlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( meanvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) worstlabel = wx.StaticText(self, -1, "Current worst RMSD: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) worstvalue = wx.StaticText(self, -1, worstvalstr, style=wx.ALIGN_CENTER | wx.ALIGN_CENTER_VERTICAL) inforow.Add(worstlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( worstvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) cutofflabel = wx.StaticText(self, -1, "RMSD cutoff: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.cutoffvalue = FloatEntry(self, -1, allownone=False, chars=8, value=minworsterrstr) inforow.Add(cutofflabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( self.cutoffvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) ### create button area cancelcutoff = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.applycutoff = wx.Button(self, wx.ID_APPLY, '&Apply') self.Bind(wx.EVT_BUTTON, self.onApplyCutoff, self.applycutoff) buttonrow = wx.GridSizer(1, 2) buttonrow.Add(cancelcutoff, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.applycutoff, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) ### merge input and button areas self.sizer = wx.FlexGridSizer(2, 1) self.sizer.Add(inforow, 0, wx.EXPAND | wx.ALL, 10) self.sizer.Add(buttonrow, 0, wx.EXPAND | wx.ALL, 5) self.SetSizerAndFit(self.sizer)
class EditPlanDialog(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__(self, parent.GetParent(), -1, 'Edit Plan') self.parent = parent self.plan = parent.plan strows = wx.StaticText(self, -1, 'Bad rows:') stcolumns = wx.StaticText(self, -1, 'Bad columns:') stpixels = wx.StaticText(self, -1, 'Bad Pixel (x,y):') pixels = ', '.join(map(str, self.plan['pixels'])) rows = ', '.join(map(str, self.plan['rows'])) columns = ', '.join(map(str, self.plan['columns'])) self.tcrows = wx.TextCtrl(self, -1, rows) self.tccolumns = wx.TextCtrl(self, -1, columns) self.tcpixels = wx.TextCtrl(self, -1, pixels) self.cdespike = wx.CheckBox(self, -1, 'Despike images') self.cdespike_size = IntEntry(self, -1, min=1, chars=4) self.cdespike_threshold = FloatEntry(self, -1, min=0, chars=4) self.cdespike.SetValue(self.plan['despike']) self.cdespike_size.SetValue(self.plan['despike size']) self.cdespike_threshold.SetValue(self.plan['despike threshold']) szdespike = wx.GridBagSizer(5, 5) szdespike.Add(self.cdespike, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Neighborhood size:') szdespike.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szdespike.Add( self.cdespike_size, (1, 1), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Threshold:') szdespike.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szdespike.Add( self.cdespike_threshold, (2, 1), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) szdespike.AddGrowableCol(1) bsave = wx.Button(self, wx.ID_OK, 'Save') bcancel = wx.Button(self, wx.ID_CANCEL, 'Cancel') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(bsave, (0, 0), (1, 1), wx.ALIGN_CENTER) szbutton.Add(bcancel, (0, 1), (1, 1), wx.ALIGN_CENTER) szplan = wx.GridBagSizer(5, 5) szplan.Add(strows, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szplan.Add(self.tcrows, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szplan.Add(stcolumns, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szplan.Add(self.tccolumns, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szplan.Add(stpixels, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szplan.Add(self.tcpixels, (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szplan.Add(szdespike, (3, 0), (1, 2), wx.EXPAND) sz = wx.GridBagSizer(5, 5) sz.Add(szplan, (0, 0), (1, 1), wx.ALIGN_RIGHT | wx.ALL, border=5) sz.Add(szbutton, (1, 0), (1, 1), wx.ALIGN_RIGHT | wx.ALL, border=5) self.SetSizerAndFit(sz) self.Bind(wx.EVT_BUTTON, self.onSave, bsave) def onSave(self, evt): try: rows = str2plan(self.tcrows.GetValue()) columns = str2plan(self.tccolumns.GetValue()) pixels = str2pixels(self.tcpixels.GetValue()) except ValueError: dialog = wx.MessageDialog(self, 'Invalid plan', 'Error', wx.OK | wx.ICON_ERROR) dialog.ShowModal() dialog.Destroy() else: self.plan = { 'rows': rows, 'columns': columns, 'pixels': pixels, 'despike': self.cdespike.GetValue(), 'despike size': self.cdespike_size.GetValue(), 'despike threshold': self.cdespike_threshold.GetValue() } evt.Skip()
class MeasureComafreeDialog(wx.Dialog): def __init__(self, parent): self.node = parent.node self.panel = parent wx.Dialog.__init__(self, parent, -1, 'Measure Coma-free Beam Tilt') self.measure = wx.Button(self, -1, 'Measure') self.correctshift = wx.CheckBox(self, -1, 'Correct image-shift-induced beam tilt') self.correct = wx.Button(self, -1, 'Correct Beam Tilt') self.correct.Enable(False) self.Bind(wx.EVT_BUTTON, self.onMeasureButton, self.measure) self.Bind(wx.EVT_BUTTON, self.onCorrectButton, self.correct) szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.correctshift, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.EXPAND) szbutton.Add(self.measure, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.EXPAND) szbutton.Add(self.correct, (2, 0), (1, 1), wx.EXPAND) sbsz = wx.GridBagSizer(5, 5) tiltlabel = wx.StaticText(self, -1, 'Tilt (radian):') self.tiltvalue = FloatEntry(self, -1, allownone=False, chars=5, value='0.005') sbsz.Add(tiltlabel, (0,0), (1,1)) sbsz.Add(self.tiltvalue, (0,1), (1,1)) self.labels = {} self.labels['comatilt'] = {} for axis in ('x', 'y'): self.labels['comatilt'][axis] = wx.StaticText(self, -1, '(Not measured)') szresult = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Beam Tilt Adjustment') szresult.Add(label, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'x') szresult.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.Add(self.labels['comatilt']['x'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'y') szresult.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.Add(self.labels['comatilt']['y'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.AddGrowableRow(0) szresult.AddGrowableRow(1) szresult.AddGrowableRow(2) szresult.AddGrowableCol(1) self.sizer = wx.GridBagSizer(5, 5) self.sizer.Add(sbsz, (0, 0), (1, 2), wx.EXPAND|wx.ALL, 10) self.sizer.Add(szresult, (1, 0), (2, 2), wx.EXPAND|wx.ALL, 10) self.sizer.Add(szbutton, (3, 0), (2, 2), wx.ALIGN_CENTER_VERTICAL|wx.EXPAND|wx.ALL, 10) self.SetSizerAndFit(self.sizer) def onMeasureButton(self, evt): btilt = self.tiltvalue.GetValue() correctshift = self.correctshift.GetValue() self.panel._calibrationEnable(False) threading.Thread(target=self.node.measureComaFree, args=(btilt,correctshift)).start() def onCorrectButton(self, evt): self.panel.instrumentEnable(False) threading.Thread(target=self.node.correctComaTilt).start()
def addSettings(self): presets = self.node.presetsclient.getPresetNames() self.widgets['preset'] = PresetChoice(self, -1) self.widgets['preset'].setChoices(presets) self.widgets['label'] = Entry(self, -1, allowspaces=False) self.widgets['radius'] = FloatEntry(self, -1, min=0.0, chars=6) self.widgets['max size'] = IntEntry(self, -1, chars=6) self.widgets['max targets'] = IntEntry(self, -1, chars=6) self.widgets['overlap'] = FloatEntry(self, -1, max=100.0, chars=6) self.widgets['mosaic center'] = Choice( self, -1, choices=['stage center', 'current position']) self.widgets['ignore request'] = wx.CheckBox( self, -1, 'Ignore Request to Make Targets from Others') #szradius = wx.GridBagSizer(5, 5) #szradius.Add(self.widgets['radius'], (0, 0), (1, 1), # wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE) #label = wx.StaticText(self, -1, 'meters') #szradius.Add(label, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz = wx.GridBagSizer(5, 10) label = wx.StaticText(self, -1, 'Preset:') sz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['preset'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) label = wx.StaticText(self, -1, 'Label:') sz.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['label'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) label = wx.StaticText(self, -1, 'Radius:') sz.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) #sz.Add(szradius, (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) sz.Add(self.widgets['radius'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'm') sz.Add(label, (2, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Max size:') sz.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['max size'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) label = wx.StaticText(self, -1, 'Max targets:') sz.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['max targets'], (4, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) label = wx.StaticText(self, -1, 'Overlap:') sz.Add(label, (5, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['overlap'], (5, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, '%') sz.Add(label, (5, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Mosaic Center:') sz.Add(label, (6, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['mosaic center'], (6, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) sz.Add(self.widgets['ignore request'], (7, 0), (1, 3), wx.ALIGN_CENTER_VERTICAL) sz.AddGrowableCol(1) return sz
def initialize(self): sizers = leginon.gui.wx.Acquisition.ScrolledSettings.initialize(self) sb = wx.StaticBox(self, -1, 'Tilt Imaging and Correlation') sbsz = wx.StaticBoxSizer(sb, wx.VERTICAL) sizer = wx.GridBagSizer(5, 5) self.widgets['tableau type'] = Choice(self, -1, choices=self.node.tableau_types) label = wx.StaticText(self, -1, 'Tableau Type (method-display):') sizer.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['tableau type'], (0, 1), (1, 1), wx.ALIGN_CENTER) self.widgets['beam tilt'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=6, value='0.005') bt_sizer = wx.GridBagSizer(5, 5) bt_sizer.Add(self.widgets['beam tilt'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) bt_sizer.Add(wx.StaticText(self, -1, 'radian'), (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Beam Tilt:') sizer.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(bt_sizer, (1, 1), (1, 1), wx.ALIGN_CENTER) self.widgets['sites'] = IntEntry(self, -1, min=0, allownone=False, chars=4, value='0') label = wx.StaticText(self, -1, 'Number of tilt directions:') sizer.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['sites'], (2, 1), (1, 1), wx.ALIGN_CENTER) self.widgets['startangle'] = FloatEntry(self, -1, min=0, allownone=False, chars=4, value='0') label = wx.StaticText(self, -1, 'Start Angle:') sizer.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['startangle'], (3, 1), (1, 1), wx.ALIGN_CENTER) label = wx.StaticText(self, -1, 'degrees') sizer.Add(label, (3, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) self.widgets['correlation type'] = Choice( self, -1, choices=self.node.correlation_types) label = wx.StaticText(self, -1, 'Correlation Type:') sizer.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['correlation type'], (4, 1), (1, 1), wx.ALIGN_CENTER) self.widgets['tableau binning'] = IntEntry(self, -1, min=1, allownone=False, chars=4, value='2') label = wx.StaticText(self, -1, 'Tableau Binning:') sizer.Add(label, (5, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['tableau binning'], (5, 1), (1, 1), wx.ALIGN_CENTER) self.widgets['beam tilt count'] = IntEntry(self, -1, min=1, allownone=False, chars=4, value='1') label = wx.StaticText(self, -1, 'Beam Tilt Count:') sizer.Add(label, (6, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['beam tilt count'], (6, 1), (1, 1), wx.ALIGN_CENTER) self.widgets['tableau split'] = IntEntry(self, -1, min=1, allownone=False, chars=4, value='8') label = wx.StaticText(self, -1, 'Tableau Split:') sizer.Add(label, (7, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.widgets['tableau split'], (7, 1), (1, 1), wx.ALIGN_CENTER) sbsz.Add(sizer, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5) self.widgets['tableau type'].Bind(wx.EVT_CHOICE, self.onTableauTypeChoice) return sizers + [sbsz]
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) szoptions = wx.GridBagSizer(5, 5) self.widgets['autofinder'] = wx.CheckBox(self, -1, 'Enable auto targeting') szoptions.Add(self.widgets['autofinder'], (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) choices = [ 'Limit by Sections', 'Sections Only', 'Tissue only', 'Regions from Centers' ] self.widgets['find section options'] = Choice(self, -1, choices=choices) label = wx.StaticText(self, -1, 'Finding Mode') szoptions.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['find section options'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Initial Minimum Region Area (% of tile area)') self.widgets['min region area'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['min region area'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Maximum Region Area (% of tile area)') self.widgets['max region area'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['max region area'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Vertex Evolution Limit') self.widgets['ve limit'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['ve limit'], (4, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Region Min Threshold') self.widgets['min threshold'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (5, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['min threshold'], (5, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Section/Background Threshold') self.widgets['max threshold'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (6, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['max threshold'], (6, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Max Ellipse Axis Ratio') self.widgets['axis ratio'] = FloatEntry(self, -1, chars=8) szoptions.Add(label, (7, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szoptions.Add(self.widgets['axis ratio'], (7, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szsections = wx.GridBagSizer(6, 6) label = wx.StaticText(self, -1, 'Per-Section Area (% of tile area)') self.widgets['section area'] = FloatEntry(self, -1, chars=8) szsections.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szsections.Add(self.widgets['section area'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Maximum Number of Section per Grid') self.widgets['max sections'] = IntEntry(self, -1, min=1, chars=4) szsections.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szsections.Add(self.widgets['max sections'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText( self, -1, 'Per-Section Area Modification Thershold (% of current)') self.widgets['adjust section area'] = FloatEntry(self, -1, chars=8) szsections.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szsections.Add(self.widgets['adjust section area'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szbutton = wx.GridBagSizer(7, 7) self.bclear = wx.Button(self, -1, 'Clear Regions') szbutton.Add(self.bclear, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT) szbutton.AddGrowableCol(0) self.Bind(wx.EVT_BUTTON, self.onClearButton, self.bclear) self.btest = wx.Button(self, -1, 'Test') szbutton.Add(self.btest, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) szbutton.AddGrowableCol(1) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.btest) return [szoptions, szsections, szbutton]
def __init__(self, parent, mag, ps, comment): wx.Dialog.__init__(self, parent, -1, 'Edit Pixel Size') sb = wx.StaticBox(self, -1, 'Pixel Size') sbsz = wx.StaticBoxSizer(sb, wx.VERTICAL) self.stmag = wx.StaticText(self, -1) self.stmag.SetLabel(str(mag)) self.feps = FloatEntry(self, -1, min=0.0, chars=9) self.feps.SetValue(ps) self.tccomment = wx.TextCtrl(self, -1, 'Manual entry', style=wx.TE_MULTILINE) self.tccomment.SetValue(comment) szedit = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Magnification:') szedit.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szedit.Add(self.stmag, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Pixel size:') szedit.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szedit.Add( self.feps, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'm/pixel') szedit.Add(label, (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Comment:') szedit.Add(label, (2, 0), (1, 3), wx.ALIGN_CENTER_VERTICAL) szedit.Add(self.tccomment, (3, 0), (1, 3), wx.EXPAND) szedit.AddGrowableRow(3) szedit.AddGrowableRow(0) szedit.AddGrowableCol(0) szedit.AddGrowableCol(1) szedit.AddGrowableCol(2) sbsz.Add(szedit, 1, wx.EXPAND | wx.ALL, 5) self.bsave = wx.Button(self, wx.ID_OK, 'Save') self.bcancel = wx.Button(self, wx.ID_CANCEL, 'Cancel') if ps is None: self.bsave.Enable(False) else: self.bsave.Enable(True) szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.bsave, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) szbutton.Add(self.bcancel, (0, 1), (1, 1), wx.ALIGN_CENTER) szbutton.AddGrowableCol(0) sz = wx.GridBagSizer(5, 5) sz.Add(sbsz, (0, 0), (1, 1), wx.EXPAND | wx.ALL, 10) sz.Add(szbutton, (1, 0), (1, 1), wx.EXPAND | wx.ALL, 10) self.SetSizerAndFit(sz) self.Bind(wx.EVT_BUTTON, self.validate, self.bsave) self.Bind(leginon.gui.wx.Entry.EVT_ENTRY, self.onPixelSizeEntry, self.feps)
class FitAllDialog(wx.Dialog): #================== def __init__(self, parent): self.parent = parent wx.Dialog.__init__(self, self.parent.frame, -1, "Least Squares Optimization") self.lsfit = None inforow = wx.FlexGridSizer(5, 4, 15, 15) thetastr = "%3.3f" % self.parent.data['theta'] label = wx.StaticText(self, -1, "Tilt angle (theta): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) #self.tiltvalue = wx.StaticText(self, -1, thetastr, style=wx.ALIGN_CENTER|wx.ALIGN_CENTER_VERTICAL) self.thetavalue = FloatEntry(self, -1, allownone=False, chars=8, value=thetastr) label2 = wx.StaticText(self, -1, "degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.thetatog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleTheta, self.thetatog) #self.thetavalue.Enable(False) #self.thetatog.SetValue(1) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( self.thetavalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.thetatog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) gammastr = "%3.3f" % self.parent.data['gamma'] label = wx.StaticText(self, -1, "Image 1 Rotation (gamma): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.gammavalue = FloatEntry(self, -1, allownone=False, chars=8, value=gammastr) label2 = wx.StaticText(self, -1, "degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.gammatog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleGamma, self.gammatog) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.gammavalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.gammatog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) phistr = "%3.3f" % self.parent.data['phi'] label = wx.StaticText(self, -1, "Image 2 Rotation (phi): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.phivalue = FloatEntry(self, -1, allownone=False, chars=8, value=phistr) label2 = wx.StaticText(self, -1, "degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.phitog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onTogglePhi, self.phitog) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.phivalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.phitog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) scalestr = "%3.3f" % self.parent.data['scale'] label = wx.StaticText(self, -1, "Scaling factor: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.scalevalue = FloatEntry(self, -1, allownone=False, chars=8, value=scalestr) label2 = wx.StaticText(self, -1, " ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.scaletog = wx.ToggleButton(self, -1, "Locked") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleScale, self.scaletog) self.scalevalue.Enable(False) self.scaletog.SetValue(1) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.scalevalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.scaletog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) shiftxstr = "%3.3f" % self.parent.data['shiftx'] shiftystr = "%3.3f" % self.parent.data['shifty'] label = wx.StaticText(self, -1, "Shift (x,y) pixels: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.shiftxvalue = FloatEntry(self, -1, allownone=False, chars=8, value=shiftxstr) self.shiftyvalue = FloatEntry(self, -1, allownone=False, chars=8, value=shiftystr) self.shifttog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleShift, self.shifttog) #self.shiftxvalue.Enable(False) #self.shiftyvalue.Enable(False) #self.shifttog.SetValue(1) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.shiftxvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.shiftyvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.shifttog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) summaryrow = wx.GridSizer(1, 4) label = wx.StaticText(self, -1, "RMSD (pixels): ", style=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.rmsdlabel = wx.StaticText(self, -1, " unknown ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(label, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(self.rmsdlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, "Iterations: ", style=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.iterlabel = wx.StaticText(self, -1, " none ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(label, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(self.iterlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.cancelfitall = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.applyfitall = wx.Button(self, wx.ID_APPLY, '&Apply') self.runfitall = wx.Button(self, -1, '&Run') self.Bind(wx.EVT_BUTTON, self.onRunLeastSquares, self.runfitall) self.Bind(wx.EVT_BUTTON, self.onApplyLeastSquares, self.applyfitall) buttonrow = wx.GridSizer(1, 3) buttonrow.Add(self.cancelfitall, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.applyfitall, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.runfitall, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) self.sizer = wx.FlexGridSizer(3, 1) self.sizer.Add(inforow, 0, wx.EXPAND | wx.ALL, 10) self.sizer.Add(summaryrow, 0, wx.EXPAND | wx.ALL, 5) self.sizer.Add(buttonrow, 0, wx.EXPAND | wx.ALL, 5) self.SetSizerAndFit(self.sizer) self.onToggleScale(True) #================== def onToggleTheta(self, evt): if self.thetatog.GetValue() is True: self.thetavalue.Enable(False) self.thetatog.SetLabel("Locked") else: self.thetavalue.Enable(True) self.thetatog.SetLabel("Refine") #================== def onToggleGamma(self, evt): if self.gammatog.GetValue() is True: self.gammavalue.Enable(False) self.gammatog.SetLabel("Locked") else: self.gammavalue.Enable(True) self.gammatog.SetLabel("Refine") #================== def onTogglePhi(self, evt): if self.phitog.GetValue() is True: self.phivalue.Enable(False) self.phitog.SetLabel("Locked") else: self.phivalue.Enable(True) self.phitog.SetLabel("Refine") #================== def onTogglePhi(self, evt): if self.phitog.GetValue() is True: self.phivalue.Enable(False) self.phitog.SetLabel("Locked") else: self.phivalue.Enable(True) self.phitog.SetLabel("Refine") #================== def onToggleScale(self, evt): if self.scaletog.GetValue() is True: self.scalevalue.Enable(False) self.scaletog.SetLabel("Locked") else: self.scalevalue.Enable(True) self.scaletog.SetLabel("Refine") #================== def onToggleShift(self, evt): if self.shifttog.GetValue() is True: self.shiftxvalue.Enable(False) self.shiftyvalue.Enable(False) self.shifttog.SetLabel("Locked") else: self.shiftxvalue.Enable(True) self.shiftyvalue.Enable(True) self.shifttog.SetLabel("Refine") #================== def onRunLeastSquares(self, evt): theta = self.thetavalue.GetValue() gamma = self.gammavalue.GetValue() phi = self.phivalue.GetValue() scale = self.scalevalue.GetValue() shiftx = self.shiftxvalue.GetValue() shifty = self.shiftyvalue.GetValue() #SET XSCALE xscale = numpy.array(( not self.thetatog.GetValue(), not self.gammatog.GetValue(), not self.phitog.GetValue(), not self.scaletog.GetValue(), not self.shifttog.GetValue(), not self.shifttog.GetValue(), ), dtype=numpy.float32) #GET TARGETS targets1 = self.parent.panel1.getTargets('Picked') a1 = self.parent.targetsToArray(targets1) targets2 = self.parent.panel2.getTargets('Picked') a2 = self.parent.targetsToArray(targets2) if len(a1) > len(a2): print "shorten a1" a1 = a1[0:len(a2), :] elif len(a2) > len(a1): print "shorten a2" a2 = a2[0:len(a1), :] self.lsfit = apTiltTransform.willsq(a1, a2, theta, gamma, phi, scale, shiftx, shifty, xscale) #pprint.pprint(self.lsfit) self.thetavalue.SetValue(round(self.lsfit['theta'], 5)) self.gammavalue.SetValue(round(self.lsfit['gamma'], 5)) self.phivalue.SetValue(round(self.lsfit['phi'], 5)) self.scalevalue.SetValue(round(self.lsfit['scale'], 5)) self.shiftxvalue.SetValue(round(self.lsfit['shiftx'], 5)) self.shiftyvalue.SetValue(round(self.lsfit['shifty'], 5)) self.rmsdlabel.SetLabel(str(round(self.lsfit['rmsd'], 5))) self.iterlabel.SetLabel(str(self.lsfit['iter'])) #================== def onApplyLeastSquares(self, evt): self.Close() self.parent.data['leastsqfitdata'] = self.lsfit self.parent.data['theta'] = self.thetavalue.GetValue() self.parent.data['gamma'] = self.gammavalue.GetValue() self.parent.data['phi'] = self.phivalue.GetValue() self.parent.data['scale'] = self.scalevalue.GetValue() self.parent.data['shiftx'] = self.shiftxvalue.GetValue() self.parent.data['shifty'] = self.shiftyvalue.GetValue() self.parent.data['rmsd'] = self.lsfit['rmsd'] self.parent.data['point1'] = self.lsfit['point1'] self.parent.data['point2'] = self.lsfit['point2'] self.parent.data['optimrun'] = True self.parent.onUpdate(evt)
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Pixel Size Measurement') sbsz = wx.StaticBoxSizer(sb, wx.VERTICAL) sbl = wx.StaticBox(self, -1, 'Lattice Parameters') sblsz = wx.StaticBoxSizer(sbl, wx.VERTICAL) sbm = wx.StaticBox(self, -1, 'Distance Measured Between reflections') sbmsz = wx.StaticBoxSizer(sbm, wx.VERTICAL) sbp = wx.StaticBox(self, -1, 'Pixel Size Results') sbpsz = wx.StaticBoxSizer(sbp, wx.VERTICAL) self.calculate = wx.Button(self, -1, 'Calculate Pixel Size') self.measurements = MeasurementListCtrl(self, -1) self.save = wx.Button(self, -1, 'Save Averaged Pixel Size From Selected') self.widgets['lattice a'] = FloatEntry(self, -1, chars=9) self.widgets['lattice b'] = FloatEntry(self, -1, chars=9) self.widgets['lattice gamma'] = FloatEntry(self, -1, chars=9) self.widgets['distance'] = FloatEntry(self, -1, chars=9) self.widgets['h1'] = IntEntry(self, -1, chars=9) self.widgets['k1'] = IntEntry(self, -1, chars=9) self.widgets['h2'] = IntEntry(self, -1, chars=9) self.widgets['k2'] = IntEntry(self, -1, chars=9) sz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'a:') sz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) sz.Add(self.widgets['lattice a'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Angstrum') sz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'b:') sz.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) sz.Add(self.widgets['lattice b'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Angstrum') sz.Add(label, (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'gamma') sz.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) sz.Add(self.widgets['lattice gamma'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'deg') sz.Add(label, (2, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) sblsz.Add(sz, 0, wx.ALIGN_CENTER_VERTICAL) sz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Between Index h:') sz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) sz.Add(self.widgets['h1'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_CENTER) label = wx.StaticText(self, -1, 'k:') sz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['k1'], (0, 3), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_CENTER) label = wx.StaticText(self, -1, 'and Index h:') sz.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) sz.Add(self.widgets['h2'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_CENTER) label = wx.StaticText(self, -1, 'k:') sz.Add(label, (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['k2'], (1, 3), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_CENTER) sbmsz.Add(sz, 0, wx.ALIGN_CENTER) sbmsz.AddSpacer((20, 20)) sz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Measured Distance on Power Spectrum:') sz.Add(label, (0, 0), (2, 1), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) sz.Add(self.widgets['distance'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_CENTER) label = wx.StaticText(self, -1, '(pixels)') sz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.calculate, (2, 0), (1, 3), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_CENTER) sbmsz.Add(sz, 0, wx.ALIGN_CENTER) label = ' need image to find saved pixel size' self.currentimagepixelsize = wx.StaticText(self, -1, label) sbpsz.Add(self.currentimagepixelsize, 0, wx.ALIGN_CENTER | wx.EXPAND) sbpsz.SetItemMinSize(self.measurements, self.measurements.getBestSize()) sbpsz.Add(self.measurements, 1, wx.EXPAND) sbpsz.Add(self.save, 0, wx.ALIGN_CENTER) sbsz.Add(sblsz, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) sbsz.Add(sbmsz, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) sbsz.Add(sbpsz, 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) self.Bind(wx.EVT_BUTTON, self.onCalculateButton, self.calculate) self.Bind(wx.EVT_BUTTON, self.onSaveButton, self.save) return [sbsz]
def __init__(self, parent): self.parent = parent wx.Dialog.__init__(self, self.parent.frame, -1, "Least Squares Optimization") self.lsfit = None inforow = wx.FlexGridSizer(5, 4, 15, 15) thetastr = "%3.3f" % self.parent.data['theta'] label = wx.StaticText(self, -1, "Tilt angle (theta): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) #self.tiltvalue = wx.StaticText(self, -1, thetastr, style=wx.ALIGN_CENTER|wx.ALIGN_CENTER_VERTICAL) self.thetavalue = FloatEntry(self, -1, allownone=False, chars=8, value=thetastr) label2 = wx.StaticText(self, -1, "degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.thetatog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleTheta, self.thetatog) #self.thetavalue.Enable(False) #self.thetatog.SetValue(1) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( self.thetavalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.thetatog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) gammastr = "%3.3f" % self.parent.data['gamma'] label = wx.StaticText(self, -1, "Image 1 Rotation (gamma): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.gammavalue = FloatEntry(self, -1, allownone=False, chars=8, value=gammastr) label2 = wx.StaticText(self, -1, "degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.gammatog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleGamma, self.gammatog) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.gammavalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.gammatog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) phistr = "%3.3f" % self.parent.data['phi'] label = wx.StaticText(self, -1, "Image 2 Rotation (phi): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.phivalue = FloatEntry(self, -1, allownone=False, chars=8, value=phistr) label2 = wx.StaticText(self, -1, "degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.phitog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onTogglePhi, self.phitog) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.phivalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.phitog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) scalestr = "%3.3f" % self.parent.data['scale'] label = wx.StaticText(self, -1, "Scaling factor: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.scalevalue = FloatEntry(self, -1, allownone=False, chars=8, value=scalestr) label2 = wx.StaticText(self, -1, " ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.scaletog = wx.ToggleButton(self, -1, "Locked") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleScale, self.scaletog) self.scalevalue.Enable(False) self.scaletog.SetValue(1) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.scalevalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.scaletog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) shiftxstr = "%3.3f" % self.parent.data['shiftx'] shiftystr = "%3.3f" % self.parent.data['shifty'] label = wx.StaticText(self, -1, "Shift (x,y) pixels: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.shiftxvalue = FloatEntry(self, -1, allownone=False, chars=8, value=shiftxstr) self.shiftyvalue = FloatEntry(self, -1, allownone=False, chars=8, value=shiftystr) self.shifttog = wx.ToggleButton(self, -1, "Refine") self.Bind(wx.EVT_TOGGLEBUTTON, self.onToggleShift, self.shifttog) #self.shiftxvalue.Enable(False) #self.shiftyvalue.Enable(False) #self.shifttog.SetValue(1) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.shiftxvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.shiftyvalue, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL) inforow.Add(self.shifttog, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) summaryrow = wx.GridSizer(1, 4) label = wx.StaticText(self, -1, "RMSD (pixels): ", style=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.rmsdlabel = wx.StaticText(self, -1, " unknown ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(label, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(self.rmsdlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, "Iterations: ", style=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.iterlabel = wx.StaticText(self, -1, " none ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(label, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) summaryrow.Add(self.iterlabel, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.cancelfitall = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.applyfitall = wx.Button(self, wx.ID_APPLY, '&Apply') self.runfitall = wx.Button(self, -1, '&Run') self.Bind(wx.EVT_BUTTON, self.onRunLeastSquares, self.runfitall) self.Bind(wx.EVT_BUTTON, self.onApplyLeastSquares, self.applyfitall) buttonrow = wx.GridSizer(1, 3) buttonrow.Add(self.cancelfitall, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.applyfitall, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.runfitall, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) self.sizer = wx.FlexGridSizer(3, 1) self.sizer.Add(inforow, 0, wx.EXPAND | wx.ALL, 10) self.sizer.Add(summaryrow, 0, wx.EXPAND | wx.ALL, 5) self.sizer.Add(buttonrow, 0, wx.EXPAND | wx.ALL, 5) self.SetSizerAndFit(self.sizer) self.onToggleScale(True)
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Lattice Fitting') sbszlattice = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Hole Statistics') sbszstats = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['lattice spacing'] = FloatEntry(self, -1, chars=6) self.widgets['lattice tolerance'] = FloatEntry(self, -1, chars=6) self.widgets['lattice hole radius'] = FloatEntry(self, -1, chars=6) self.widgets['lattice zero thickness'] = FloatEntry(self, -1, chars=6) extendlabel = wx.StaticText(self, -1, 'Extend Lattice') self.widgets['lattice extend'] = Choice(self, -1, choices=self.node.extendtypes) szlattice = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Spacing:') szlattice.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlattice.Add( self.widgets['lattice spacing'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Tolerance:') szlattice.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlattice.Add( self.widgets['lattice tolerance'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) szlattice.Add(extendlabel, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlattice.Add(self.widgets['lattice extend'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) szlattice.AddGrowableCol(1) sbszlattice.Add(szlattice, 1, wx.EXPAND | wx.ALL, 5) szstats = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Radius:') szstats.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szstats.Add( self.widgets['lattice hole radius'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Reference Intensity:') szstats.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szstats.Add( self.widgets['lattice zero thickness'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) szstats.AddGrowableCol(1) sbszstats.Add(szstats, 1, wx.EXPAND | wx.ALL, 5) self.btest = wx.Button(self, -1, 'Test') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.btest, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) szbutton.AddGrowableCol(0) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.btest) return [sbszlattice, sbszstats, szbutton]
class DogPickerDialog(wx.Dialog): #================== def __init__(self, parent): self.parent = parent wx.Dialog.__init__(self, self.parent.frame, -1, "DoG Auto Particle Picker") inforow = wx.FlexGridSizer(3, 3, 10, 10) inforow.Add((1, 1), 0, 3) inforow.Add((1, 1), 0, 3) inforow.Add((1, 1), 0, 3) ### standard options box = wx.StaticBox(self, -1, 'Standard Options') boxrow = wx.StaticBoxSizer(box, wx.VERTICAL) hbox1 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Particle diameter (pixels): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.diam = FloatEntry(self, -1, allownone=False, chars=5, value="100.0") hbox1.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox1.Add( self.diam, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox1.AddGrowableCol(0) boxrow.Add(hbox1, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) hbox2 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Min Threshold: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.minthresh = FloatEntry(self, -1, allownone=False, chars=5, value="0.7") hbox2.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox2.Add(self.minthresh, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox2.AddGrowableCol(0) boxrow.Add(hbox2, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) label = wx.StaticText(self, -1, "Particle contrast: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) boxrow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 3) hbox8 = wx.FlexGridSizer(1, 2, 10, 10) self.whitePart = wx.RadioButton(self, -1, 'Light on Dark (stain)', (10, 10), style=wx.RB_GROUP) self.blackPart = wx.RadioButton(self, -1, 'Dark on Light (ice)', (10, 30)) self.Bind(wx.EVT_RADIOBUTTON, self.partContrast, id=self.whitePart.GetId()) self.Bind(wx.EVT_RADIOBUTTON, self.partContrast, id=self.blackPart.GetId()) self.partContrast(True) hbox8.Add(self.whitePart, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox8.Add(self.blackPart, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) boxrow.Add(hbox8, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) inforow.Add((1, 1), 0, 3) inforow.Add( boxrow, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 3) inforow.Add((1, 1), 0, 3) ### end standard options ### advanced options box = wx.StaticBox(self, -1, 'Advanded Options') boxrow = wx.StaticBoxSizer(box, wx.VERTICAL) hbox3 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Diameter range (pixels): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.srange = FloatEntry(self, -1, allownone=False, chars=5, value="20.0") hbox3.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox3.Add(self.srange, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox3.AddGrowableCol(0) boxrow.Add(hbox3, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox4 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Number of sizes: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.numslices = IntEntry(self, -1, allownone=False, chars=3, value="2") hbox4.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox4.Add(self.numslices, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox4.AddGrowableCol(0) boxrow.Add(hbox4, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox5 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Max threshold: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.maxthresh = FloatEntry(self, -1, allownone=False, chars=5, value="1.5") hbox5.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox5.Add(self.maxthresh, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox5.AddGrowableCol(0) boxrow.Add(hbox5, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox6 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Max peak area (% πr^2): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.peakarea = FloatEntry(self, -1, allownone=False, chars=5, value="0.3") hbox6.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox6.Add(self.peakarea, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox6.AddGrowableCol(0) boxrow.Add(hbox6, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox9 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Max peaks: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.maxpeaks = IntEntry(self, -1, allownone=False, chars=5, value="500") hbox9.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox9.Add(self.maxpeaks, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox9.AddGrowableCol(0) boxrow.Add(hbox9, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) inforow.Add((1, 1), 0, 3) inforow.Add( boxrow, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 3) inforow.Add((1, 1), 0, 3) ### end advanced options self.canceldog = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.rundog = wx.Button(self, wx.ID_OK, '&Run') self.Bind(wx.EVT_BUTTON, self.onRunDogPicker, self.rundog) buttonrow = wx.FlexGridSizer(1, 2, 10, 10) buttonrow.Add(self.canceldog, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 10) buttonrow.Add(self.rundog, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 10) self.sizer = wx.FlexGridSizer(3, 1, 10, 10) self.sizer.Add(inforow, 0, wx.ALIGN_CENTER_HORIZONTAL, border=10) self.sizer.Add(buttonrow, 0, wx.ALIGN_CENTER_HORIZONTAL, border=10) label = wx.StaticText(self, -1, "Check command line after running", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.sizer.Add(label, 0, wx.EXPAND, 5) self.SetSizerAndFit(self.sizer) #================== def partContrast(self, evt): if self.whitePart.GetValue() is True: return False return True #================== def onRunDogPicker(self, evt): apDisplay.printColor("===============\nRunning experimental DoGPicker", "cyan") ### remove existing maps lefts = glob.glob("maps/leftimage.dogmap*.jpg") for imgname in lefts: apFile.removeFile(imgname, warn=False) rights = glob.glob("maps/rightimage.dogmap*.jpg") for imgname in rights: apFile.removeFile(imgname, warn=False) pixdiam = self.diam.GetValue() sizerange = self.srange.GetValue() minthresh = self.minthresh.GetValue() maxthresh = self.maxthresh.GetValue() peakarea = self.peakarea.GetValue() invert = self.partContrast(None) maxpeaks = self.maxpeaks.GetValue() numslices = self.numslices.GetValue() if invert is True: apDisplay.printMsg( "Picking dark particles on light backgound, i.e. ice") else: apDisplay.printMsg( "Picking light particles on dark backgound, i.e. stain") self.Close() apParam.createDirectory("maps") #1. set DoG parameters / hack to use existing pipeline function dogparams = { 'apix': 1.0, # set to 1 because we are using pixels 'bin': 1.0, # set to 1 because we are using pixels 'diam': pixdiam, # diameter of particles 'sizerange': sizerange, # diameter range of particles 'numslices': numslices, # number of slices to perform 'kfactor': 1.2, # does not matter 'overlapmult': 1.5, 'rundir': os.getcwd(), 'maxpeaks': maxpeaks, 'maxthresh': maxthresh, 'thresh': minthresh, 'maxsize': peakarea, 'peaktype': 'maximum', 'background': False, 'doubles': False, } #2a. get image 1 img1 = numpy.asarray(self.parent.panel1.imagedata, dtype=numpy.float32) if invert is True: img1 = apImage.invertImage(img1) #3a. run DoG picker on image 1 dogarrays1 = apDog.diffOfGaussParam(img1, dogparams) #4a: threshold & find peaks image 1 imgdict1 = { 'filename': 'leftimage', 'image': img1, } peaktree1 = apPeaks.findPeaks(imgdict1, dogarrays1, dogparams, maptype="dogmap", pikfile=False) #5a: insert into self.parent.picks1 self.parent.picks1 = self.peaktreeToPicks(peaktree1) #=== #2b: get image 2 img2 = numpy.asarray(self.parent.panel2.imagedata, dtype=numpy.float32) if invert is True: img2 = apImage.invertImage(img2) #3b. run DoG picker on image 2 dogarrays2 = apDog.diffOfGaussParam(img2, dogparams) #4b: threshold & find peaks image 2 imgdict2 = { 'filename': 'rightimage', 'image': img2, } peaktree2 = apPeaks.findPeaks(imgdict2, dogarrays2, dogparams, maptype="dogmap", pikfile=False) #5b: insert into self.parent.picks2 self.parent.picks2 = self.peaktreeToPicks(peaktree2) self.parent.onImportPicks(None, pixdiam, showmaps=True) apDisplay.printColor("Finished DoGPicker\n===================", "cyan") #================== def peaktreeToPicks(self, peaktree): picks = [] for p in peaktree: picks.append((p['xcoord'], p['ycoord'])) npicks = numpy.asarray(picks, dtype=numpy.float32) return npicks
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Low Pass Filter (Phase Correlation)') sbszlpf = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Template Correlation') sbsztemplate = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['template lpf'] = {} self.widgets['template lpf']['sigma'] = FloatEntry(self, -1, min=0.0, chars=4) szlpf = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Sigma:') szlpf.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlpf.Add(self.widgets['template lpf']['sigma'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) szlpf.AddGrowableCol(1) sbszlpf.Add(szlpf, 1, wx.EXPAND|wx.ALL, 5) self.widgets['template filename'] = Entry(self, -1, chars=12) self.widgets['file diameter'] = IntEntry(self, -1, chars=4) self.widgets['template diameter'] = IntEntry(self, -1, chars=4) self.widgets['template type'] = Choice(self, -1, choices=self.node.cortypes) szcor = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Use') szcor.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szcor.Add(self.widgets['template type'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'correlation') szcor.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) sztemplate = wx.GridBagSizer(5, 5) sztemplate.Add(szcor, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Template Filename') sztemplate.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sztemplate.Add(self.widgets['template filename'], (1, 1), (1, 1), wx.ALIGN_CENTER|wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Original Template Diameter') sztemplate.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sztemplate.Add(self.widgets['file diameter'], (2, 1), (1, 1), wx.ALIGN_CENTER|wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Final Template Diameter') sztemplate.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sztemplate.Add(self.widgets['template diameter'], (3, 1), (1, 1), wx.ALIGN_CENTER|wx.FIXED_MINSIZE) sbsztemplate.Add(sztemplate, 1, wx.EXPAND|wx.ALL, 5) self.btest = wx.Button(self, -1, 'Test') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.btest, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szbutton.AddGrowableCol(0) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.btest) return [sbsztemplate, sbszlpf, szbutton]
def __init__(self, parent): self.parent = parent wx.Dialog.__init__(self, self.parent.frame, -1, "DoG Auto Particle Picker") inforow = wx.FlexGridSizer(3, 3, 10, 10) inforow.Add((1, 1), 0, 3) inforow.Add((1, 1), 0, 3) inforow.Add((1, 1), 0, 3) ### standard options box = wx.StaticBox(self, -1, 'Standard Options') boxrow = wx.StaticBoxSizer(box, wx.VERTICAL) hbox1 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Particle diameter (pixels): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.diam = FloatEntry(self, -1, allownone=False, chars=5, value="100.0") hbox1.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox1.Add( self.diam, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox1.AddGrowableCol(0) boxrow.Add(hbox1, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) hbox2 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Min Threshold: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.minthresh = FloatEntry(self, -1, allownone=False, chars=5, value="0.7") hbox2.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox2.Add(self.minthresh, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox2.AddGrowableCol(0) boxrow.Add(hbox2, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) label = wx.StaticText(self, -1, "Particle contrast: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) boxrow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 3) hbox8 = wx.FlexGridSizer(1, 2, 10, 10) self.whitePart = wx.RadioButton(self, -1, 'Light on Dark (stain)', (10, 10), style=wx.RB_GROUP) self.blackPart = wx.RadioButton(self, -1, 'Dark on Light (ice)', (10, 30)) self.Bind(wx.EVT_RADIOBUTTON, self.partContrast, id=self.whitePart.GetId()) self.Bind(wx.EVT_RADIOBUTTON, self.partContrast, id=self.blackPart.GetId()) self.partContrast(True) hbox8.Add(self.whitePart, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox8.Add(self.blackPart, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) boxrow.Add(hbox8, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) inforow.Add((1, 1), 0, 3) inforow.Add( boxrow, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 3) inforow.Add((1, 1), 0, 3) ### end standard options ### advanced options box = wx.StaticBox(self, -1, 'Advanded Options') boxrow = wx.StaticBoxSizer(box, wx.VERTICAL) hbox3 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Diameter range (pixels): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.srange = FloatEntry(self, -1, allownone=False, chars=5, value="20.0") hbox3.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox3.Add(self.srange, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox3.AddGrowableCol(0) boxrow.Add(hbox3, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox4 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Number of sizes: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.numslices = IntEntry(self, -1, allownone=False, chars=3, value="2") hbox4.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox4.Add(self.numslices, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox4.AddGrowableCol(0) boxrow.Add(hbox4, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox5 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Max threshold: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.maxthresh = FloatEntry(self, -1, allownone=False, chars=5, value="1.5") hbox5.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox5.Add(self.maxthresh, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox5.AddGrowableCol(0) boxrow.Add(hbox5, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox6 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Max peak area (% πr^2): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.peakarea = FloatEntry(self, -1, allownone=False, chars=5, value="0.3") hbox6.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox6.Add(self.peakarea, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox6.AddGrowableCol(0) boxrow.Add(hbox6, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) hbox9 = wx.FlexGridSizer(1, 2, 10, 10) label = wx.StaticText(self, -1, "Max peaks: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.maxpeaks = IntEntry(self, -1, allownone=False, chars=5, value="500") hbox9.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) hbox9.Add(self.maxpeaks, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 3) hbox9.AddGrowableCol(0) boxrow.Add(hbox9, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) boxrow.Add((3, 3), 0) inforow.Add((1, 1), 0, 3) inforow.Add( boxrow, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 3) inforow.Add((1, 1), 0, 3) ### end advanced options self.canceldog = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.rundog = wx.Button(self, wx.ID_OK, '&Run') self.Bind(wx.EVT_BUTTON, self.onRunDogPicker, self.rundog) buttonrow = wx.FlexGridSizer(1, 2, 10, 10) buttonrow.Add(self.canceldog, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 10) buttonrow.Add(self.rundog, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 10) self.sizer = wx.FlexGridSizer(3, 1, 10, 10) self.sizer.Add(inforow, 0, wx.ALIGN_CENTER_HORIZONTAL, border=10) self.sizer.Add(buttonrow, 0, wx.ALIGN_CENTER_HORIZONTAL, border=10) label = wx.StaticText(self, -1, "Check command line after running", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.sizer.Add(label, 0, wx.EXPAND, 5) self.SetSizerAndFit(self.sizer)
def addTomoSettings(self): tiltsb = wx.StaticBox(self, -1, 'Tilt') tiltsbsz = wx.StaticBoxSizer(tiltsb, wx.VERTICAL) equalslopesb = wx.StaticBox(self, -1, 'Cosine Rule Tilting') equalslopesbsz = wx.StaticBoxSizer(equalslopesb, wx.VERTICAL) expsb = wx.StaticBox(self, -1, 'Exposure') expsbsz = wx.StaticBoxSizer(expsb, wx.VERTICAL) bcsb = wx.StaticBox(self, -1, 'Before Collection') bcsbsz = wx.StaticBoxSizer(bcsb, wx.VERTICAL) miscsb = wx.StaticBox(self, -1, 'Misc.') miscsbsz = wx.StaticBoxSizer(miscsb, wx.VERTICAL) modelb = wx.StaticBox(self, -1, 'Model') modelbsz = wx.StaticBoxSizer(modelb, wx.VERTICAL) optb = wx.StaticBox(self, -1, 'Custom Tilt Axis Model in +/- Directions(d)') optbsz = wx.StaticBoxSizer(optb, wx.VERTICAL) self.widgets['tilt min'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['tilt max'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['tilt start'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['tilt step'] = FloatEntry(self, -1, allownone=False, chars=7, value='0.0') self.widgets['equally sloped'] = wx.CheckBox(self, -1, 'Use cosine rule') self.widgets['equally sloped n'] = IntEntry(self, -1, min=1, allownone=False, chars=5, value='30') tiltoptsz = wx.GridBagSizer(5, 5) tiltsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Min.') tiltsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt min'], (0, 1), (1, 1), wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Max.') tiltsz.Add(label, (0, 2), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt max'], (0, 3), (1, 1), wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Start') tiltsz.Add(label, (0, 4), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt start'], (0, 5), (1, 1), wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Step') tiltsz.Add(label, (0, 6), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 10) tiltsz.Add(self.widgets['tilt step'], (0, 7), (1, 1), wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'degree(s)') tiltsz.Add(label, (0, 8), (1, 1), wx.ALIGN_CENTER_VERTICAL) addonsizer = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'List of Extra Tilts to Collect (in degrees)') addonsizer.Add(label, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) self.widgets['addon tilts'] = Entry(self, -1, chars=45, style=wx.ALIGN_RIGHT | wx.EXPAND) addonsizer.Add(self.widgets['addon tilts'], (0, 2), (1, 7), wx.EXPAND) addonsizer.AddGrowableCol(2) tiltsz.Add(addonsizer, (1, 0), (1, 9), wx.EXPAND) tiltoptsz.Add(tiltsz, (1, 0), (2, 9), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) equalslopesz = wx.GridBagSizer(0, 5) equalslopesz.Add(self.widgets['equally sloped'], (0, 0), (1, 2), wx.ALIGN_LEFT | wx.FIXED_MINSIZE) equalslopesz.Add(self.widgets['equally sloped n'], (1, 0), (1, 1), wx.ALIGN_LEFT | wx.FIXED_MINSIZE) label = wx.StaticText( self, -1, 'Number of tilts in the maximal tilting direction') equalslopesz.Add(label, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) equalslopesbsz.Add(equalslopesz, 0, wx.EXPAND) tiltoptsz.Add(equalslopesbsz, (0, 9), (3, 2), wx.EXPAND | wx.ALIGN_CENTER_VERTICAL) tiltsbsz.Add(tiltoptsz, 0, wx.EXPAND | wx.ALL, 5) self.widgets['dose'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=7, value='200.0') self.widgets['min exposure'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='0.25') self.widgets['max exposure'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='2.0') expsz = wx.GridBagSizer(5, 10) label = wx.StaticText(self, -1, 'Total dose') expsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) expsz.Add(self.widgets['dose'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'e-/A^2') expsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Exposure time') expsz.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) exptsz = wx.GridBagSizer(0, 0) label = wx.StaticText(self, -1, 'Min.') exptsz.Add(label, (0, 0), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) exptsz.Add(self.widgets['min exposure'], (0, 1), (1, 1), wx.ALIGN_LEFT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Max.') exptsz.Add(label, (0, 2), (1, 1), wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) exptsz.Add(self.widgets['max exposure'], (0, 3), (1, 1), wx.ALIGN_LEFT | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'seconds') exptsz.Add(label, (0, 4), (1, 1), wx.ALIGN_CENTER_VERTICAL) expsz.Add(exptsz, (1, 1), (1, 2), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) expsz.AddGrowableCol(0) expsz.AddGrowableRow(0) expsz.AddGrowableRow(1) expsbsz.Add(expsz, 1, wx.EXPAND | wx.ALL, 5) self.widgets['run buffer cycle'] = wx.CheckBox(self, -1, 'Run buffer cycle') self.widgets['align zero loss peak'] = wx.CheckBox( self, -1, 'Align zero loss peak') self.widgets['measure dose'] = wx.CheckBox(self, -1, 'Measure dose') bcsz = wx.GridBagSizer(5, 10) bcsz.Add(self.widgets['run buffer cycle'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) bcsz.Add(self.widgets['align zero loss peak'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) bcsz.Add(self.widgets['measure dose'], (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) bcsbsz.Add(bcsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) self.widgets['integer'] = wx.CheckBox(self, -1, 'Scale by') self.widgets['intscale'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='10.0') self.widgets['mean threshold'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='100.0') self.widgets['collection threshold'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='90.0') self.widgets['tilt pause time'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=5, value='1.0') # self.widgets['measure defocus'] = wx.CheckBox(self, -1, 'Measure defocus') self.widgets['use lpf'] = wx.CheckBox( self, -1, 'Use lpf in peak finding of tilt image correlation') self.widgets['use tilt'] = wx.CheckBox( self, -1, 'Stretch images according to the tilt before correlation') # tapersz = wx.GridBagSizer(5,5) # lab = wx.StaticText(self, -1, 'edge tapered upto') # tapersz.Add(lab, (0,0), (1,1)) # tapersz.Add(self.widgets['taper size'], (0,1), (1,1)) # lab = wx.StaticText(self, -1, '% image length') # tapersz.Add(lab, (0,2), (1,1)) intsz = wx.GridBagSizer(5, 5) intsz.Add(self.widgets['integer'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) intsz.Add(self.widgets['intscale'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'to convert to integer') intsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) mtsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Consider images with less than') mtsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) mtsz.Add(self.widgets['mean threshold'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'counts as obstructed') mtsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) ctsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Abort if first half collected less than') ctsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) ctsz.Add(self.widgets['collection threshold'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, '% of images') ctsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) tptsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Pause') tptsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) tptsz.Add(self.widgets['tilt pause time'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'seconds before each tilt image.') tptsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz = wx.GridBagSizer(5, 10) miscsz.Add(intsz, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz.Add(mtsz, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz.Add(ctsz, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz.Add(tptsz, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) miscsz.Add(self.widgets['use lpf'], (4, 0), (1, 1), wx.ALIGN_CENTER) miscsz.Add(self.widgets['use tilt'], (5, 0), (1, 1), wx.ALIGN_CENTER) #miscsz.Add(tapersz, (7, 0), (1, 1), wx.ALIGN_CENTER) #miscsz.Add(self.widgets['measure defocus'], (5, 0), (1, 1), wx.ALIGN_CENTER) miscsbsz.Add(miscsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) modelmags = self.getMagChoices() self.widgets['model mag'] = wx.Choice(self, -1, choices=modelmags) self.widgets['phi'] = FloatEntry(self, -1, allownone=False, chars=4, value='0.0') self.widgets['phi2'] = FloatEntry(self, -1, allownone=False, chars=4, value='0.0') self.widgets['offset'] = FloatEntry(self, -1, allownone=False, chars=6, value='0.0') self.widgets['offset2'] = FloatEntry(self, -1, allownone=False, chars=6, value='0.0') self.widgets['z0'] = FloatEntry(self, -1, allownone=False, chars=6, value='0.0') self.widgets['z02'] = FloatEntry(self, -1, allownone=False, chars=6, value='0.0') self.widgets['z0 error'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=6, value='2e-6') self.widgets['fixed model'] = wx.CheckBox( self, -1, 'Keep the tilt axis parameters fixed') self.widgets['use z0'] = wx.CheckBox( self, -1, 'Initialize z0 with current model') self.widgets['fit data points'] = IntEntry(self, -1, min=4, allownone=False, chars=5, value='4') magsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Initialize with the model of') magsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) magsz.Add(self.widgets['model mag'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) phisz = wx.GridBagSizer(2, 2) phisz.AddGrowableCol(0) label = wx.StaticText(self, -1, 'Tilt Axis from Y') phisz.Add(label, (0, 0), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '+d') phisz.Add(label, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) phisz.Add(self.widgets['phi'], (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, '-d') phisz.Add(label, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) phisz.Add(self.widgets['phi2'], (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'degs') phisz.Add(label, (0, 3), (2, 1), wx.ALIGN_CENTER_VERTICAL) offsetsz = wx.GridBagSizer(2, 2) label = wx.StaticText(self, -1, 'Offset:') offsetsz.Add(label, (0, 0), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '+d') offsetsz.Add(label, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) offsetsz.Add(self.widgets['offset'], (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'um') offsetsz.Add(label, (0, 3), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '-d') offsetsz.Add(label, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) offsetsz.Add(self.widgets['offset2'], (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) z0sz = wx.GridBagSizer(2, 2) label = wx.StaticText(self, -1, 'Z0:') z0sz.Add(label, (0, 0), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '+d') z0sz.Add(label, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) z0sz.Add(self.widgets['z0'], (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'um') z0sz.Add(label, (0, 3), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '-d') z0sz.Add(label, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) z0sz.Add(self.widgets['z02'], (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'um') z0sz.Add(label, (1, 3), (2, 1), wx.ALIGN_CENTER_VERTICAL) optsz = wx.GridBagSizer(5, 10) optsz.Add(phisz, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) optsz.Add(offsetsz, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) optsz.Add(z0sz, (1, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) optbsz.Add(optsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) optsz.AddGrowableCol(0) zsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Allow') zsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) zsz.Add(self.widgets['z0 error'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'um of z0 jump between models') zsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) fsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Smooth') fsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) fsz.Add(self.widgets['fit data points'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'tilts (>=4) for defocus prediction') fsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz = wx.GridBagSizer(5, 5) modelsz.Add(magsz, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(optbsz, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(zsz, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(self.widgets['fixed model'], (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(self.widgets['use z0'], (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(fsz, (5, 0), (1, 1), wx.ALIGN_RIGHT) modelbsz.Add(modelsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) modelsz.AddGrowableCol(0) sz = wx.GridBagSizer(5, 5) sz.Add(tiltsbsz, (0, 0), (1, 2), wx.EXPAND) sz.Add(expsbsz, (1, 0), (1, 1), wx.EXPAND) sz.Add(bcsbsz, (1, 1), (1, 1), wx.EXPAND) sz.Add(miscsbsz, (2, 0), (1, 1), wx.EXPAND) sz.Add(modelbsz, (2, 1), (1, 1), wx.EXPAND) sz.AddGrowableRow(0) sz.AddGrowableRow(1) sz.AddGrowableRow(2) sz.AddGrowableCol(0) sz.AddGrowableCol(1) self.Bind(wx.EVT_CHECKBOX, self.onFixedModel, self.widgets['fixed model']) return sz
def __init__(self, parent): self.parent = parent wx.Dialog.__init__(self, self.parent.frame, -1, "Guess Initial Shift") inforow = wx.FlexGridSizer(3, 2, 15, 15) gammastr = "%3.3f" % self.parent.data['gamma'] label = wx.StaticText(self, -1, "Tilt axis angle (degrees): ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.tiltaxis = FloatEntry(self, -1, allownone=False, chars=5, value=gammastr) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( self.tiltaxis, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) label = wx.StaticText(self, -1, "Vertical is 0 degrees", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add((1, 1), 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) thetastr = "%3.3f" % self.parent.data['theta'] label = wx.StaticText(self, -1, "Tilt angle: ", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.tiltangle = FloatEntry(self, -1, allownone=False, chars=5, value=thetastr) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add( self.tiltangle, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) label = wx.StaticText( self, -1, "negative tilted on left, positive tilted or right", style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add(label, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) inforow.Add((1, 1), 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.cancelguess = wx.Button(self, wx.ID_CANCEL, '&Cancel') self.runguess = wx.Button(self, wx.ID_OK, '&Run') self.Bind(wx.EVT_BUTTON, self.onRunGuessShift, self.runguess) buttonrow = wx.GridSizer(1, 2) buttonrow.Add(self.cancelguess, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) buttonrow.Add(self.runguess, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) self.sizer = wx.FlexGridSizer(2, 1) self.sizer.Add(inforow, 0, wx.EXPAND | wx.ALL, 10) self.sizer.Add(buttonrow, 0, wx.EXPAND | wx.ALL, 5) self.SetSizerAndFit(self.sizer)
def addSettings(self): sb = wx.StaticBox(self, -1, 'Main Screen') sbszscreen = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Low Dose') sbszlowdose = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Defocus Pair') sbszdefocus = wx.StaticBoxSizer(sb, wx.VERTICAL) self.instrumentselection = leginon.gui.wx.Instrument.SelectionPanel(self) self.panel.setInstrumentSelection(self.instrumentselection) self.widgets['camera settings'] = leginon.gui.wx.Camera.CameraPanel(self) self.widgets['camera settings'].setGeometryLimits({'size':self.node.instrument.camerasize,'binnings':self.node.instrument.camerabinnings,'binmethod':self.node.instrument.camerabinmethod}) self.widgets['screen up'] = wx.CheckBox(self, -1, 'Up before acquire') self.widgets['screen down'] = wx.CheckBox(self, -1, 'Down after acquired') self.widgets['beam blank'] = wx.CheckBox(self, -1, 'Force beam blank after acquired') self.widgets['correct image'] = wx.CheckBox(self, -1, 'Correct image') self.widgets['save image'] = wx.CheckBox(self, -1, 'Save image to the database') self.widgets['image label'] = Entry(self, -1, chars=12) self.widgets['loop pause time'] = FloatEntry(self, -1, min=0.0, chars=4) self.widgets['low dose'] = wx.CheckBox(self, -1, 'Use low dose') self.widgets['low dose pause time'] = FloatEntry(self, -1, min=0.0, chars=4) szscreen = wx.GridBagSizer(5, 5) szscreen.Add(self.widgets['screen up'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szscreen.Add(self.widgets['screen down'], (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sbszscreen.Add(szscreen, 1, wx.EXPAND|wx.ALL, 5) szlowdose = wx.GridBagSizer(5, 5) szlowdose.Add(self.widgets['low dose'], (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlowdose.Add(self.widgets['beam blank'], (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Low dose pause') szlowdose.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlowdose.Add(self.widgets['low dose pause time'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'seconds') szlowdose.Add(label, (2, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlowdose.AddGrowableCol(1) sbszlowdose.Add(szlowdose, 1, wx.EXPAND|wx.ALL, 5) sz = wx.GridBagSizer(5, 5) sz.Add(self.instrumentselection, (0, 0), (1, 3), wx.EXPAND) sz.Add(self.widgets['camera settings'], (1, 0), (1, 3), wx.EXPAND) sz.Add(self.widgets['correct image'], (2, 0), (1, 3), wx.ALIGN_CENTER_VERTICAL) sz.Add(self.widgets['save image'], (3, 0), (1, 3), wx.ALIGN_CENTER_VERTICAL) sb2 = wx.GridBagSizer(5,5) szdefocus= wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1,'(leave both unchecked to use current defocus)') szdefocus.Add(label, (0,0), (1,2)) self.widgets['defocus1switch'] = wx.CheckBox(self, -1, 'Defocus 1') szdefocus.Add(self.widgets['defocus1switch'], (1,0), (1,1)) self.widgets['defocus1'] = FloatEntry(self, -1, chars=6) szdefocus.Add(self.widgets['defocus1'], (1,1), (1,1)) self.widgets['defocus2switch'] = wx.CheckBox(self, -1, 'Defocus 2') szdefocus.Add(self.widgets['defocus2switch'], (2,0), (1,1)) self.widgets['defocus2'] = FloatEntry(self, -1, chars=6) szdefocus.Add(self.widgets['defocus2'], (2,1), (1,1)) sbszdefocus.Add(szdefocus, 1, wx.EXPAND|wx.ALL, 5) sb2.Add(sbszscreen,(0,0),(1,3), wx.EXPAND) sb2.Add(sbszlowdose,(1,0),(1,3), wx.EXPAND) sb2.Add(sbszdefocus,(2,0),(1,3), wx.EXPAND) label = wx.StaticText(self, -1, 'Loop pause') sb2.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sb2.Add(self.widgets['loop pause time'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'seconds') sb2.Add(label, (3, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Label') sb2.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) sb2.Add(self.widgets['image label'], (4, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.FIXED_MINSIZE) sb2.AddGrowableCol(1) self.widgets['dark'] = wx.CheckBox(self, -1, 'Dark Exposure') sb2.Add(self.widgets['dark'], (5,0), (1,1)) self.widgets['force annotate'] = wx.CheckBox(self, -1, 'Always Annotate Saved Images') sb2.Add(self.widgets['force annotate'], (6,0), (1,1)) self.widgets['reduced params'] = wx.CheckBox(self, -1, 'Reduced EM Parameter Set (for slow TEMs)') sb2.Add(self.widgets['reduced params'], (7,0), (1,1)) sba = wx.GridBagSizer(5,5) # put the two sizers in columns sba.Add(sz,(0,0),(1,1)) sba.Add(sb2,(0,1),(1,1)) return sba
def initialize(self): #szs = leginon.gui.wx.Acquisition.ScrolledSettings.initialize(self) simusb = wx.StaticBox(self, -1, 'Simulation') simusbsz = wx.StaticBoxSizer(simusb, wx.VERTICAL) miscsb = wx.StaticBox(self, -1, 'Misc.') miscsbsz = wx.StaticBoxSizer(miscsb, wx.VERTICAL) modelb = wx.StaticBox(self, -1, 'Model') modelbsz = wx.StaticBoxSizer(modelb, wx.VERTICAL) optb = wx.StaticBox(self, -1, 'Custom Tilt Axis Model in +/- Directions(d)') optbsz = wx.StaticBoxSizer(optb, wx.VERTICAL) alltiltseries = self.getTiltSeriesChoices() self.widgets['simu tilt series'] = wx.Choice(self, -1, choices=alltiltseries) simusz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Simulate Data Collection and Prediction of') simusz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) simusz.Add(self.widgets['simu tilt series'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) simusbsz.Add(simusz, 1, wx.ALL | wx.ALIGN_CENTER, 5) self.widgets['use lpf'] = wx.CheckBox( self, -1, 'Use lpf in peak finding of tilt image correlation') self.widgets['use tilt'] = wx.CheckBox( self, -1, 'Use tilt info to stretch images') self.widgets['taper size'] = IntEntry(self, -1, min=0, allownone=False, chars=3, value='10') tapersz = wx.GridBagSizer(5, 5) lab = wx.StaticText(self, -1, 'edge tapered upto') tapersz.Add(lab, (0, 0), (1, 1)) tapersz.Add(self.widgets['taper size'], (0, 1), (1, 1)) lab = wx.StaticText(self, -1, '% image length') tapersz.Add(lab, (0, 2), (1, 1)) miscsz = wx.GridBagSizer(5, 10) miscsz.Add(self.widgets['use lpf'], (0, 0), (1, 1), wx.ALIGN_CENTER) miscsz.Add(self.widgets['use tilt'], (1, 0), (1, 1), wx.ALIGN_CENTER) miscsz.Add(tapersz, (2, 0), (1, 1), wx.ALIGN_CENTER) #miscsz.Add(self.widgets['measure defocus'], (5, 0), (1, 1), wx.ALIGN_CENTER) miscsz.AddGrowableRow(0) miscsz.AddGrowableRow(1) miscsz.AddGrowableCol(0) miscsbsz.Add(miscsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) modelmags = self.getMagChoices() self.widgets['model mag'] = wx.Choice(self, -1, choices=modelmags) self.widgets['phi'] = FloatEntry(self, -1, allownone=False, chars=4, value='0.0') self.widgets['phi2'] = FloatEntry(self, -1, allownone=False, chars=4, value='0.0') self.widgets['offset'] = FloatEntry(self, -1, allownone=False, chars=6, value='0.0') self.widgets['offset2'] = FloatEntry(self, -1, allownone=False, chars=6, value='0.0') self.widgets['z0 error'] = FloatEntry(self, -1, min=0.0, allownone=False, chars=6, value='2e-6') self.widgets['fixed model'] = wx.CheckBox( self, -1, 'Keep the tilt axis parameters fixed') self.widgets['fit data points'] = IntEntry(self, -1, min=4, allownone=False, chars=5, value='4') magsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Initialize with the model of') magsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) magsz.Add(self.widgets['model mag'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) phisz = wx.GridBagSizer(2, 2) phisz.AddGrowableCol(0) label = wx.StaticText(self, -1, 'Tilt Axis from Y') phisz.Add(label, (0, 0), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '+d') phisz.Add(label, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) phisz.Add(self.widgets['phi'], (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, '-d') phisz.Add(label, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) phisz.Add(self.widgets['phi2'], (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'degs') phisz.Add(label, (0, 3), (2, 1), wx.ALIGN_CENTER_VERTICAL) offsetsz = wx.GridBagSizer(2, 2) label = wx.StaticText(self, -1, 'Offset:') offsetsz.Add(label, (0, 0), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '+d') offsetsz.Add(label, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) offsetsz.Add(self.widgets['offset'], (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'um') offsetsz.Add(label, (0, 3), (2, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, '-d') offsetsz.Add(label, (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) offsetsz.Add(self.widgets['offset2'], (1, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) optsz = wx.GridBagSizer(5, 10) optsz.Add(phisz, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) optsz.Add(offsetsz, (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) optbsz.Add(optsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) optsz.AddGrowableCol(0) zsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Allow') zsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) zsz.Add(self.widgets['z0 error'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'um of z0 jump between models') zsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) fsz = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Smooth') fsz.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) fsz.Add(self.widgets['fit data points'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'tilts (>=4) for defocus prediction') fsz.Add(label, (0, 2), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz = wx.GridBagSizer(5, 5) modelsz.Add(magsz, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(optbsz, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(zsz, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(self.widgets['fixed model'], (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) modelsz.Add(fsz, (4, 0), (1, 1), wx.ALIGN_RIGHT) modelbsz.Add(modelsz, 1, wx.ALL | wx.ALIGN_CENTER, 5) modelsz.AddGrowableCol(0) sz = wx.GridBagSizer(5, 5) sz.Add(simusbsz, (0, 0), (1, 2), wx.EXPAND) sz.Add(miscsbsz, (1, 0), (1, 1), wx.EXPAND) sz.Add(modelbsz, (1, 1), (1, 1), wx.EXPAND) sz.AddGrowableRow(0) sz.AddGrowableRow(1) sz.AddGrowableCol(0) sz.AddGrowableCol(1) self.Bind(wx.EVT_CHECKBOX, self.onFixedModel, self.widgets['fixed model']) return [sz]
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Raster') sbszraster = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Spacing/Angle Calculator') sbszauto = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['raster spacing'] = IntEntry(self, -1, chars=4, min=1) self.widgets['raster spacing asymm'] = IntEntry(self, -1, chars=4) self.widgets['raster limit'] = IntEntry(self, -1, chars=4, min=1) self.widgets['raster limit asymm'] = IntEntry(self, -1, chars=4) self.widgets['raster angle'] = FloatEntry(self, -1, chars=4) self.widgets['raster center on image'] = wx.CheckBox(self, -1, 'Center on image') self.widgets['raster center x'] = IntEntry(self, -1, chars=4) self.widgets['raster center y'] = IntEntry(self, -1, chars=4) self.widgets['raster symmetric'] = wx.CheckBox(self, -1, '&Symmetric') ## auto raster self.autobut = wx.Button(self, -1, 'Calculate spacing and angle using the following parameters:') self.Bind(wx.EVT_BUTTON, self.onAutoButton, self.autobut) self.widgets['raster preset'] = PresetChoice(self, -1) presets = self.node.presetsclient.getPresetNames() self.widgets['raster preset'].setChoices(presets) self.widgets['raster overlap'] = FloatEntry(self, -1, chars=8) szauto = wx.GridBagSizer(5, 5) szauto.Add(self.autobut, (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Raster Preset') szauto.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szauto.Add(self.widgets['raster preset'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Overlap percent') szauto.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szauto.Add(self.widgets['raster overlap'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) movetypes = self.node.calclients.keys() self.widgets['raster movetype'] = Choice(self, -1, choices=movetypes) label = wx.StaticText(self, -1, 'Move Type') szauto.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szauto.Add(self.widgets['raster movetype'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) sbszauto.Add(szauto, 1, wx.EXPAND|wx.ALL,5) szraster = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'XY symmetry:') szraster.Add(label, (0,0), (1,1) , wx.ALIGN_CENTER_VERTICAL) self.Bind(wx.EVT_CHECKBOX, self.onToggleSymm, self.widgets['raster symmetric']) szraster.Add(self.widgets['raster symmetric'], (0,1), (1,2) , wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) self.widgets['raster symmetric'].SetMinSize((120,30)) label = wx.StaticText(self, -1, 'Spacing (x,y):') szraster.Add(label, (1,0), (1,1), wx.ALIGN_CENTER_VERTICAL) szraster.Add(self.widgets['raster spacing'], (1,1), (1,1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szraster.Add(self.widgets['raster spacing asymm'], (1,2), (1,1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Num points (x,y):') szraster.Add(label, (2,0), (1,1), wx.ALIGN_CENTER_VERTICAL) szraster.Add(self.widgets['raster limit'], (2,1), (1,1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szraster.Add(self.widgets['raster limit asymm'], (2,2), (1,1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szraster.AddGrowableCol(1) label = wx.StaticText(self, -1, 'Angle:') szraster.Add(label, (3,0), (1,1), wx.ALIGN_CENTER_VERTICAL) szraster.Add(self.widgets['raster angle'], (3,1), (1,2), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL) szraster.Add(self.widgets['raster center on image'], (4,0), (1,3), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL) self.Bind(wx.EVT_CHECKBOX, self.onCheckBox, self.widgets['raster center on image']) label = wx.StaticText(self, -1, 'Center on x,y:') szraster.Add(label, (5,0), (1,1), wx.ALIGN_CENTER_VERTICAL) szraster.Add(self.widgets['raster center x'], (5,1), (1,1), wx.ALIGN_CENTER_VERTICAL) szraster.Add(self.widgets['raster center y'], (5,2), (1,1), wx.ALIGN_CENTER_VERTICAL) if self.widgets['raster center on image'].GetValue(): self.widgets['raster center x'].Enable(False) self.widgets['raster center y'].Enable(False) if self.widgets['raster symmetric'].GetValue(): self.widgets['raster spacing asymm'].Enable(False) self.widgets['raster limit asymm'].Enable(False) self.widgets['raster spacing asymm'].SetValue(None) self.widgets['raster limit asymm'].SetValue(None) else: self.widgets['raster spacing asymm'].Enable(True) self.widgets['raster limit asymm'].Enable(True) sbszraster.Add(szraster, 1, wx.EXPAND|wx.ALL, 5) self.btest = wx.Button(self, -1, 'Test') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.btest, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) szbutton.AddGrowableCol(0) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.btest) return [sbszauto,sbszraster, szbutton]
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Low Pass Filter') sbszlpf = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['edge lpf'] = {} self.widgets['edge lpf']['sigma'] = FloatEntry(self, -1, min=0.0, chars=4) szlpf = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Sigma:') szlpf.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szlpf.Add(self.widgets['edge lpf']['sigma'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) szlpf.AddGrowableCol(1) sbszlpf.Add(szlpf, 1, wx.EXPAND | wx.ALL, 5) # self.widgets['edge'] = wx.CheckBox(self, -1, 'Use edge finding') # self.widgets['edge type'] = Choice(self, -1, choices=self.node.filtertypes) # self.widgets['edge log size'] = IntEntry(self, -1, min=1, chars=4) # self.widgets['edge log sigma'] = FloatEntry(self, -1, min=0.0, chars=4) # self.widgets['edge absolute'] = wx.CheckBox(self, -1, # 'Take absolute value of edge values') sb = wx.StaticBox(self, -1, 'Edge Finding') sbszedge = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['edge threshold'] = FloatEntry(self, -1, chars=9) szedge = wx.GridBagSizer(5, 5) # szedge.Add(self.widgets['edge'], (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) # label = wx.StaticText(self, -1, 'Type:') # szedge.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) # szedge.Add(self.widgets['edge type'], (1, 1), (1, 1), # wx.ALIGN_CENTER_VERTICAL) # label = wx.StaticText(self, -1, 'LoG Size:') # szedge.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) # szedge.Add(self.widgets['edge log size'], (2, 1), (1, 1), # wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) # label = wx.StaticText(self, -1, 'LoG Sigma:') # szedge.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) # szedge.Add(self.widgets['edge log sigma'], (3, 1), (1, 1), # wx.ALIGN_CENTER_VERTICAL|wx.FIXED_MINSIZE|wx.ALIGN_RIGHT) # szedge.Add(self.widgets['edge absolute'], (4, 0), (1, 2), # wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Threshold:') szedge.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szedge.Add( self.widgets['edge threshold'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) szedge.AddGrowableCol(1) sbszedge.Add(szedge, 1, wx.EXPAND | wx.ALL, 5) self.btest = wx.Button(self, -1, 'Test') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.btest, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) szbutton.AddGrowableCol(0) self.Bind(wx.EVT_BUTTON, self.onTestButton, self.btest) return [sbszlpf, sbszedge, szbutton]
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Ice Analysis') sbszice = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Focus Targets') sbszft = wx.StaticBoxSizer(sb, wx.VERTICAL) sb = wx.StaticBox(self, -1, 'Acquisition Targets') sbszat = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['ice box size'] = FloatEntry(self, -1, chars=8) self.widgets['ice thickness'] = FloatEntry(self, -1, chars=8) self.widgets['ice min mean'] = FloatEntry(self, -1, chars=8) self.widgets['ice max mean'] = FloatEntry(self, -1, chars=8) self.widgets['ice max std'] = FloatEntry(self, -1, chars=8) self.widgets['focus convolve'] = wx.CheckBox(self, -1, 'Convolve') self.widgets['focus convolve template'] = \ leginon.gui.wx.TargetTemplate.Panel(self, 'Convolve Template') self.widgets['focus constant template'] = \ leginon.gui.wx.TargetTemplate.Panel(self, 'Constant Template', targetname='Constant target') self.widgets['acquisition convolve'] = wx.CheckBox( self, -1, 'Convolve') self.widgets['acquisition convolve template'] = \ leginon.gui.wx.TargetTemplate.Panel(self, 'Convolve Template') self.widgets['acquisition constant template'] = \ leginon.gui.wx.TargetTemplate.Panel(self, 'Constant Template', targetname='Constant target') szice = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'Box size:') szice.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice box size'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Reference Intensity:') szice.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice thickness'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Min. mean:') szice.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice min mean'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Max. mean:') szice.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice max mean'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) label = wx.StaticText(self, -1, 'Max. stdev.:') szice.Add(label, (4, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szice.Add(self.widgets['ice max std'], (4, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE | wx.ALIGN_RIGHT) szice.AddGrowableCol(1) sbszice.Add(szice, 1, wx.EXPAND | wx.ALL, 5) szft = wx.GridBagSizer(5, 5) szft.Add(self.widgets['focus convolve'], (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) szft.Add(self.widgets['focus convolve template'], (1, 0), (1, 1), wx.ALIGN_CENTER | wx.FIXED_MINSIZE) szft.Add(self.widgets['focus constant template'], (2, 0), (1, 1), wx.ALIGN_CENTER | wx.FIXED_MINSIZE) szft.AddGrowableCol(0) sbszft.Add(szft, 1, wx.EXPAND | wx.ALL, 5) szat = wx.GridBagSizer(5, 5) szat.Add(self.widgets['acquisition convolve'], (0, 0), (1, 2), wx.ALIGN_CENTER_VERTICAL) szat.Add(self.widgets['acquisition convolve template'], (1, 0), (1, 1), wx.ALIGN_CENTER | wx.FIXED_MINSIZE) szat.Add(self.widgets['acquisition constant template'], (2, 0), (1, 1), wx.ALIGN_CENTER | wx.FIXED_MINSIZE) szat.AddGrowableCol(0) sbszat.Add(szat, 1, wx.EXPAND | wx.ALL, 5) self.bice = wx.Button(self, -1, 'Analyze Ice') szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.bice, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) szbutton.AddGrowableCol(0) szt = wx.GridBagSizer(5, 5) szt.Add(sbszft, (0, 0), (1, 1), wx.EXPAND | wx.ALL) szt.Add(sbszat, (0, 1), (1, 1), wx.EXPAND | wx.ALL) self.Bind(wx.EVT_BUTTON, self.onAnalyzeIceButton, self.bice) return [sbszice, szt, szbutton]
def initialize(self): leginon.gui.wx.Settings.ScrolledDialog.initialize(self) sb = wx.StaticBox(self, -1, 'Parameters') sbsz = wx.StaticBoxSizer(sb, wx.VERTICAL) self.widgets['measure beam tilt'] = FloatEntry(self, -1, chars=7) self.labels = {} self.labels['defocus'] = wx.StaticText(self, -1, '(Not measured)') self.labels['stigmator'] = {} for axis in ('x', 'y'): self.labels['stigmator'][axis] = wx.StaticText( self, -1, '(Not measured)') szresult = wx.GridBagSizer(5, 5) label = wx.StaticText(self, -1, 'beam tilt (+/-)') szresult.Add(label, (0, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.Add(self.widgets['measure beam tilt'], (0, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.FIXED_MINSIZE) label = wx.StaticText(self, -1, 'Defocus') szresult.Add(label, (1, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.Add(self.labels['defocus'], (1, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Stig. x') szresult.Add(label, (2, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.Add(self.labels['stigmator']['x'], (2, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, -1, 'Stig. y') szresult.Add(label, (3, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.Add(self.labels['stigmator']['y'], (3, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL) szresult.AddGrowableRow(0) szresult.AddGrowableRow(1) szresult.AddGrowableRow(2) szresult.AddGrowableRow(3) szresult.AddGrowableCol(0) self.measure = wx.Button(self, -1, 'Measure') self.correctdefocus = wx.Button(self, -1, 'Correct Defocus') self.correctstig = wx.Button(self, -1, 'Correct Stig.') self.resetdefocus = wx.Button(self, -1, 'Reset Defocus') self.correctdefocus.Enable(False) self.correctstig.Enable(False) szbutton = wx.GridBagSizer(5, 5) szbutton.Add(self.measure, (0, 0), (1, 1), wx.EXPAND) szbutton.Add(self.correctdefocus, (1, 0), (1, 1), wx.EXPAND) szbutton.Add(self.correctstig, (2, 0), (1, 1), wx.EXPAND) szbutton.Add(self.resetdefocus, (3, 0), (1, 1), wx.EXPAND) sz = wx.GridBagSizer(5, 20) sz.Add(szresult, (0, 0), (1, 1), wx.ALIGN_CENTER) sz.Add(szbutton, (0, 1), (1, 1), wx.ALIGN_CENTER) sbsz.Add(sz, 0, wx.ALIGN_CENTER | wx.ALL, 5) self.Bind(wx.EVT_BUTTON, self.onMeasureButton, self.measure) self.Bind(wx.EVT_BUTTON, self.onCorrectDefocusButton, self.correctdefocus) self.Bind(wx.EVT_BUTTON, self.onCorrectStigButton, self.correctstig) self.Bind(wx.EVT_BUTTON, self.onResetDefocusButton, self.resetdefocus) return [sbsz]