33from  scipy  import  interpolate 
44from  scipy  import  spatial 
55from  pyproj  import  Proj 
6- import  numpy  as  np 
6+ from  numpy  import  unique , array , unravel_index , r_ , floor , interp , arange , \
7+     sin , cos , deg2rad , arctan2 , sqrt , pi , zeros , reciprocal , ma , empty , \
8+     concatenate 
79import  logging 
810from  ..tracking_objects  import  nearest 
911
@@ -106,8 +108,8 @@ def read_nc_att(self, varname, att):
106108
107109    @property  
108110    def  is_regular (self ):
109-         steps_lon  =  np . unique (self ._lon [0 , 1 :] -  self ._lon [0 ,:- 1 ])
110-         steps_lat  =  np . unique (self ._lat [1 :, 0 ] -  self ._lat [:- 1 , 0 ])
111+         steps_lon  =  unique (self ._lon [0 , 1 :] -  self ._lon [0 ,:- 1 ])
112+         steps_lat  =  unique (self ._lat [1 :, 0 ] -  self ._lat [:- 1 , 0 ])
111113        return  len (steps_lon ) ==  1  and  len (steps_lat ) ==  1  and  \
112114            steps_lon [0 ] !=  0.  and  steps_lat [0 ] !=  0. 
113115
@@ -135,14 +137,14 @@ def kdt(lon, lat, limits, k=4):
135137             
136138            Don't use cKDTree for regular grid 
137139            """ 
138-             ppoints  =  np . array ([lon .ravel (), lat .ravel ()]).T 
140+             ppoints  =  array ([lon .ravel (), lat .ravel ()]).T 
139141            ptree  =  spatial .cKDTree (ppoints )
140142            pindices  =  ptree .query (limits , k = k )[1 ]
141-             iind , jind  =  np . array ([], dtype = int ), np . array ([], dtype = int )
143+             iind , jind  =  array ([], dtype = int ), array ([], dtype = int )
142144            for  pind  in  pindices .ravel ():
143-                 j , i  =  np . unravel_index (pind , lon .shape )
144-                 iind  =  np . r_ [iind , i ]
145-                 jind  =  np . r_ [jind , j ]
145+                 j , i  =  unravel_index (pind , lon .shape )
146+                 iind  =  r_ [iind , i ]
147+                 jind  =  r_ [jind , j ]
146148            return  iind , jind 
147149
148150        if  'AvisoGrid'  in  self .__class__ .__name__ :
@@ -152,16 +154,16 @@ def kdt(lon, lat, limits, k=4):
152154                Used for a zero crossing, e.g., across Agulhas region 
153155                """ 
154156                if  self .is_regular :
155-                     i_1  =  int (np . floor (np . interp ((lonmin  -  0.5 ) %  360 ,
157+                     i_1  =  int (floor (interp ((lonmin  -  0.5 ) %  360 ,
156158                                       self ._lon [0 ],
157-                                        np . arange (len (self ._lon [0 ])))))
158-                     i_0  =  int (np . floor (np . interp ((lonmax  +  0.5 ) %  360 ,
159+                                        arange (len (self ._lon [0 ])))))
160+                     i_0  =  int (floor (interp ((lonmax  +  0.5 ) %  360 ,
159161                                       self ._lon [0 ],
160-                                        np . arange (len (self ._lon [0 ])))
162+                                        arange (len (self ._lon [0 ])))
161163                                       ) +  1 )
162164                else :
163165                    def  half_limits (lon , lat ):
164-                         return  np . array ([[lon .min (), lon .max (),
166+                         return  array ([[lon .min (), lon .max (),
165167                                          lon .max (), lon .min ()],
166168                                         [lat .min (), lat .min (),
167169                                          lat .max (), lat .max ()]]).T 
@@ -230,12 +232,12 @@ def haversine_dist(self, lon1, lat1, lon2, lat2):
230232        Return: 
231233          distance (m) 
232234        """ 
233-         sin_dlat  =  np . sin (np . deg2rad (lat2  -  lat1 ) *  0.5 )
234-         sin_dlon  =  np . sin (np . deg2rad (lon2  -  lon1 ) *  0.5 )
235-         cos_lat1  =  np . cos (np . deg2rad (lat1 ))
236-         cos_lat2  =  np . cos (np . deg2rad (lat2 ))
235+         sin_dlat  =  sin (deg2rad (lat2  -  lat1 ) *  0.5 )
236+         sin_dlon  =  sin (deg2rad (lon2  -  lon1 ) *  0.5 )
237+         cos_lat1  =  cos (deg2rad (lat1 ))
238+         cos_lat2  =  cos (deg2rad (lat2 ))
237239        a_val  =  sin_dlon  **  2  *  cos_lat1  *  cos_lat2  +  sin_dlat  **  2 
238-         c_val  =  2  *  np . arctan2 (np . sqrt (a_val ), np . sqrt (1  -  a_val ))
240+         c_val  =  2  *  arctan2 (sqrt (a_val ), sqrt (1  -  a_val ))
239241        return  6371315.0  *  c_val   # Return the distance 
240242
241243    def  nearest_point (self , lon , lat ):
@@ -260,7 +262,7 @@ def get_aviso_f_pm_pn(self):
260262        logging .info ('--- Computing Coriolis (f), d_x(p_m),' 
261263                     'd_y (p_n) for padded grid' )
262264        # Get GRAVITY / Coriolis 
263-         self ._gof  =  np . sin (np . deg2rad (self .latpad )) *  4.  *  np . pi  /  86400. 
265+         self ._gof  =  sin (deg2rad (self .latpad )) *  4.  *  pi  /  86400. 
264266        self ._f_val  =  self ._gof .copy ()
265267        self ._gof  =  self .GRAVITY  /  self ._gof 
266268
@@ -270,29 +272,29 @@ def get_aviso_f_pm_pn(self):
270272        latv  =  self .half_interp (self .latpad [:- 1 ], self .latpad [1 :])
271273
272274        # Get p_m and p_n 
273-         p_m  =  np . zeros_like (self .lonpad )
275+         p_m  =  zeros (self .lonpad . shape )
274276        p_m [:, 1 :- 1 ] =  self .haversine_dist (lonu [:, :- 1 ], latu [:, :- 1 ],
275277                                           lonu [:, 1 :], latu [:, 1 :])
276278        p_m [:, 0 ] =  p_m [:, 1 ]
277279        p_m [:, - 1 ] =  p_m [:, - 2 ]
278280        self ._dx  =  p_m 
279-         self ._pm  =  np . reciprocal (p_m )
281+         self ._pm  =  reciprocal (p_m )
280282
281-         p_n  =  np . zeros_like (self .lonpad )
283+         p_n  =  zeros (self .lonpad . shape )
282284        p_n [1 :- 1 ] =  self .haversine_dist (lonv [:- 1 ], latv [:- 1 ],
283285                                        lonv [1 :], latv [1 :])
284286        p_n [0 ] =  p_n [1 ]
285287        p_n [- 1 ] =  p_n [- 2 ]
286288        self ._dy  =  p_n 
287-         self ._pn  =  np . reciprocal (p_n )
289+         self ._pn  =  reciprocal (p_n )
288290        return  self 
289291
290292    def  u2rho_2d (self , uu_in ):
291293        """ 
292294        Convert a 2D field at u_val points to a field at rho points 
293295        """ 
294296        def  uu2ur (uu_in , m_p , l_p ):
295-             u_out  =  np . zeros ((m_p , l_p ))
297+             u_out  =  zeros ((m_p , l_p ))
296298            u_out [:, 1 :- 1 ] =  self .half_interp (uu_in [:, :- 1 ], uu_in [:, 1 :])
297299            u_out [:, 0 ] =  u_out [:, 1 ]
298300            u_out [:, - 1 ] =  u_out [:, - 2 ]
@@ -303,7 +305,7 @@ def uu2ur(uu_in, m_p, l_p):
303305    def  v2rho_2d (self , vv_in ):
304306        # Convert a 2D field at v_val points to a field at rho points 
305307        def  vv2vr (vv_in , m_p , l_p ):
306-             v_out  =  np . zeros ((m_p , l_p ))
308+             v_out  =  zeros ((m_p , l_p ))
307309            v_out [1 :- 1 ] =  self .half_interp (vv_in [:- 1 ], vv_in [1 :])
308310            v_out [0 ] =  v_out [1 ]
309311            v_out [- 1 ] =  v_out [- 2 ]
@@ -372,13 +374,13 @@ def set_geostrophic_velocity(self, zeta):
372374        zeta1 , zeta2  =  zeta .data [1 :].view (), zeta .data [:- 1 ].view ()
373375        pn1 , pn2  =  self .p_n [1 :].view (), self .p_n [:- 1 ].view ()
374376        self .upad [:] =  self .v2rho_2d (
375-             np . ma .array ((zeta1  -  zeta2 ) *  0.5  *  (pn1  +  pn2 ), mask =  self .vmask ))
377+             ma .array ((zeta1  -  zeta2 ) *  0.5  *  (pn1  +  pn2 ), mask =  self .vmask ))
376378        self .upad  *=  - self .gof 
377379
378380        zeta1 , zeta2  =  zeta .data [:, 1 :].view (), zeta .data [:, :- 1 ].view ()
379381        pm1 , pm2  =  self .p_m [:, 1 :].view (), self .p_m [:, :- 1 ].view ()
380382        self .vpad [:] =  self .u2rho_2d (
381-             np . ma .array ((zeta1  -  zeta2 ) * 0.5  *  (pm1  +  pm2 ), mask = self .umask ))
383+             ma .array ((zeta1  -  zeta2 ) * 0.5  *  (pm1  +  pm2 ), mask = self .umask ))
382384        self .vpad  *=  self .gof 
383385        return  self 
384386
@@ -388,13 +390,13 @@ def set_u_v_eke(self, pad=2):
388390        """ 
389391        j_size  =  self .slice_j_pad .stop  -  self .slice_j_pad .start 
390392        if  self .zero_crossing :
391-             u_1  =  np . empty ((j_size , self .slice_i_pad .start ))
392-             u_0  =  np . empty ((j_size , self ._lon .shape [1 ] -  self .slice_i_pad .stop ))
393-             self .upad  =  np . ma .concatenate ((u_0 , u_1 ), axis = 1 )
393+             u_1  =  empty ((j_size , self .slice_i_pad .start ))
394+             u_0  =  empty ((j_size , self ._lon .shape [1 ] -  self .slice_i_pad .stop ))
395+             self .upad  =  ma .concatenate ((u_0 , u_1 ), axis = 1 )
394396        else :
395-             self .upad  =  np . empty ((j_size ,
397+             self .upad  =  empty ((j_size ,
396398                                  self .slice_i_pad .stop  -  self .slice_i_pad .start ))
397-         self .vpad  =  np . empty_like (self .upad )
399+         self .vpad  =  empty (self .upad . shape )
398400
399401    def  get_eke (self ):
400402        """ 
@@ -412,7 +414,7 @@ def uspd(self):
412414        if  hasattr (uspd , 'mask' ):
413415            uspd .mask  +=  self .mask [self .view_unpad ]
414416        else :
415-             uspd  =  np . ma .array (uspd , mask = self .mask [self .view_unpad ])
417+             uspd  =  ma .array (uspd , mask = self .mask [self .view_unpad ])
416418        return  uspd 
417419
418420    def  set_interp_coeffs (self , sla , uspd ):
@@ -429,8 +431,8 @@ def set_interp_coeffs(self, sla, uspd):
429431    def  create_index_inverse (slice_to_inverse , size ):
430432        """Return an array of index 
431433        """ 
432-         index  =  np . concatenate ((np . arange (slice_to_inverse .stop , size ),
433-                                 np . arange (slice_to_inverse .start )))
434+         index  =  concatenate ((arange (slice_to_inverse .stop , size ),
435+                                 arange (slice_to_inverse .start )))
434436        return  index 
435437
436438    def  gaussian_resolution (self , zwl , mwl ):
0 commit comments