diff --git a/MOAFStat.py b/MOAFStat.py index 49f7b53..33e8cb7 100644 --- a/MOAFStat.py +++ b/MOAFStat.py @@ -61,7 +61,7 @@ def calculate_advanced_statistics(df_result): return pd.Series(result_stats) -def process_autofocus_results(input_file, output_type="distance", group_size=30): +def process_autofocus_results(input_file, dataset_type, group_size=30): # ========== 图片级统计数据 ========== # 读取原始数据 df_original = pd.read_excel(input_file) @@ -139,42 +139,23 @@ def process_autofocus_results(input_file, output_type="distance", group_size=30) df_result["dof"] = ((550.0 * df_result["rix"]) / (df_result["na"] ** 2)) + ((df_result["rix"] * 3450.0) / (df_result["mag"] * df_result["na"])) # 计算绝对/带符号误差/景深比 - if output_type == "ratio": - df_result["error_mean"] = np.abs(df_result["label"] / df_result["dof"] - df_result["pred_mean"]) - df_result["error_median"] = np.abs(df_result["label"] / df_result["dof"] - df_result["pred_median"]) - df_result["error_z_mean"] = np.abs(df_result["label"] / df_result["dof"] - df_result["pred_z_mean"]) - df_result["error_z_median"] = np.abs(df_result["label"] / df_result["dof"] - df_result["pred_z_median"]) - df_result["serror_mean"] = df_result["label"] / df_result["dof"] - df_result["pred_mean"] - df_result["serror_median"] = df_result["label"] / df_result["dof"] - df_result["pred_median"] - df_result["serror_z_mean"] = df_result["label"] / df_result["dof"] - df_result["pred_z_mean"] - df_result["serror_z_median"] = df_result["label"] / df_result["dof"] - df_result["pred_z_median"] + df_result["error_mean"] = np.abs(df_result["label"] - df_result["pred_mean"]) + df_result["error_median"] = np.abs(df_result["label"] - df_result["pred_median"]) + df_result["error_z_mean"] = np.abs(df_result["label"] - df_result["pred_z_mean"]) + df_result["error_z_median"] = np.abs(df_result["label"] - df_result["pred_z_median"]) + df_result["serror_mean"] = df_result["label"] - df_result["pred_mean"] + df_result["serror_median"] = df_result["label"] - df_result["pred_median"] + df_result["serror_z_mean"] = df_result["label"] - df_result["pred_z_mean"] + df_result["serror_z_median"] = df_result["label"] - df_result["pred_z_median"] - df_result["error_ratio_mean"] = df_result["error_mean"] - df_result["error_ratio_median"] = df_result["error_median"] - df_result["error_ratio_z_mean"] = df_result["error_z_mean"] - df_result["error_ratio_z_median"] = df_result["error_z_median"] - df_result["serror_ratio_mean"] = df_result["serror_mean"] - df_result["serror_ratio_median"] = df_result["serror_median"] - df_result["serror_ratio_z_mean"] = df_result["serror_z_mean"] - df_result["serror_ratio_z_median"] = df_result["serror_z_median"] - else: - df_result["error_mean"] = np.abs(df_result["label"] - df_result["pred_mean"]) - df_result["error_median"] = np.abs(df_result["label"] - df_result["pred_median"]) - df_result["error_z_mean"] = np.abs(df_result["label"] - df_result["pred_z_mean"]) - df_result["error_z_median"] = np.abs(df_result["label"] - df_result["pred_z_median"]) - df_result["serror_mean"] = df_result["label"] - df_result["pred_mean"] - df_result["serror_median"] = df_result["label"] - df_result["pred_median"] - df_result["serror_z_mean"] = df_result["label"] - df_result["pred_z_mean"] - df_result["serror_z_median"] = df_result["label"] - df_result["pred_z_median"] - - df_result["error_ratio_mean"] = df_result["error_mean"] / df_result["dof"] - df_result["error_ratio_median"] = df_result["error_median"] / df_result["dof"] - df_result["error_ratio_z_mean"] = df_result["error_z_mean"] / df_result["dof"] - df_result["error_ratio_z_median"] = df_result["error_z_median"] / df_result["dof"] - df_result["serror_ratio_mean"] = df_result["serror_mean"] / df_result["dof"] - df_result["serror_ratio_median"] = df_result["serror_median"] / df_result["dof"] - df_result["serror_ratio_z_mean"] = df_result["serror_z_mean"] / df_result["dof"] - df_result["serror_ratio_z_median"] = df_result["serror_z_median"] / df_result["dof"] + df_result["error_ratio_mean"] = df_result["error_mean"] / df_result["dof"] + df_result["error_ratio_median"] = df_result["error_median"] / df_result["dof"] + df_result["error_ratio_z_mean"] = df_result["error_z_mean"] / df_result["dof"] + df_result["error_ratio_z_median"] = df_result["error_z_median"] / df_result["dof"] + df_result["serror_ratio_mean"] = df_result["serror_mean"] / df_result["dof"] + df_result["serror_ratio_median"] = df_result["serror_median"] / df_result["dof"] + df_result["serror_ratio_z_mean"] = df_result["serror_z_mean"] / df_result["dof"] + df_result["serror_ratio_z_median"] = df_result["serror_z_median"] / df_result["dof"] # 计算方向预测正确性 df_result["direction_mean"] = (df_result['label'] * df_result['pred_mean'] >= 0).astype(int) @@ -258,11 +239,11 @@ def main(): # 确定超参数 model_type = cfg["model_type"] - output_type = cfg["output_type"] + dataset_type = cfg["dataset_type"] - result_path = f"results/{model_type}_{output_type}.xlsx" + result_path = f"results/{model_type}_{dataset_type}.xlsx" - _ = process_autofocus_results(result_path, output_type) + _ = process_autofocus_results(result_path, dataset_type) if __name__ == "__main__":