5
5
from numpy import concatenate , int32 , empty , where , array , \
6
6
sin , deg2rad , pi , ones , cos , ma , int8 , histogram2d , arange , float_ , \
7
7
linspace , errstate , int_ , interp , meshgrid , nan , ceil , sinc , isnan , \
8
- percentile , zeros , arctan2 , arcsin , round_ , nanmean , exp
8
+ percentile , zeros , arctan2 , arcsin , round_ , nanmean , exp , mean as np_mean
9
9
from datetime import datetime
10
10
from scipy .special import j1
11
11
from netCDF4 import Dataset
@@ -1013,6 +1013,11 @@ def convolve_filter_with_dynamic_kernel(self, grid, kernel_func, lat_max=85, ext
1013
1013
# Matrix for result
1014
1014
data_out = ma .empty (data .shape )
1015
1015
data_out .mask = ones (data_out .shape , dtype = bool )
1016
+ nb_lines = self .y_c .shape [0 ]
1017
+ dt = list ()
1018
+
1019
+ debug_active = logging .getLogger ().getEffectiveLevel () == logging .DEBUG
1020
+
1016
1021
for i , lat in enumerate (self .y_c ):
1017
1022
if abs (lat ) > lat_max or data [:, i ].mask .all ():
1018
1023
data_out .mask [:, i ] = True
@@ -1021,6 +1026,12 @@ def convolve_filter_with_dynamic_kernel(self, grid, kernel_func, lat_max=85, ext
1021
1026
kernel = kernel_func (lat , ** kwargs_func )
1022
1027
# Kernel shape
1023
1028
k_shape = kernel .shape
1029
+ t0 = datetime .now ()
1030
+ if debug_active and len (dt ) > 0 :
1031
+ dt_mean = np_mean (dt ) * (nb_lines - i )
1032
+ print ('Remain ' , dt_mean , 'ETA ' , t0 + dt_mean , 'current kernel size :' , k_shape , 'Step : %d/%d' % (i , nb_lines ), end = "\r " )
1033
+
1034
+
1024
1035
# Half size, k_shape must be always impair
1025
1036
d_lat = int ((k_shape [1 ] - 1 ) / 2 )
1026
1037
d_lon = int ((k_shape [0 ] - 1 ) / 2 )
@@ -1049,6 +1060,9 @@ def convolve_filter_with_dynamic_kernel(self, grid, kernel_func, lat_max=85, ext
1049
1060
data_out [:, i ] = ma .array (values_sum / kernel_sum , mask = kernel_sum < (extend * kernel .sum ()))
1050
1061
else :
1051
1062
data_out [:, i ] = values_sum / kernel_sum
1063
+ dt .append (datetime .now () - t0 )
1064
+ if len (dt ) == 100 :
1065
+ dt .pop (0 )
1052
1066
if extend :
1053
1067
return ma .array (data_out , mask = data_out .mask )
1054
1068
else :
0 commit comments