diff --git a/modules/icing/pirep_goes.py b/modules/icing/pirep_goes.py index 92ff6887fb5f272751215a6be63763edc22ce418..89edc546d86f5660403014b5f7ef4fde47a68a17 100644 --- a/modules/icing/pirep_goes.py +++ b/modules/icing/pirep_goes.py @@ -82,6 +82,7 @@ train_params_night = ['cld_height_acha', 'cld_geo_thick', 'supercooled_cloud_fra # HALF_WIDTH = 20 HALF_WIDTH = 1 + # Just a wrapper for the conversion of PIREP reports to in-memory dictionary def setup(pirep_file=homedir+'data/pirep/pireps_20180101_20200331.csv'): ice_dict, no_ice_dict, neg_ice_dict = pirep_icing(pirep_file) @@ -200,7 +201,7 @@ def get_grid_values(h5f, grid_name, j_c, i_c, half_width, num_j=None, num_i=None return grd_vals -def create_file(filename, data_dct, ds_list, ds_types, lon_c, lat_c, time_s, fl_alt_s, icing_intensity, unq_ids, mask=None): +def create_file(filename, data_dct, ds_list, ds_types, lon_c, lat_c, time_s, fl_alt_s, icing_intensity, unq_ids, flt_temp=None, flt_spd=None, mask=None): h5f_expl = h5py.File(a_clvr_file, 'r') h5f = h5py.File(filename, 'w') @@ -235,6 +236,15 @@ def create_file(filename, data_dct, ds_list, ds_types, lon_c, lat_c, time_s, fl_ unq_ids_ds = h5f.create_dataset('unique_id', data=unq_ids, dtype='i4') unq_ids_ds.attrs.create('long_name', data='ID mapping to PIREP icing dictionary: see pireps.py') + if flt_temp is not None: + flt_temp_ds = h5f.create_dataset('flight_temperature', data=flt_temp, dtype='f4') + flt_temp_ds.dims[0].label = 'time' + flt_temp_ds.attrs.create('units', data='degK') + + if flt_spd is not None: + flt_spd_ds = h5f.create_dataset('flight_air_speed', data=flt_spd, dtype='f4') + flt_spd_ds.dims[0].label = 'time' + if mask is not None: mask = mask.astype(np.byte) mask_ds = h5f.create_dataset('FOV_mask', data=mask, dtype=np.byte) @@ -286,6 +296,8 @@ def run(pirep_dct, platform, outfile=None, outfile_l1b=None, dt_str_start=None, fl_alt_s = [] ice_int_s = [] unq_ids = [] + fl_temp_s = [] + fl_spd_s = [] for idx, time in enumerate(time_keys): if t_start is not None: @@ -323,7 +335,8 @@ def run(pirep_dct, platform, outfile=None, outfile_l1b=None, dt_str_start=None, cc = ll = -1 reports = pirep_dct[time] for tup in reports: - lat, lon, fl, I, uid, rpt_str = tup + # lat, lon, fl, I, uid, rpt_str = tup + lat, lon, fl, I, uid, rpt_str, f_temp, f_spd = tup lat_s[0] = lat lon_s[0] = lon @@ -337,15 +350,6 @@ def run(pirep_dct, platform, outfile=None, outfile_l1b=None, dt_str_start=None, cc = cc_a[0] ll = ll_a[0] - - # test -------------------- - lon_grd_vals = get_grid_values(h5f, 'longitude', ll_a[0], cc_a[0], HALF_WIDTH, fill_value_name=None, range_name='valid_range', fill_value=-999.0) - lat_grd_vals = get_grid_values(h5f, 'latitude', ll_a[0], cc_a[0], HALF_WIDTH, fill_value_name=None, range_name='valid_range', fill_value=-999.0) - print(lon_grd_vals[1, 1], lon) - print(lat_grd_vals[1, 1], lat) - continue - # ------------------------------ - cnt_a = 0 ds_lst = [] for didx, ds_name in enumerate(ds_list): @@ -381,6 +385,8 @@ def run(pirep_dct, platform, outfile=None, outfile_l1b=None, dt_str_start=None, fl_alt_s.append(fl) ice_int_s.append(I) unq_ids.append(uid) + fl_temp_s.append(f_temp) + fl_spd_s.append(f_spd) if len(time_s) == 0: return @@ -394,6 +400,8 @@ def run(pirep_dct, platform, outfile=None, outfile_l1b=None, dt_str_start=None, fl_alt_s = np.array(fl_alt_s) ice_int_s = np.array(ice_int_s) unq_ids = np.array(unq_ids) + fl_temp_s = np.array(fl_temp_s) + fl_spd_s = np.array(fl_spd_s) data_dct = {} for ds_name in ds_list: @@ -401,7 +409,7 @@ def run(pirep_dct, platform, outfile=None, outfile_l1b=None, dt_str_start=None, if outfile is not None: outfile = add_time_range_to_filename(outfile, t_start, t_end) - create_file(outfile, data_dct, ds_list, ds_types, lon_c, lat_c, time_s, fl_alt_s, ice_int_s, unq_ids) + create_file(outfile, data_dct, ds_list, ds_types, lon_c, lat_c, time_s, fl_alt_s, ice_int_s, unq_ids, flt_temp=fl_temp_s, flt_spd=fl_spd_s) data_dct = {} for ds_name in l1b_ds_list: