Пример #1
0
    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]
Пример #2
0
        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,]
Пример #3
0
        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
Пример #4
0
        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]
Пример #5
0
    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]
Пример #8
0
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
Пример #9
0
    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)
Пример #10
0
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()
Пример #11
0
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]
Пример #14
0
    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]
Пример #15
0
    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)
Пример #16
0
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)
Пример #17
0
    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]
Пример #18
0
    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]
Пример #20
0
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
Пример #21
0
        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]
Пример #22
0
    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)
Пример #23
0
    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
Пример #24
0
    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)
Пример #25
0
	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]