Changeset 2117 for trunk/python/interactivemask.py
- Timestamp:
- 04/07/11 17:37:27 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/python/interactivemask.py
r2109 r2117 41 41 raise TypeError(msg) 42 42 43 self.scan =None44 self.p =None45 self.newplot =False43 self.scan = None 44 self.p = None 45 self.newplot = False 46 46 if scan and isinstance(scan, scantable): 47 self.scan =scan47 self.scan = scan 48 48 from asap.asapplotter import asapplotter 49 49 if plotter and isinstance(plotter,asapplotter): 50 50 self.p = plotter 51 51 if self.scan is None and isinstance(self.p._data,scantable): 52 self.scan =self.p._data52 self.scan = self.p._data 53 53 if self.scan is None: 54 54 msg = "Invalid scantable." 55 55 raise TypeError(msg) 56 56 57 self.mask =_n_bools(self.scan.nchan(),True)58 self.callback =None59 self.event =None60 self.once =False61 self.showmask =True62 self.rect ={}63 self.xold =None64 self.yold =None65 self.xdataold =None66 self.ydataold =None67 self._polygons =[]57 self.mask = _n_bools(self.scan.nchan(),True) 58 self.callback = None 59 self.event = None 60 self.once = False 61 self.showmask = True 62 self.rect = {} 63 self.xold = None 64 self.yold = None 65 self.xdataold = None 66 self.ydataold = None 67 self._polygons = [] 68 68 69 69 … … 90 90 # Create base mask 91 91 if ( len(masklist) > 0 ): 92 self.mask =self.scan.create_mask(masklist,invert=invert)93 elif invert ==True:94 self.mask =_n_bools(self.scan.nchan(),False)95 else: 96 self.mask =_n_bools(self.scan.nchan(),True)92 self.mask = self.scan.create_mask(masklist,invert=invert) 93 elif invert == True: 94 self.mask = _n_bools(self.scan.nchan(),False) 95 else: 96 self.mask = _n_bools(self.scan.nchan(),True) 97 97 98 98 … … 106 106 """ 107 107 from matplotlib.backend_bases import MouseEvent 108 if isinstance(event,MouseEvent) and event.name =='button_press_event':109 self.event =event110 else: 111 msg ="Invalid event."108 if isinstance(event,MouseEvent) and event.name == 'button_press_event': 109 self.event = event 110 else: 111 msg = "Invalid event." 112 112 raise TypeError(msg) 113 113 … … 120 120 finish_selection(callback=func) 121 121 """ 122 self.callback =callback122 self.callback = callback 123 123 124 124 def select_mask(self,once=False,showmask=True): … … 148 148 self.once = once 149 149 if self.once: 150 self.showmask =showmask150 self.showmask = showmask 151 151 else: 152 152 if not showmask: … … 154 154 asaplog.push('showmask spcification is ignored. Mask regions are plotted anyway.') 155 155 asaplog.post("WARN") 156 self.showmask =True156 self.showmask = True 157 157 158 158 #if not self.p._plotter or self.p._plotter.is_dead: … … 161 161 asaplog.post() 162 162 from asap.asapplotter import asapplotter 163 self.p =asapplotter()164 self.newplot =True163 self.p = asapplotter() 164 self.newplot = True 165 165 166 166 # Plot selected spectra if needed … … 206 206 # Do not fire event when in zooming/panning mode 207 207 mode = self.p._plotter.figmgr.toolbar.mode 208 if not mode == '':208 if not mode == '': 209 209 return 210 210 # Return if selected point is out of panel … … 223 223 sameaxes=(event.inaxes == self.rect['axes']) 224 224 if sameaxes: 225 xnow =event.x226 ynow =event.y227 self.xold =xnow228 self.yold =ynow229 self.xdataold =event.xdata230 self.ydataold =event.ydata231 else: 232 xnow =self.xold233 ynow =self.yold225 xnow = event.x 226 ynow = event.y 227 self.xold = xnow 228 self.yold = ynow 229 self.xdataold = event.xdata 230 self.ydataold = event.ydata 231 else: 232 xnow = self.xold 233 ynow = self.yold 234 234 235 235 self.p._plotter.figmgr.toolbar.draw_rubberband(event, xnow, ynow, self.rect['x'], self.rect['y']) … … 243 243 244 244 if event.inaxes == self.rect['axes']: 245 xend =event.x246 yend =event.y247 xdataend =event.xdata248 ydataend =event.ydata249 else: 250 xend =self.xold251 yend =self.yold252 xdataend =self.xdataold253 ydataend =self.ydataold245 xend = event.x 246 yend = event.y 247 xdataend = event.xdata 248 ydataend = event.ydata 249 else: 250 xend = self.xold 251 yend = self.yold 252 xdataend = self.xdataold 253 ydataend = self.ydataold 254 254 255 255 self.rect['world'][2:4] = [xdataend, ydataend] … … 257 257 self._update_mask() 258 258 # Clear up region selection 259 self.rect ={}260 self.xold =None261 self.yold =None262 self.xdataold =None263 self.ydataold =None259 self.rect = {} 260 self.xold = None 261 self.yold = None 262 self.xdataold = None 263 self.ydataold = None 264 264 if self.once: self.finish_selection(callback=self.callback) 265 265 266 266 def _update_mask(self): 267 267 # Min and Max for new mask 268 xstart =self.rect['world'][0]269 xend =self.rect['world'][2]268 xstart = self.rect['world'][0] 269 xend = self.rect['world'][2] 270 270 if xstart <= xend: newlist=[xstart,xend] 271 else: newlist =[xend,xstart]271 else: newlist = [xend,xstart] 272 272 # Mask or unmask 273 invmask =None273 invmask = None 274 274 if self.rect['button'] == 1: 275 invmask =False276 mflg ='Mask'275 invmask = False 276 mflg = 'Mask' 277 277 elif self.rect['button'] == 3: 278 invmask =True279 mflg ='UNmask'278 invmask = True 279 mflg = 'UNmask' 280 280 asaplog.push(mflg+': '+str(newlist)) 281 281 asaplog.post() 282 newmask =self.scan.create_mask(newlist,invert=invmask)282 newmask = self.scan.create_mask(newlist,invert=invmask) 283 283 # Logic operation to update mask 284 284 if invmask: 285 self.mask =mask_and(self.mask,newmask)286 else: 287 self.mask =mask_or(self.mask,newmask)285 self.mask = mask_and(self.mask,newmask) 286 else: 287 self.mask = mask_or(self.mask,newmask) 288 288 # Plot masked regions 289 289 #if self.showmask or not self.once: self._plot_mask() … … 295 295 msks = self.scan.get_masklist(self.mask,row=0) 296 296 # Get projection masks for multi-IF 297 ifs =self.scan.getifnos()297 ifs = self.scan.getifnos() 298 298 projs = [] 299 299 if len(ifs) > 1: 300 row0if =self.scan.getif(0)300 row0if = self.scan.getif(0) 301 301 for ifno in ifs: 302 302 if ifno == row0if: continue … … 308 308 # Remove old polygons 309 309 for polygon in self._polygons: polygon.remove() 310 self._polygons =[]310 self._polygons = [] 311 311 # Plot new polygons 312 312 if len(msks) > 0: 313 npanel =len(self.p._plotter.subplots)314 j =-1313 npanel = len(self.p._plotter.subplots) 314 j = -1 315 315 for iloop in range(len(msks)*npanel): 316 316 i = iloop % len(msks) … … 346 346 self.p._plotter = None 347 347 del self.p 348 self.p =None349 self._polygons =[]348 self.p = None 349 self._polygons = [] 350 350 351 351 … … 354 354 Erase masks plots from the plotter. 355 355 """ 356 if len(self._polygons) >0:356 if len(self._polygons) > 0: 357 357 # Remove old polygons 358 358 for polygon in self._polygons: polygon.remove() 359 359 self.p._plotter.show() 360 self._polygons =[]360 self._polygons = [] 361 361 362 362
Note: See TracChangeset
for help on using the changeset viewer.