@@ -138,23 +138,27 @@ def read_nc_att(self, varfile, varname, att):
138138        with  Dataset (varfile ) as  nc :
139139            return  eval ('' .join (("nc.variables[varname]." , att )))
140140
141-     def  set_initial_indices (self ,  LONMIN ,  LONMAX ,  LATMIN ,  LATMAX ):
141+     def  set_initial_indices (self ):
142142        """ 
143-         Get  indices for desired domain 
143+         Set  indices for desired domain 
144144        """ 
145+         LONMIN , LONMAX  =  self .LONMIN , self .LONMAX 
146+         LATMIN , LATMAX  =  self .LATMIN , self .LATMAX 
147+         
145148        print  '--- Setting initial indices to *%s* domain'  %  self .THE_DOMAIN 
146149        print  '------ LONMIN = %s, LONMAX = %s, LATMIN = %s, LATMAX = %s'  %  (
147150                                           LONMIN , LONMAX , LATMIN , LATMAX )
148-         self .i0 , _  =  self .nearest_point (LONMIN , 
149-                                         LATMIN  +  0.5  *  (LATMAX  -  LATMIN ))
150-         self .i1 , _  =  self .nearest_point (LONMAX ,
151-                                         LATMIN  +  0.5  *  (LATMAX  -  LATMIN ))
152-         _ , self .j0  =  self .nearest_point (LONMIN  +  0.5  *  (LONMAX  -  LONMIN ),
153-                                         LATMIN )
154-         _ , self .j1  =  self .nearest_point (LONMIN  +  0.5  *  (LONMAX  -  LONMIN ),
155-                                         LATMAX )
151+         LATMIN_OFFSET  =  LATMIN  +  (0.5  *  (LATMAX  -  LATMIN ))
152+         self .i0 , _  =  self .nearest_point (LONMIN , LATMIN_OFFSET )
153+         self .i1 , _  =  self .nearest_point (LONMAX , LATMIN_OFFSET )
154+         LONMIN_OFFSET  =  LONMIN  +  (0.5  *  (LONMAX  -  LONMIN ))
155+         _ , self .j0  =  self .nearest_point (LONMIN_OFFSET , LATMIN )
156+         _ , self .j1  =  self .nearest_point (LONMIN_OFFSET , LATMAX )
156157
157158        def  kdt (lon , lat , limits , k = 4 ):
159+             """ 
160+             Make kde tree for indices if domain crosses zero meridian 
161+             """ 
158162            ppoints  =  np .array ([lon .ravel (), lat .ravel ()]).T 
159163            ptree  =  spatial .cKDTree (ppoints )
160164            pindices  =  ptree .query (limits , k = k )[1 ]
@@ -463,6 +467,23 @@ def getEKE(self):
463467        self .eke [:] =  self .u ** 2  +  self .v ** 2 
464468        self .eke  *=  0.5 
465469        return  self 
470+     
471+     def  set_interp_coeffs (self , sla , uspd ):
472+         """ 
473+         Won't work for rotated grid 
474+         """ 
475+         if  'AVISO'  in  self .PRODUCT :
476+             self .sla_coeffs  =  interpolate .RectBivariateSpline (
477+                 self .lat ()[:, 0 ], self .lon ()[0 ], sla , kx = 1 , ky = 1 )
478+             self .uspd_coeffs  =  interpolate .RectBivariateSpline (
479+                 self .lat ()[:, 0 ], self .lon ()[0 ], uspd , kx = 1 , ky = 1 )
480+         elif  'ROMS'  in  self .PRODUCT :
481+             points  =  np .array ([self .lon ().ravel (), self .lat ().ravel ()]).T 
482+             self .sla_coeffs  =  interpolate .CloughTocher2DInterpolator (
483+                 points , sla .ravel ())
484+             self .uspd_coeffs  =  interpolate .CloughTocher2DInterpolator (
485+                 points , uspd .ravel ())
486+         return  self 
466487
467488
468489class  AvisoGrid  (PyEddyTracker ):
@@ -476,7 +497,7 @@ def __init__(self, AVISO_FILE, THE_DOMAIN, PRODUCT,
476497        Initialise the grid object 
477498        """ 
478499        super (AvisoGrid , self ).__init__ ()
479-         print  '\n Initialising the AVISO_grid' 
500+         print  '\n Initialising the * AVISO_grid* ' 
480501        self .THE_DOMAIN  =  THE_DOMAIN 
481502        self .PRODUCT  =  PRODUCT 
482503        self .LONMIN  =  LONMIN 
@@ -515,8 +536,9 @@ def __init__(self, AVISO_FILE, THE_DOMAIN, PRODUCT,
515536        self .set_basemap (with_pad = with_pad )
516537        self .get_AVISO_f_pm_pn ()
517538        self .set_u_v_eke ()
518-         pad2  =  2  *  self .pad 
519-         self .shape  =  (self .f ().shape [0 ] -  pad2 , self .f ().shape [1 ] -  pad2 )
539+         self .shape  =  self .lon ().shape 
540+         #pad2 = 2 * self.pad 
541+         #self.shape = (self.f().shape[0] - pad2, self.f().shape[1] - pad2) 
520542
521543    def  __getstate__ (self ):
522544        """ 
@@ -758,16 +780,6 @@ def brypath(self, imin=0, imax=-1, jmin=0, jmax=-1):
758780        brypath  =  np .array ([lon , lat ]).T 
759781        return  path .Path (brypath )
760782
761-     def  set_interp_coeffs (self , sla , uspd ):
762-         """ 
763-         Won't work for rotated grid 
764-         """ 
765-         self .sla_coeffs  =  interpolate .RectBivariateSpline (
766-             self .lat ()[:, 0 ], self .lon ()[0 ], sla , kx = 1 , ky = 1 )
767-         self .uspd_coeffs  =  interpolate .RectBivariateSpline (
768-             self .lat ()[:, 0 ], self .lon ()[0 ], uspd , kx = 1 , ky = 1 )
769-         return  self 
770- 
771783#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
772784
773785if  __name__  ==  '__main__' :
@@ -872,13 +884,12 @@ def set_interp_coeffs(self, sla, uspd):
872884        if  'SLA'  in  DIAGNOSTIC_TYPE :
873885            ZWL  =  np .atleast_1d (config ['SMOOTHING_SLA' ]['ZWL' ])
874886            MWL  =  np .atleast_1d (config ['SMOOTHING_SLA' ]['MWL' ])
875-             SMOOTHING_TYPE  =  config ['SMOOTHING_SLA' ]['TYPE' ]
876887        elif  'Q'  in  DIAGNOSTIC_TYPE :
877888            SMOOTH_FAC  =  config ['SMOOTHING_Q' ]['SMOOTH_FAC' ]
878-             SMOOTHING_TYPE  =  config ['SMOOTHING_SLA' ]['TYPE' ]
879889        else :
880890            Exception 
881- 
891+         SMOOTHING_TYPE  =  config ['SMOOTHING_SLA' ]['TYPE' ]
892+     
882893    if  'Q'  in  DIAGNOSTIC_TYPE :
883894        AMP0  =  0.02   # vort/f 
884895    elif  'SLA'  in  DIAGNOSTIC_TYPE :
@@ -925,7 +936,7 @@ def set_interp_coeffs(self, sla, uspd):
925936
926937    if  'Gaussian'  in  SMOOTHING_TYPE :
927938        # Get parameters for ndimage.gaussian_filter 
928-         zres ,  mres  =  gaussian_resolution (sla_grd .get_resolution (),
939+         ZRES ,  MRES  =  gaussian_resolution (sla_grd .get_resolution (),
929940                                         ZWL , MWL )
930941
931942    fig  =  plt .figure (1 )
@@ -940,10 +951,10 @@ def set_interp_coeffs(self, sla, uspd):
940951
941952    # Initialise two eddy objects to hold data 
942953    #kwargs = config 
943-     A_eddy  =  eddy_tracker .TrackList ('AVISO'  ,  ' Anticyclonic'A_SAVEFILE ,
954+     A_eddy  =  eddy_tracker .TrackList ('Anticyclonic' , A_SAVEFILE ,
944955                                    sla_grd , search_ellipse , ** config )
945956
946-     C_eddy  =  eddy_tracker .TrackList ('AVISO'  ,  ' Cyclonic'C_SAVEFILE ,
957+     C_eddy  =  eddy_tracker .TrackList ('Cyclonic' , C_SAVEFILE ,
947958                                    sla_grd , search_ellipse , ** config )
948959
949960    A_eddy .search_ellipse  =  search_ellipse 
@@ -1022,7 +1033,7 @@ def set_interp_coeffs(self, sla, uspd):
10221033                    np .place (sla , sla .data  ==  sla_grd .FILLVAL , 0. )
10231034                    # High pass filter, see 
10241035                    # http://stackoverflow.com/questions/6094957/high-pass-filter-for-image-processing-in-python-by-using-scipy-numpy 
1025-                     sla  -=  ndimage .gaussian_filter (sla , [mres ,  zres ])
1036+                     sla  -=  ndimage .gaussian_filter (sla , [MRES ,  ZRES ])
10261037
10271038                elif  'Hanning'  in  SMOOTHING_TYPE :
10281039
@@ -1252,8 +1263,6 @@ def set_interp_coeffs(self, sla, uspd):
12521263                                animax , animax_cbar )
12531264
12541265            # Save inactive eddies to nc file 
1255-             # IMPORTANT: this must be done at every time step!! 
1256-             #saving_START_TIME = time.time() 
12571266            if  not  first_record :
12581267
12591268                if  A_eddy .VERBOSE :
0 commit comments