def write_bias(channel, part1, part2, xname, ymd, dict_bias, day_or_night): """ 生成 RMD 日数据文件和月数据文件 :param channel: :param part1: :param part2: :param xname: :param ymd: :param dict_bias: :param day_or_night: :return: """ if not (xname in ["ref", "tbb"]): return for chan in channel: o_path = os.path.join(ABR_DIR, "%s_%s" % (part1, part2), "BIAS") file_name_monthly = os.path.join( o_path, "%s_%s_%s_%s_%s_Monthly.txt" % (part1, part2, xname.upper(), chan, day_or_night)) file_name_daily = os.path.join( o_path, "%s_%s_%s_%s_%s_Daily.txt" % (part1, part2, xname.upper(), chan, day_or_night)) # 写入日数据 bias = dict_bias[xname][chan][0] md = dict_bias[xname][chan][1] title_daily = ("{:15} " * 3).format("YMD", "Bias", "MD") + "\n" data_daily = ("{:15} " * 3).format(ymd, bias, md) + "\n" day_data_write(title_daily, data_daily, file_name_daily) # 写入月数据 title_monthly = ("{:15} " * 5).format("YMD", "Bias", "Bias_STD", "MD", "MD_STD") + "\n" bias_data = get_bias_data(file_name_daily) date_data = bias_data["date"] bias_day_data = np.vstack(bias_data["bias"]) md_day_data = np.vstack(bias_data["md"]) if len(date_data) <= 2: # 如果小于2天的数据,不计算月平均 continue bias_md_data = np.concatenate((bias_day_data, md_day_data), axis=1) data_monthly = month_average(date_data, bias_md_data) # 计算月平均和STD for data in data_monthly: ymd_monthly = data[0] bias_mean_monthly = data[1] md_mean_monthly = data[2] bias_std_monthly = data[3] md_std_monthly = data[4] data_str = ("{:15} " * 5).format( ymd_monthly, bias_mean_monthly, bias_std_monthly, md_mean_monthly, md_std_monthly) + "\n" day_data_write(title_monthly, data_str, file_name_monthly) print file_name_daily print file_name_monthly
def write_cabr(channel, part1, part2, o_name, ymd, dict_cabr, day_or_night): """ 生成 CABR 数据文件 :param channel: :param part1: :param part2: :param o_name: :param ymd: :param dict_cabr: :param day_or_night: :return: """ for chan in channel: o_path = os.path.join(ABR_DIR, "%s_%s" % (part1, part2), "CABR") file_name_monthly = os.path.join( o_path, "%s_%s_%s_%s_%s_Monthly.txt" % ( part1, part2, o_name, chan, day_or_night)) file_name_daily = os.path.join( o_path, "%s_%s_%s_%s_%s_Daily.txt" % ( part1, part2, o_name, chan, day_or_night)) # 写入日数据 title_daily = ("{:15} " * 5).format("YMD", "Count", "Slope", "Intercept", "RSquared") + "\n" c, a, b, r = dict_cabr[o_name][chan] data_daily = ("{:15} " * 5).format(ymd, c, a, b, r) + "\n" day_data_write(title_daily, data_daily, file_name_daily) # 写入月数据 cabr_data = get_cabr_data(file_name_daily) title_monthly = ("{:15} " * 8).format("YMD", "Count", "Slope", "Slope_STD", "Intercept", "Intercept_STD", "RSquared", "RSquared_STD") + "\n" date_data = cabr_data["date"] if len(date_data) <= 2: # 如果小于2天的数据,不计算月平均 continue c_data = cabr_data["count"] s_data = np.vstack(cabr_data["slope"]) i_data = np.vstack(cabr_data["intercept"]) r_data = np.vstack(cabr_data["rsquared"]) abr_data = np.concatenate((s_data, i_data, r_data), axis=1) # 合并 a b c 数据 count_monthly = month_count(date_data, c_data) # 计算月总数 abr_monthly = month_average(date_data, abr_data)[:, 1:] # 计算月平均和STD data_monthly = np.concatenate((count_monthly, abr_monthly), axis=1) for data in data_monthly: ymd_monthly = data[0] count_monthly = data[1] slope_mean_monthly = data[2] intercept_mean_monthly = data[3] rsquared_mean_monthly = data[4] slope_std_monthly = data[5] intercept_std_monthly = data[6] rsquared_std_monthly = data[7] data_str = ("{:15} " * 8).format(ymd_monthly, count_monthly, slope_mean_monthly, slope_std_monthly, intercept_mean_monthly, intercept_std_monthly, rsquared_mean_monthly, rsquared_std_monthly) + "\n" day_data_write(title_monthly, data_str, file_name_monthly) print file_name_daily print file_name_monthly