in data_preprocessing/postprocess/prism.py [0:0]
def average_by_year(start_month, end_month):
if not os.path.exists('../../experiment_data/only_spatial/averaged_{}_{}/nc'.format(start_month, end_month)):
os.makedirs('../../experiment_data/only_spatial/averaged_{}_{}/nc'.format(start_month, end_month))
for year in range(1999, 2019):
fh_out = Dataset('../../experiment_data/only_spatial/averaged_{}_{}/nc/{}.nc'.format(start_month, end_month, year), 'w')
first_flag = True
var_lis = defaultdict(list)
for month in range(start_month, end_month+1):
fh_in = Dataset('../../processed_data/prism/combined_monthly/{}{}.nc'.format(year, '{0:02}'.format(month)))
if first_flag:
for name, dim in fh_in.dimensions.items():
fh_out.createDimension(name, len(dim))
for v_name, varin in fh_in.variables.items():
outVar = fh_out.createVariable(v_name, varin.datatype, varin.dimensions)
outVar.setncatts({k: varin.getncattr(k) for k in varin.ncattrs()})
if v_name in ["lat", "lon"]:
outVar[:] = varin[:]
first_flag = False
for v_name, varin in fh_in.variables.items():
if v_name not in ["lat", "lon"]:
var_lis[v_name].append(fh_in.variables[v_name][:])
fh_in.close()
for var in fh_out.variables:
if var != "lat" and var != "lon":
fh_out.variables[var][:] = ma.array(var_lis[var]).mean(axis=0)
fh_out.close()