diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py index 76718c0ec1ed0252712322692463aacc6ea3b925..4c29633430b62b4586d01381937414fe0b907d59 100644 --- a/modules/aeolus/aeolus_amv.py +++ b/modules/aeolus/aeolus_amv.py @@ -1944,7 +1944,7 @@ def create_file(filename, aeolus_to_amv_dct, aeolus_dct, amv_files, cld_lyr=Fals rootgrp.close() -def create_file_new(match_dct, filename, amv_params): +def create_file_new(match_dct, filename, amv_params, amv_file_s): num_aparams = 7 num_aprofs = 0 max_num_alevels = 0 @@ -1955,6 +1955,9 @@ def create_file_new(match_dct, filename, amv_params): atimes = [] elems = [] lines = [] + fidxs = [] + + amv_file_s = np.array(amv_file_s, dtype='object') # scan to get max num levels, amvs keys = list(match_dct.keys()) @@ -1970,6 +1973,7 @@ def create_file_new(match_dct, filename, amv_params): atimes.append(key) elems.append(tup[0]) lines.append(tup[1]) + fidxs.append(tup[2]) nlevs = prof.shape[0] if nlevs > max_num_alevels: @@ -1985,6 +1989,7 @@ def create_file_new(match_dct, filename, amv_params): atimes = np.array(atimes) elems = np.array(elems) lines = np.array(lines) + fidxs = np.array(fidxs) # Sample file to retrieve and copy variable attributes rg_exmpl = Dataset('/ships19/cloud/scratch/4TH_AMV_INTERCOMPARISON/FMWK2_AMV/GOES16_ABI_2KM_FD_2019293_0020_34_WINDS_AMV_EN-14CT.nc', 'r') @@ -1996,8 +2001,10 @@ def create_file_new(match_dct, filename, amv_params): dim_alevs = rootgrp.createDimension('max_num_aeolus_levels', size=max_num_alevels) dim_amvs = rootgrp.createDimension('max_num_amvs', size=max_num_amvs) dim_num_aeolus_prof = rootgrp.createDimension('num_aeolus_profs', size=num_aprofs) + dim_num_files = rootgrp.createDimension('num_amv_files', size=amv_file_s.shape[0]) prf_time = rootgrp.createVariable('time', 'f4', ['num_aeolus_profs']) + amv_file_names = rootgrp.createVariable('amv_file_names', str, ['num_amv_files']) # ---- Profile variables --------------- prf_lon = rootgrp.createVariable('prof_longitude', 'f4', ['num_aeolus_profs']) @@ -2007,6 +2014,7 @@ def create_file_new(match_dct, filename, amv_params): prf_time.units = 'seconds since 1970-01-1 00:00:00' prf_elem = rootgrp.createVariable('FD_elem', 'f4', ['num_aeolus_profs']) prf_line = rootgrp.createVariable('FD_line', 'f4', ['num_aeolus_profs']) + prf_fidx = rootgrp.createVariable('amv_file_index', 'i4', ['num_aeolus_profs']) prf_azm = rootgrp.createVariable('prof_azm', 'f4', ['num_aeolus_profs', 'max_num_aeolus_levels']) prf_azm.units = 'degree' prf_spd = rootgrp.createVariable('prof_spd', 'f4', ['num_aeolus_profs', 'max_num_aeolus_levels']) @@ -2038,6 +2046,9 @@ def create_file_new(match_dct, filename, amv_params): prf_elem[:] = elems prf_line[:] = lines prf_time[:] = atimes + prf_fidx[:] = fidxs + + amv_file_names[:] = amv_file_s idx = 0 for key in keys: @@ -2082,7 +2093,7 @@ def create_amv_to_aeolus_match_file(aeolus_files_dir, amv_files_dir, outfile=Non m_d = match_amvs_to_aeolus_fast(a_d, amv_files_dir, amv_source, band, amv_files) if outfile is not None: - create_file_new(m_d, outfile, amv_files.get_parameters()) + create_file_new(m_d, outfile, amv_files.get_parameters(), amv_files.flist) # match_file: pathname for the product file