my-challenge / evaluate.py
Julio Cesar Contreras Huerta
XCVXZCV
1a0754f
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
}