3232""" 
3333import  sys 
3434import  glob  as  glob 
35- from  py_eddy_tracker_classes  import  plt , np , dt , Dataset , ndimage ,  time , \
35+ from  py_eddy_tracker_classes  import  plt , np , dt , Dataset , time , \
3636                                    datestr2datetime , gaussian_resolution , \
3737                                    get_cax , collection_loop , track_eddies , \
38-                                     anim_figure ,  interpolate 
38+                                     anim_figure 
3939from  py_eddy_tracker_amplitude  import  SwirlSpeed 
4040import  make_eddy_tracker_list_obj  as  eddy_tracker 
41+ import  scipy .ndimage  as  ndimage 
42+ import  scipy .interpolate  as  interpolate 
43+ import  scipy .spatial  as  spatial 
4144from  dateutil  import  parser 
4245from  mpl_toolkits .basemap  import  Basemap 
4346import  yaml 
@@ -266,15 +269,15 @@ def get_AVISO_f_pm_pn(self):
266269        self ._f  =  self ._gof .copy ()
267270        self ._gof  =  self .GRAVITY  /  self ._gof 
268271
269-         lonu  =  self .half_interp (self .lonpad ()[:,:- 1 ], self .lonpad ()[:,1 :])
270-         latu  =  self .half_interp (self .latpad ()[:,:- 1 ], self .latpad ()[:,1 :])
272+         lonu  =  self .half_interp (self .lonpad ()[:,  :- 1 ], self .lonpad ()[:,  1 :])
273+         latu  =  self .half_interp (self .latpad ()[:,  :- 1 ], self .latpad ()[:,  1 :])
271274        lonv  =  self .half_interp (self .lonpad ()[:- 1 ], self .lonpad ()[1 :])
272275        latv  =  self .half_interp (self .latpad ()[:- 1 ], self .latpad ()[1 :])
273276
274277        # Get pm and pn 
275278        pm  =  np .zeros_like (self .lonpad ())
276-         pm [:,1 :- 1 ] =  self .haversine_dist (lonu [:,:- 1 ], latu [:,:- 1 ],
277-                                          lonu [:,1 :],  latu [:,1 :])
279+         pm [:,1 :- 1 ] =  self .haversine_dist (lonu [:,  :- 1 ], latu [:,  :- 1 ],
280+                                          lonu [:,  1 :],  latu [:,  1 :])
278281        pm [:,0 ] =  pm [:,1 ]
279282        pm [:,- 1 ] =  pm [:,- 2 ]
280283        self ._dx  =  pm 
@@ -356,7 +359,7 @@ def uvmask(self):
356359        Mp , Lp  =  self .mask .shape 
357360        M  =  Mp  -  1 
358361        L  =  Lp  -  1 
359-         self ._umask  =  self .mask [:,:L ] *  self .mask [:,1 :Lp ]
362+         self ._umask  =  self .mask [:,  :L ] *  self .mask [:,  1 :Lp ]
360363        self ._vmask  =  self .mask [:M ] *  self .mask [1 :Mp ]
361364        return  self 
362365
@@ -379,28 +382,6 @@ def make_gridmask(self, with_pad=True, use_maskoceans=False):
379382            x , y  =  self .M (self .lonpad (), self .latpad ())
380383        else :
381384            x , y  =  self .M (self .lon (), self .lat ())
382-         #print '--- Computing Basemap mask' 
383-         #self.mask = np.ones_like(x, dtype=bool) 
384-         #if use_maskoceans: 
385-             #print "------ using Basemap *maskoceans*: this is fast but may be" 
386-             #print "------ marginally less accurate than Basemap's *is_land* method..." 
387-             #from mpl_toolkits.basemap import maskoceans 
388-             #if with_pad: 
389-                 #self.mask = maskoceans(self.lonpad(), self.latpad(), self.mask, 
390-                                       #inlands=False, resolution='f', grid=1.25) 
391-             #else: 
392-                 #self.mask = maskoceans(self.lon(), self.lat()) 
393-             #self.mask = self.mask.mask.astype(int) 
394-         #else: 
395-             #print "------ using Basemap *is_land*: this is slow for larger domains" 
396-             #print "------ but can be speeded up once Basemap's *maskoceans* method is introduced" 
397-             #print "------ (currently longitude wrapping behaviour is unclear...)" 
398-             #it = np.nditer([x, y], flags=['multi_index']) 
399-             #while not it.finished: 
400-                 #self.mask[it.multi_index] = self.M.is_land(x[it.multi_index], 
401-                                                            #y[it.multi_index]) 
402-                 #it.iternext() 
403-             #self.mask = np.atleast_2d(-self.mask).astype(int) 
404385        self .Mx , self .My  =  x , y 
405386        return  self 
406387
@@ -421,8 +402,8 @@ def set_geostrophic_velocity(self, zeta):
421402        self .upad  *=  - gof 
422403
423404        umask  =  self .umask ().view ()
424-         zeta1 , zeta2  =  zeta .data [:,1 :].view (), zeta .data [:,:- 1 ].view ()
425-         pm1 , pm2  =  self .pm ()[:,1 :].view (), self .pm ()[:,:- 1 ].view ()
405+         zeta1 , zeta2  =  zeta .data [:,  1 :].view (), zeta .data [:,  :- 1 ].view ()
406+         pm1 , pm2  =  self .pm ()[:,  1 :].view (), self .pm ()[:,  :- 1 ].view ()
426407        self .vpad [:] =  self .u2rho_2d (umask  *  (zeta1  -  zeta2 ) * 
427408                                                0.5  *  (pm1  +  pm2 ))
428409        self .vpad  *=  gof 
@@ -490,7 +471,7 @@ def __init__(self, AVISO_FILE, LONMIN, LONMAX, LATMIN, LATMAX,
490471            self .fillval  =  self .read_nc_att (AVISO_FILE ,
491472                                           'Grid_0001' , '_FillValue' )
492473
493-         if  LONMIN  <  0  and  LONMAX  <= 0 :
474+         if  LONMIN  <  0  and  LONMAX  <=   0 :
494475            self ._lon  -=  360. 
495476        self ._lon , self ._lat  =  np .meshgrid (self ._lon , self ._lat )
496477        self ._angle  =  np .zeros_like (self ._lon )
@@ -554,7 +535,7 @@ def get_AVISO_data(self, AVISO_FILE):
554535    def  set_mask (self , sla ):
555536        """ 
556537        """ 
557-         if  sla .mask .size  ==  1 :
538+         if  sla .mask .size  ==  1 :  # all sea points 
558539            self .mask  =  np .ones_like (sla .data )
559540        else :
560541            self .mask  =  sla .mask .astype (np .int ) -  1 
@@ -592,7 +573,7 @@ def fillmask(self, x, mask):
592573
593574        # Multiply the queried good points by the weight, selecting only the 
594575        # nearest points. Divide by the number of nearest points to get average 
595-         xfill  =  weight  *  x [igood [:, 0 ][iquery ], igood [:,1 ][iquery ]]
576+         xfill  =  weight  *  x [igood [:, 0 ][iquery ], igood [:,  1 ][iquery ]]
596577        xfill  =  (xfill  /  weight .sum (axis = 1 )[:, np .newaxis ]).sum (axis = 1 )
597578
598579        # Place average of nearest good points, xfill, into bad point locations 
@@ -606,7 +587,6 @@ def lon(self):
606587            # shouldn't need to happen with every call to self.lon() 
607588            lon0  =  self ._lon [self .j0 :self .j1 , self .i1 :]
608589            lon1  =  self ._lon [self .j0 :self .j1 , :self .i0 ]
609-             print  'fix this so called only once' 
610590            return  np .concatenate ((lon0  -  360. , lon1 ), axis = 1 )
611591        else :
612592            return  self ._lon [self .j0 :self .j1 , self .i0 :self .i1 ]
0 commit comments