Spaces:
Sleeping
Sleeping
import numpy as np | |
import xarray as xr # si usas netCDF | |
# o from netCDF4 import Dataset | |
# o import csv etc. según tu formato | |
def evaluate_prediction(pred_file_path, reference_file_path): | |
""" | |
pred_file_path: str - Ruta al archivo subido por el participante | |
reference_file_path: str - Ruta a tu ground-truth, local o en la web | |
returns: dict - un diccionario con las métricas calculadas | |
""" | |
# Ejemplo usando netCDF | |
pred_data = xr.open_dataset(pred_file_path) | |
ref_data = xr.open_dataset(reference_file_path) | |
# Asume que ambos tienen la misma dimensión "wavelength" o algo similar | |
pred_values = pred_data["spectrum"].values # shape (n_wavelengths,) | |
ref_values = ref_data["spectrum"].values # shape (n_wavelengths,) | |
# Calcular MRE por banda | |
mre = np.abs((pred_values - ref_values) / ref_values) | |
# MRE medio | |
mre_mean = mre.mean() | |
# Otras métricas | |
rmse = np.sqrt(((pred_values - ref_values)**2).mean()) | |
# Retornar resultados en un dict | |
return { | |
"mre_mean": float(mre_mean), | |
"rmse": float(rmse), | |
"mre_spectrum": mre.tolist(), # El espectro de MRE completo | |
} | |