Ignore:
Timestamp:
Mar 5, 2015 3:46:02 PM (10 years ago)
Author:
Mathieu Doucet <doucetm@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
090e07e
Parents:
b5de88e
Message:

Pylint, plus minor refactor to eliminate duplicated code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/guiframe/local_perspectives/plotting/masking.py

    rb5de88e r7d56795  
    3030from sas.guiframe.dataFitting import Data1D, Data2D 
    3131from boxMask import BoxMask 
     32from sectorMask import SectorMask 
     33from AnnulusSlicer import CircularMask 
     34 
    3235from sas.guiframe.events import SlicerEvent 
    3336from sas.guiframe.events import StatusEvent 
     37from functools import partial 
     38 
    3439(InternalEvent, EVT_INTERNAL) = wx.lib.newevent.NewEvent() 
    3540 
     
    6166                 elapsed=0, 
    6267                 yieldtime=0.01, 
    63                  worktime=0.01 
    64                  ): 
    65         """ 
    66         """ 
    67         CalcThread.__init__(self, completefn, 
    68                  updatefn, 
    69                  yieldtime, 
    70                  worktime) 
     68                 worktime=0.01): 
     69        """ 
     70        """ 
     71        CalcThread.__init__(self, completefn, updatefn, yieldtime, worktime) 
    7172        self.starttime = 0 
    7273        self.id = id 
    7374        self.panel = panel 
    7475        self.image = image 
    75  
    7676 
    7777    def compute(self): 
     
    158158        sizer.Add(shape_txt, (1, 1), flag=wx.TOP | wx.LEFT | wx.BOTTOM, border=5) 
    159159        self.innersector_rb = wx.RadioButton(self, -1, "Double Wings") 
    160         self.Bind(wx.EVT_RADIOBUTTON, self.onInnerSectorMask, 
     160        self.Bind(wx.EVT_RADIOBUTTON, partial(self._on_mask, slicer=SectorMask, inside=True), 
    161161                  id=self.innersector_rb.GetId()) 
    162162        sizer.Add(self.innersector_rb, (2, 1), 
    163163                  flag=wx.RIGHT | wx.BOTTOM, border=5) 
    164164        self.innercircle_rb = wx.RadioButton(self, -1, "Circular Disk") 
    165         self.Bind(wx.EVT_RADIOBUTTON, self.onInnerRingMask, 
     165        self.Bind(wx.EVT_RADIOBUTTON, partial(self._on_mask, slicer=CircularMask, inside=True), 
    166166                  id=self.innercircle_rb.GetId()) 
    167167        sizer.Add(self.innercircle_rb, (3, 1), 
    168                    flag=wx.RIGHT | wx.BOTTOM, border=5) 
    169  
     168                  flag=wx.RIGHT | wx.BOTTOM, border=5) 
    170169        self.innerbox_rb = wx.RadioButton(self, -1, "Rectangular Disk") 
    171         self.Bind(wx.EVT_RADIOBUTTON, self.onInnerBoxMask, 
     170        self.Bind(wx.EVT_RADIOBUTTON, partial(self._on_mask, slicer=BoxMask, inside=True), 
    172171                  id=self.innerbox_rb.GetId()) 
    173172        sizer.Add(self.innerbox_rb, (4, 1), flag=wx.RIGHT | wx.BOTTOM, border=5) 
    174  
    175173        self.outersector_rb = wx.RadioButton(self, -1, "Double Wing Window") 
    176         self.Bind(wx.EVT_RADIOBUTTON, self.onOuterSectorMask, 
     174        self.Bind(wx.EVT_RADIOBUTTON, partial(self._on_mask, slicer=SectorMask, inside=False), 
    177175                  id=self.outersector_rb.GetId()) 
    178176        sizer.Add(self.outersector_rb, (5, 1), 
    179177                  flag=wx.RIGHT | wx.BOTTOM, border=5) 
    180  
    181         # outersector_y_txt = wx.StaticText(self, -1, 'Outer Sector') 
    182178        self.outercircle_rb = wx.RadioButton(self, -1, "Circular Window") 
    183         self.Bind(wx.EVT_RADIOBUTTON, self.onOuterRingMask, 
     179        self.Bind(wx.EVT_RADIOBUTTON, partial(self._on_mask, slicer=CircularMask, inside=False), 
    184180                  id=self.outercircle_rb.GetId()) 
    185181        sizer.Add(self.outercircle_rb, (6, 1), 
    186182                  flag=wx.RIGHT | wx.BOTTOM, border=5) 
    187         # outerbox_txt = wx.StaticText(self, -1, 'Outer Box') 
    188183        self.outerbox_rb = wx.RadioButton(self, -1, "Rectangular Window") 
    189         self.Bind(wx.EVT_RADIOBUTTON, self.onOuterBoxMask, 
     184        self.Bind(wx.EVT_RADIOBUTTON, partial(self._on_mask, slicer=BoxMask, inside=False), 
    190185                  id=self.outerbox_rb.GetId()) 
    191186        sizer.Add(self.outerbox_rb, (7, 1), flag=wx.RIGHT | wx.BOTTOM, border=5) 
     
    204199        button_add = wx.Button(self, id_button, "Add") 
    205200        button_add.SetToolTipString("Add the mask drawn.") 
    206         button_add.Bind(wx.EVT_BUTTON, self.onAddMask, id=button_add.GetId()) 
     201        button_add.Bind(wx.EVT_BUTTON, self._on_add_mask, id=button_add.GetId()) 
    207202        sizer.Add(button_add, (13, 7)) 
    208203        id_button = wx.NewId() 
    209204        button_erase = wx.Button(self, id_button, "Erase") 
    210205        button_erase.SetToolTipString("Erase the mask drawn.") 
    211         button_erase.Bind(wx.EVT_BUTTON, self.onEraseMask, 
     206        button_erase.Bind(wx.EVT_BUTTON, self._on_erase_mask, 
    212207                          id=button_erase.GetId()) 
    213208        sizer.Add(button_erase, (13, 8)) 
     
    215210        button_reset = wx.Button(self, id_button, "Reset") 
    216211        button_reset.SetToolTipString("Reset the mask.") 
    217         button_reset.Bind(wx.EVT_BUTTON, self.onResetMask, 
     212        button_reset.Bind(wx.EVT_BUTTON, self._on_reset_mask, 
    218213                          id=button_reset.GetId()) 
    219214        sizer.Add(button_reset, (13, 9), flag=wx.RIGHT | wx.BOTTOM, border=15) 
     
    221216        button_reset = wx.Button(self, id_button, "Clear") 
    222217        button_reset.SetToolTipString("Clear all mask.") 
    223         button_reset.Bind(wx.EVT_BUTTON, self.onClearMask, 
     218        button_reset.Bind(wx.EVT_BUTTON, self._on_clear_mask, 
    224219                          id=button_reset.GetId()) 
    225220        sizer.Add(button_reset, (13, 10), flag=wx.RIGHT | wx.BOTTOM, border=15) 
     
    230225        self.Show(True) 
    231226 
    232     def onInnerBoxMask(self, event=None): 
    233         """ 
    234         Call Draw Box Slicer and get mask inside of the box 
     227    def _on_mask(self, event=None, slicer=BoxMask, inside=True): 
     228        """ 
     229            Draw a slicer and use it as mask 
     230            :param event: wx event 
     231            :param slicer: Slicer class to use 
     232            :param inside: whether we mask what's inside or outside the slicer 
    235233        """ 
    236234        # get ready for next evt 
     
    238236        # from boxMask import BoxMask 
    239237        if event != None: 
    240             self.onClearSlicer(event) 
     238            self._on_clear_slicer(event) 
    241239        self.slicer_z += 1 
    242         self.slicer = BoxMask(self, self.subplot, 
    243                                zorder=self.slicer_z, side=True) 
     240        self.slicer = slicer(self, self.subplot, 
     241                             zorder=self.slicer_z, side=inside) 
    244242        self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    245243        self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
     
    247245        self.slicer_mask = self.slicer.update() 
    248246 
    249     def onOuterBoxMask(self, event=None): 
    250         """ 
    251         Call Draw Box Slicer and get mask outside of the box 
    252         """ 
    253         event.Skip() 
    254         # from boxMask import BoxMask 
    255         if event != None: 
    256             self.onClearSlicer(event) 
    257         self.slicer_z += 1 
    258         self.slicer = BoxMask(self, self.subplot, 
    259                                zorder=self.slicer_z, side=False) 
    260         self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    261         self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
    262         self.update() 
    263         self.slicer_mask = self.slicer.update() 
    264  
    265     def onInnerSectorMask(self, event=None): 
    266         """ 
    267         Call Draw Sector Slicer and get mask inside of the sector 
    268         """ 
    269         event.Skip() 
    270         from sectorMask import SectorMask 
    271         if event != None: 
    272             self.onClearSlicer(event) 
    273         self.slicer_z += 1 
    274         self.slicer = SectorMask(self, self.subplot, 
    275                                   zorder=self.slicer_z, side=True) 
    276         self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    277         self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
    278         self.update() 
    279         self.slicer_mask = self.slicer.update() 
    280  
    281     def onOuterSectorMask(self, event=None): 
    282         """ 
    283         Call Draw Sector Slicer and get mask outside of the sector 
    284         """ 
    285         event.Skip() 
    286         from sectorMask import SectorMask 
    287         if event != None: 
    288             self.onClearSlicer(event) 
    289         self.slicer_z += 1 
    290         self.slicer = SectorMask(self, self.subplot, 
    291                                   zorder=self.slicer_z, side=False) 
    292         self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    293         self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
    294         self.update() 
    295         self.slicer_mask = self.slicer.update() 
    296  
    297     def onInnerRingMask(self, event=None): 
    298         """ 
    299         Perform inner circular cut on Phi and draw circular slicer 
    300         """ 
    301         event.Skip() 
    302         from AnnulusSlicer import CircularMask 
    303         if event != None: 
    304             self.onClearSlicer(event) 
    305         self.slicer_z += 1 
    306         self.slicer = CircularMask(self, self.subplot, 
    307                                    zorder=self.slicer_z, side=True) 
    308         self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    309         self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
    310         self.update() 
    311         self.slicer_mask = self.slicer.update() 
    312  
    313     def onOuterRingMask(self, event=None): 
    314         """ 
    315         Perform outer circular cut on Phi and draw circular slicer 
    316         """ 
    317         event.Skip() 
    318         from AnnulusSlicer import CircularMask 
    319         if event != None: 
    320             self.onClearSlicer(event) 
    321         self.slicer_z += 1 
    322         self.slicer = CircularMask(self, self.subplot, 
    323                                    zorder=self.slicer_z, side=False) 
    324         self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    325         self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
    326         self.update() 
    327         self.slicer_mask = self.slicer.update() 
    328  
    329     def onAddMask(self, event): 
     247    def _on_add_mask(self, event): 
    330248        """ 
    331249        Add new mask to old mask 
     
    347265        self._update_mask(mask) 
    348266 
    349     def onEraseMask(self, event): 
     267    def _on_erase_mask(self, event): 
    350268        """ 
    351269        Erase new mask from old mask 
     
    357275            self._check_display_mask(mask, event) 
    358276 
    359     def onResetMask(self, event): 
     277    def _on_reset_mask(self, event): 
    360278        """ 
    361279        Reset mask to the original mask 
     
    363281        self.slicer_z += 1 
    364282        self.slicer = BoxMask(self, self.subplot, 
    365                                zorder=self.slicer_z, side=True) 
     283                              zorder=self.slicer_z, side=True) 
    366284        self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    367285        self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
     
    371289        self._check_display_mask(mask, event) 
    372290 
    373     def onClearMask(self, event): 
     291    def _on_clear_mask(self, event): 
    374292        """ 
    375293        Clear mask 
     
    377295        self.slicer_z += 1 
    378296        self.slicer = BoxMask(self, self.subplot, 
    379                                zorder=self.slicer_z, side=True) 
     297                              zorder=self.slicer_z, side=True) 
    380298        self.subplot.set_ylim(self.data.ymin, self.data.ymax) 
    381299        self.subplot.set_xlim(self.data.xmin, self.data.xmax) 
    382         # mask = copy.deepcopy(self.default_mask) 
    383300        mask = numpy.ones(len(self.data.mask), dtype=bool) 
    384301        self.data.mask = mask 
     
    386303        self._check_display_mask(mask, event) 
    387304 
    388     def onClearSlicer(self, event): 
     305    def _on_clear_slicer(self, event): 
    389306        """ 
    390307        Clear the slicer on the plot 
     
    419336        """ 
    420337        # the case of liitle numbers of True points 
    421         if (len(mask[mask]) < 10 and self.data != None): 
     338        if len(mask[mask]) < 10 and self.data != None: 
    422339            self.ShowMessage() 
    423340            mask = copy.deepcopy(self.mask) 
     
    454371            zmin = min(self.data.data[self.data.data > 0]) 
    455372        # plot 
    456         plot = self.plotpanel.image(data=temp_mask, 
    457                        qx_data=self.data.qx_data, 
    458                        qy_data=self.data.qy_data, 
    459                        xmin=self.data.xmin, 
    460                        xmax=self.data.xmax, 
    461                        ymin=self.data.ymin, 
    462                        ymax=self.data.ymax, 
    463                        zmin=zmin, 
    464                        zmax=zmax, 
    465                        cmap=self.cmap, 
    466                        color=0, symbol=0, label=self.data.name) 
     373        self.plotpanel.image(data=temp_mask, 
     374                             qx_data=self.data.qx_data, 
     375                             qy_data=self.data.qy_data, 
     376                             xmin=self.data.xmin, 
     377                             xmax=self.data.xmax, 
     378                             ymin=self.data.ymin, 
     379                             ymax=self.data.ymax, 
     380                             zmin=zmin, 
     381                             zmax=zmax, 
     382                             cmap=self.cmap, 
     383                             color=0, symbol=0, label=self.data.name) 
    467384        # axis labels 
    468385        self.plotpanel.axes[0].set_xlabel('$\\rm{Q}_{x}(A^{-1})$') 
     
    583500        """ 
    584501        cal_plot = CalcPlot(panel=self.plotpanel, 
    585                                    image=self.newplot, 
    586                                    completefn=self.complete) 
     502                            image=self.newplot, 
     503                            completefn=self.complete) 
    587504        cal_plot.queue() 
    588505 
     
    625542        pass 
    626543 
    627  
    628544    def _draw_model(self, event): 
    629545        """ 
     
    655571            pass 
    656572 
    657  
    658573class Maskplotpanel(PlotPanel): 
    659574    """ 
    660575    PlotPanel for Quick plot and masking plot 
    661576    """ 
    662     def __init__(self, parent, id=-1, dimension=2, color=None, 
    663                                             dpi=None, **kwargs): 
     577    def __init__(self, parent, id=-1, dimension=2, color=None, dpi=None, **kwargs): 
    664578        """ 
    665579        """ 
     
    757671        status_type = 'stop' 
    758672 
    759         if self.dimension == 3: 
    760             pass 
    761         else: 
     673        if not self.dimension == 3: 
    762674            self.subplot.figure.canvas.draw_idle() 
    763675 
     
    798710        Status msg 
    799711        """ 
    800         if type == "stop": 
    801             label = "Plotting..." 
    802             able = True 
    803         else: 
    804             label = "Wait..." 
    805             able = False 
    806712        if self.parent.parent.parent != None: 
    807                 wx.PostEvent(self.parent.parent.parent, 
    808                              StatusEvent(status=msg, type=type)) 
     713            wx.PostEvent(self.parent.parent.parent, 
     714                         StatusEvent(status=msg, type=type)) 
    809715 
    810716class ViewerFrame(wx.Frame): 
Note: See TracChangeset for help on using the changeset viewer.