def average_by_year()

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()