from pathlib import Path import matplotlib import numpy as np from matplotlib import pyplot as plt from common import load_config matplotlib.use("Agg") def main(): cfg = load_config() output_dir = Path(cfg.inference.output_dir) metrics_path = output_dir / "rollout_metrics.npz" if not metrics_path.exists(): raise FileNotFoundError( f"Missing {metrics_path}. Run scripts/inference.py before result.py." ) mse = np.load(metrics_path)["mse"] print(f"Sequences: {len(mse)}") print(f"Average MSE: {float(np.mean(mse)):.6e}") print(f"Best MSE: {float(np.min(mse)):.6e}") print(f"Worst MSE: {float(np.max(mse)):.6e}") fig, ax = plt.subplots(figsize=(8, 4)) ax.plot(np.arange(len(mse)), mse, marker=".") ax.set_xlabel("Sequence") ax.set_ylabel("Position MSE") ax.set_title("Lagrangian MeshGraphNet Rollout Error") ax.grid(True, linestyle="--", alpha=0.3) fig.tight_layout() fig.savefig(output_dir / "error.png", dpi=200) plt.close(fig) if __name__ == "__main__": main()