From 4c2e88cc07d3f7bb600b948ce713a713868c3081 Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Fri, 2 Apr 2021 15:35:53 -0500 Subject: [PATCH] snapshot... --- modules/icing/pirep_goes.py | 95 ++++++++++++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 7 deletions(-) diff --git a/modules/icing/pirep_goes.py b/modules/icing/pirep_goes.py index 98a488cb..c64195b0 100644 --- a/modules/icing/pirep_goes.py +++ b/modules/icing/pirep_goes.py @@ -44,7 +44,7 @@ icing_files = ['icing_2018010600_2018033022_QC_DAY.h5', 'icing_2018040100_201806 'icing_2018100115_2018123022_QC_DAY.h5', 'icing_2019010100_2019033023_QC_DAY.h5'] icing_l1b_files = [] -no_icing_files = ['no_icing_2018010600_2018033022_DAY.h5', 'no_icing_2018040100_2018063021_DAY.h5', 'no_icing_2018070101_2018093022_DAY.h5', +no_icing_files = ['no_icing_2018010600_2018033022_DAY.h5', 'no_icing_2018040100_2018063022_DAY.h5', 'no_icing_2018070100_2018093022_DAY.h5', 'no_icing_2018100115_2018123022_DAY.h5', 'no_icing_2019010100_2019033023_DAY.h5'] no_icing_l1b_files = [] @@ -798,13 +798,22 @@ def apply_qc_icing_pireps(icing_alt, cld_top_hgt, cld_phase, cld_opd, cld_mask, def fov_extract(): - ice_times = [] - ice_int_s = [] + icing_int_s = [] + + h5_s_icing = [] + h5_s_no_icing = [] + + icing_data_dct = {ds: [] for ds in train_params_day} + no_icing_data_dct = {ds: [] for ds in train_params_day} + sub_indexes = np.arange(400) + + num_ice = 0 for fidx in range(len(icing_files)): fname = icing_files[fidx] f = h5py.File(data_dir+fname, 'r') + h5_s_icing.append(f) times = f['time'][:] num_obs = len(times) @@ -817,18 +826,37 @@ def fov_extract(): cld_top_temp = f['cld_temp_acha'][:, 10:30, 10:30] cld_top_temp = cld_top_temp.reshape((num_obs, -1)) - ice_mask = [] for i in range(num_obs): keep_0 = np.logical_or(cld_mask[i,] == 2, cld_mask[i,] == 3) # cloudy keep_1 = np.invert(np.isnan(cld_top_temp[i,])) keep = keep_0 & keep_1 keep = np.where(keep, cld_top_temp[i,] < 273.0, False) + k_idxs = sub_indexes[keep] + np.random.shuffle(k_idxs) + if len(k_idxs) > 10: + k_idxs = k_idxs[0:10] + else: + k_idxs = k_idxs[0:len(k_idxs)] + num_ice += len(k_idxs) + + for ds_name in train_params_day: + dat = f[ds_name][i, 10:30, 10:30].flatten() + icing_data_dct[ds_name].append(dat[k_idxs]) + + icing_int_s.append(icing_int) + print(fname) - ice_mask.append(keep) + for ds_name in train_params_day: + lst = icing_data_dct[ds_name] + icing_data_dct[ds_name] = np.concatenate(lst) + icing_int_s = np.concatenate(icing_int_s) + + num_no_ice = 0 for fidx in range(len(no_icing_files)): fname = no_icing_files[fidx] f = h5py.File(data_dir+fname, 'r') + h5_s_no_icing.append(f) times = f['time'] num_obs = len(times) @@ -839,11 +867,64 @@ def fov_extract(): cld_top_temp = f['cld_temp_acha'][:, 10:30, 10:30] cld_top_temp = cld_top_temp.reshape((num_obs, -1)) - no_ice_mask = [] for i in range(num_obs): keep_0 = np.logical_or(cld_mask[i,] == 2, cld_mask[i,] == 3) # cloudy # keep_1 = np.invert(np.isnan(cld_top_temp[i,])) # keep = keep_0 & keep_1 # keep = np.where(keep, cld_top_temp[i,] > 273.0, False) + k_idxs = sub_indexes[keep_0] + np.random.shuffle(k_idxs) + if len(k_idxs) > 5: + k_idxs = k_idxs[0:5] + else: + k_idxs = k_idxs[0:len(k_idxs)] + num_no_ice += len(k_idxs) + + for ds_name in train_params_day: + dat = f[ds_name][i, 10:30, 10:30].flatten() + no_icing_data_dct[ds_name].append(dat[k_idxs]) + + print(fname) + + for ds_name in train_params_day: + lst = no_icing_data_dct[ds_name] + no_icing_data_dct[ds_name] = np.concatenate(lst) + no_icing_int_s = np.full(num_no_ice, -1) + + + ds_indexes = np.arange(num_ice + num_no_ice) + ds_indexes = np.random.shuffle(ds_indexes) + + icing_intensity = np.concatenate([icing_int_s, no_icing_int_s]) + + data_dct = {} + for ds_name in train_params_day: + data_dct[ds_name] = np.concatenate([icing_data_dct[ds_name], no_icing_data_dct[ds_name]]) + + for ds_name in train_params_day: + data_dct[ds_name] = data_dct[ds_name][ds_indexes] + icing_intensity = icing_intensity[ds_indexes] + + + h5f_expl = h5py.File(a_clvr_file, 'r') + h5f_out = h5py.File('/Users/tomrink/fovs_out.h5', 'w') + + for idx, ds_name in enumerate(train_params_day): + dt = ds_types[ds_list.index(ds_name)] + data = data_dct[ds_name] + h5f_out.create_dataset(ds_name, data=data, dtype=dt) + + icing_int_ds = h5f_out.create_dataset('icing_intensity', data=icing_intensity, dtype='i4') + icing_int_ds.attrs.create('long_name', data='From PIREP. -1:No Icing, 1:Trace, 2:Light, 3:Light Moderate, 4:Moderate, 5:Moderate Severe, 6:Severe') + + + + # --- close files + for h5f in h5_s_icing: + h5f.close() + + for h5f in h5_s_no_icing: + h5f.close() - no_ice_mask.append(keep_0) \ No newline at end of file + h5f_out.close() + h5f_out.close() \ No newline at end of file -- GitLab