diff --git a/modules/util/util.py b/modules/util/util.py index 9116e4ef1ba384571be5744095a87a0049fe1d1d..b9a4684f5851fa2af09bf98a8e9bceebce856391 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -13,6 +13,7 @@ from netCDF4 import Dataset from util.setup import ancillary_path from scipy.interpolate import RectBivariateSpline, interp2d from scipy.ndimage import gaussian_filter +from scipy.signal import medfilt2d LatLonTuple = namedtuple('LatLonTuple', ['lat', 'lon']) @@ -1444,6 +1445,18 @@ def smooth_2d_single(z, sigma=1.0): return gaussian_filter(z, sigma=sigma) +def median_filter_2d(z, kernel_size=3): + z_filtered = [] + for j in range(z.shape[0]): + z_j = z[j, :, :] + z_filtered.append(medfilt2d(z_j, kernel_size=kernel_size)) + return np.stack(z_filtered) + + +def median_filter_2d_single(z, kernel_size=3): + return medfilt2d(z, kernel_size=kernel_size) + + def get_training_parameters(day_night='DAY', l1b_andor_l2='both', satellite='GOES16', use_dnb=False): if day_night == 'DAY': train_params_l2 = ['cld_height_acha', 'cld_geo_thick', 'cld_temp_acha', 'cld_press_acha', 'supercooled_cloud_fraction',