diff --git a/examples/structural_mechanics/crash/post_processing/compare_plots.ipynb b/examples/structural_mechanics/crash/post_processing/compare_plots.ipynb new file mode 100644 index 0000000000..3e6800ff53 --- /dev/null +++ b/examples/structural_mechanics/crash/post_processing/compare_plots.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compare L2 error across runs\n", + "\n", + "Loads `l2_error.csv` from each output directory and plots mean relative position error vs timestep.\n", + "\n", + "First run `./run_post_processing.sh` for each case to get `l2_error.csv`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded 6 runs.\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path\n", + "\n", + "# Output dirs from run_post_processing.sh (lines 5-10)\n", + "notebook_dir = Path(\".\").resolve()\n", + "repo_root = notebook_dir.parents[3] # physicsnemo\n", + "outputs_dir = repo_root / \"outputs\"\n", + "\n", + "run_names = {\n", + " \"Transolver(Adam)\": \"input directory name\",\n", + " \"Transolver(Muon)\": \"input directory name\",\n", + " \"GeoTransolver(Adam)\": \"input directory name\",\n", + " \"GeoTransolver(Muon)\": \"input directory name\",\n", + " \"GeoFlare(Adam)\": \"input directory name\",\n", + " \"GeoFlare(Muon)\": \"input directory name\",\n", + "}\n", + "\n", + "data = {}\n", + "for name, dir_name in run_names.items():\n", + " csv_path = outputs_dir / dir_name / \"post_processing_results\" / \"l2_error.csv\"\n", + " if csv_path.exists():\n", + " data[name] = pd.read_csv(csv_path)\n", + " else:\n", + " print(f\"Skipping (not found): {csv_path}\")\n", + "\n", + "print(f\"Loaded {len(data)} runs.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(8, 5))\n", + "\n", + "for name, df in data.items():\n", + " t = df[\"timestep\"]\n", + " mean_err = df[\"mean_relative_position_error\"]\n", + " std_err = df[\"std_relative_position_error\"]\n", + " label = name.replace(\"car_oneshot_direct_\", \"\").replace(\"_\", \" \")\n", + " ax.plot(t, mean_err, label=label)\n", + " # ax.fill_between(t, mean_err - std_err, mean_err + std_err, alpha=0.2)\n", + "\n", + "ax.set_xlabel(\"Timestep\", fontsize=14)\n", + "ax.set_ylabel(\"Mean Relative $L^2$ position error\", fontsize=14)\n", + "ax.set_title(\"Relative $L^2$ position error across test runs\", fontsize=14)\n", + "ax.legend(bbox_to_anchor=(1.0, 1), loc=\"upper left\", fontsize=12)\n", + "ax.tick_params(axis=\"both\", labelsize=12)\n", + "ax.grid(True, alpha=0.3)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transolver(Adam) 0.01595723960914511\n", + "Transolver(Muon) 0.01602681240066882\n", + "GeoTransolver(Adam) 0.014015633360083563\n", + "GeoTransolver(Muon) 0.013274615449232125\n", + "GeoFlare(Adam) 0.01163968610593912\n", + "GeoFlare(Muon) 0.008948673980859323\n" + ] + } + ], + "source": [ + "for name, df in data.items():\n", + " print(name, data[name][\"mean_relative_position_error\"].mean())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "physicsnemo_crash1", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/structural_mechanics/crash/post_processing/compute_probe_kinematics.py b/examples/structural_mechanics/crash/post_processing/compute_probe_kinematics.py index 576a8e8516..1697863558 100644 --- a/examples/structural_mechanics/crash/post_processing/compute_probe_kinematics.py +++ b/examples/structural_mechanics/crash/post_processing/compute_probe_kinematics.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2025 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 # @@ -23,7 +23,7 @@ import os import re import argparse -from typing import List, Dict +from typing import List, Dict, Tuple, Optional import numpy as np import pandas as pd @@ -141,6 +141,75 @@ def load_averaged_series( return df +def discover_runs(parent_dir: str) -> List[str]: + """ + Return sorted list of directories under parent_dir that contain at least one .vtp file. + Used to find all sample/run subdirectories for aggregation. + """ + if not parent_dir or not os.path.isdir(parent_dir): + return [] + runs: List[str] = [] + for root, _dirs, files in os.walk(parent_dir): + if any(f.lower().endswith(".vtp") for f in files): + runs.append(root) + return sorted(set(runs)) + + +def compute_squared_error_series( + gt_df: pd.DataFrame, pred_df: pd.DataFrame +) -> pd.DataFrame | None: + """ + Compute squared L2 error at each time for position, velocity, and acceleration. + Returns a DataFrame with Time (s), Pos_sqerr, Vel_sqerr, Acc_sqerr (scalar per time). + """ + common_time = np.intersect1d(gt_df["Time (s)"].values, pred_df["Time (s)"].values) + if common_time.size == 0: + return None + gt_aligned = gt_df.set_index("Time (s)").loc[common_time].sort_index() + pred_aligned = pred_df.set_index("Time (s)").loc[common_time].sort_index() + pos_cols = [c for c in gt_aligned.columns if c.startswith("Position_")] + vel_cols = [c for c in gt_aligned.columns if c.startswith("Velocity_")] + acc_cols = [c for c in gt_aligned.columns if c.startswith("Acceleration_")] + if not (pos_cols and vel_cols and acc_cols): + return None + pos_gt = gt_aligned[pos_cols].values + pos_pred = pred_aligned[pos_cols].values + vel_gt = gt_aligned[vel_cols].values + vel_pred = pred_aligned[vel_cols].values + acc_gt = gt_aligned[acc_cols].values + acc_pred = pred_aligned[acc_cols].values + pos_sqerr = np.sum((pos_pred - pos_gt) ** 2, axis=1) + vel_sqerr = np.sum((vel_pred - vel_gt) ** 2, axis=1) + acc_sqerr = np.sum((acc_pred - acc_gt) ** 2, axis=1) + return pd.DataFrame( + { + "Time (s)": common_time, + "Pos_sqerr": pos_sqerr, + "Vel_sqerr": vel_sqerr, + "Acc_sqerr": acc_sqerr, + } + ) + + +def compute_mse_over_samples( + list_of_sqerr: List[pd.DataFrame], +) -> Optional[Tuple[float, float, float]]: + """ + Given per-sample squared-error DataFrames (Pos_sqerr, Vel_sqerr, Acc_sqerr), + return MSE over all samples and all time: (mse_pos, mse_vel, mse_acc). + """ + if not list_of_sqerr: + return None + all_pos = np.concatenate([df["Pos_sqerr"].values for df in list_of_sqerr]) + all_vel = np.concatenate([df["Vel_sqerr"].values for df in list_of_sqerr]) + all_acc = np.concatenate([df["Acc_sqerr"].values for df in list_of_sqerr]) + return ( + float(np.mean(all_pos)), + float(np.mean(all_vel)), + float(np.mean(all_acc)), + ) + + def plot_kinematics( driver_gt: pd.DataFrame, driver_pred: pd.DataFrame, @@ -249,7 +318,7 @@ def get_limits(dfs: List[pd.DataFrame], col: str): plt.show() -def main(): +def compute_probe_kinematics_single_sample(): parser = argparse.ArgumentParser( description="Plot derived kinematics (Driver & Passenger | GT vs Pred) from averaged point positions.", formatter_class=argparse.ArgumentDefaultsHelpFormatter, @@ -324,6 +393,72 @@ def main(): if passenger_pred is None: return + # Compute normalized squared error for driver + common = driver_gt.columns.intersection(driver_pred.columns) + cols = common[ + ~common.str.contains("Time", case=False) + ] # drop any col containing 'time' + + # normalized error: (gt - pred) / mean(|gt|) + sqerr = (driver_gt[cols] - driver_pred[cols]).abs() + denom = driver_gt[cols].abs().mean(axis=0).replace(0, np.nan) # avoid div-by-zero + norm_sqerr = sqerr.div(denom, axis=1) + + # rename: e.g., Position_X -> Position_error_X + norm_sqerr.columns = [ + f"{a}_error_{b}" for a, b in (c.split("_", 1) for c in norm_sqerr.columns) + ] + + # print mean for each normalized error column (driver) + driver_norm_means = norm_sqerr.mean() + print("\nDriver normalized error means:") + print( + f" Position_error: {(driver_norm_means['Position_error_X'] + driver_norm_means['Position_error_Y'] + driver_norm_means['Position_error_Z']) / 3}" + ) + print( + f" Velocity_error: {(driver_norm_means['Velocity_error_X'] + driver_norm_means['Velocity_error_Y'] + driver_norm_means['Velocity_error_Z']) / 3}" + ) + print( + f" Acceleration_error: {(driver_norm_means['Acceleration_error_X'] + driver_norm_means['Acceleration_error_Y'] + driver_norm_means['Acceleration_error_Z']) / 3}" + ) + + # append to driver_gt (optional: fill NaNs if any denom was 0) + driver_gt = pd.concat([driver_gt, norm_sqerr.fillna(0)], axis=1) + + # Compute normalized squared error for passenger + common = passenger_gt.columns.intersection(passenger_pred.columns) + cols = common[ + ~common.str.contains("Time", case=False) + ] # drop any col containing 'time' + + # normalized error: (gt - pred) / mean(|gt|) + sqerr = (passenger_gt[cols] - passenger_pred[cols]).abs() + denom = ( + passenger_gt[cols].abs().mean(axis=0).replace(0, np.nan) + ) # avoid div-by-zero + norm_sqerr = sqerr.div(denom, axis=1) + + # rename: e.g., Position_X -> Position_error_X + norm_sqerr.columns = [ + f"{a}_error_{b}" for a, b in (c.split("_", 1) for c in norm_sqerr.columns) + ] + + # print mean for each normalized error column (passenger) + passenger_norm_means = norm_sqerr.mean() + print("\nPassenger normalized error means:") + print( + f" Position_error: {(passenger_norm_means['Position_error_X'] + passenger_norm_means['Position_error_Y'] + passenger_norm_means['Position_error_Z']) / 3}" + ) + print( + f" Velocity_error: {(passenger_norm_means['Velocity_error_X'] + passenger_norm_means['Velocity_error_Y'] + passenger_norm_means['Velocity_error_Z']) / 3}" + ) + print( + f" Acceleration_error: {(passenger_norm_means['Acceleration_error_X'] + passenger_norm_means['Acceleration_error_Y'] + passenger_norm_means['Acceleration_error_Z']) / 3}" + ) + + # append to driver_gt (optional: fill NaNs if any denom was 0) + passenger_gt = pd.concat([passenger_gt, norm_sqerr.fillna(0)], axis=1) + if args.save_csv: driver_gt.to_csv( "driver_ground_truth_kinematics.csv", index=False, float_format="%.6e" @@ -344,5 +479,182 @@ def main(): ) +def compute_probe_kinematics_all_samples(): + parser = argparse.ArgumentParser( + description="Compute MSE (position, velocity, acceleration) at probe locations over all samples and time; " + "optionally plot GT vs Pred per sample.", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + parser.add_argument( + "--predicted_parent", + type=str, + help="Parent directory whose subdirs contain predicted VTP files (one subdir per sample).", + default=None, + ) + parser.add_argument( + "--exact_parent", + type=str, + help="Parent directory whose subdirs contain ground truth VTP files (same relative paths as predicted_parent).", + default=None, + ) + parser.add_argument( + "--pred_dir", + type=str, + default=None, + help='Single-sample: directory with predicted VTP files ("prediction" array). Ignored if predicted_parent is set.', + ) + parser.add_argument( + "--exact_dir", + type=str, + default=None, + help='Single-sample: directory with exact VTP files ("exact" array). Ignored if exact_parent is set.', + ) + parser.add_argument( + "--driver_points", + type=str, + required=True, + help='Driver point IDs/ranges (e.g., "70658-70659,70664,70676-70679").', + ) + parser.add_argument( + "--passenger_points", + type=str, + required=True, + help="Passenger point IDs/ranges.", + ) + parser.add_argument( + "--dt", type=float, default=5e-3, help="Time step size Δt in seconds." + ) + parser.add_argument( + "--output_path", + type=str, + default=None, + help="Directory where all plots are stored (GT vs Pred per sample + mean ± 2*std summary).", + ) + parser.add_argument( + "--save_csv", + action="store_true", + help="Save probe MSE (position, velocity, acceleration) to CSV.", + ) + args = parser.parse_args() + + driver_ids = parse_point_set(args.driver_points) + passenger_ids = parse_point_set(args.passenger_points) + + os.makedirs(args.output_path, exist_ok=True) + + run_pairs: List[tuple] = [] + if args.predicted_parent and args.exact_parent: + pred_runs = discover_runs(args.predicted_parent) + exact_by_rel = { + os.path.relpath(d, args.exact_parent): d + for d in discover_runs(args.exact_parent) + } + for pred_run in pred_runs: + rel = os.path.relpath(pred_run, args.predicted_parent) + exact_run = exact_by_rel.get(rel) + if exact_run is not None: + run_pairs.append((pred_run, exact_run)) + elif args.pred_dir and args.exact_dir: + if os.path.isdir(args.pred_dir) and os.path.isdir(args.exact_dir): + run_pairs = [(args.pred_dir, args.exact_dir)] + if not run_pairs: + print( + "❌ No sample directories found. Set --predicted_parent and --exact_parent, or --pred_dir and --exact_dir." + ) + return + + print( + f"Found {len(run_pairs)} sample(s). Computing squared errors and GT vs Pred plots..." + ) + driver_sqerrs: List[pd.DataFrame] = [] + passenger_sqerrs: List[pd.DataFrame] = [] + predicted_parent = args.predicted_parent or "" + + for idx, (pred_dir, exact_dir) in enumerate(run_pairs): + driver_gt = load_averaged_series( + exact_dir, driver_ids, args.dt, position_array="exact" + ) + driver_pred = load_averaged_series( + pred_dir, driver_ids, args.dt, position_array="prediction" + ) + passenger_gt = load_averaged_series( + exact_dir, passenger_ids, args.dt, position_array="exact" + ) + passenger_pred = load_averaged_series( + pred_dir, passenger_ids, args.dt, position_array="prediction" + ) + if driver_gt is None or driver_pred is None: + continue + if passenger_gt is None or passenger_pred is None: + continue + dr_sq = compute_squared_error_series(driver_gt, driver_pred) + pass_sq = compute_squared_error_series(passenger_gt, passenger_pred) + if dr_sq is not None: + driver_sqerrs.append(dr_sq) + if pass_sq is not None: + passenger_sqerrs.append(pass_sq) + + # Unique name for this sample: relative path from parent, sanitized for filename + if predicted_parent: + sample_rel = os.path.relpath(pred_dir, predicted_parent) + else: + sample_rel = str(idx) + sample_name = sample_rel.replace(os.sep, "_").replace(" ", "_") + if not sample_name.strip(): + sample_name = f"sample_{idx}" + sample_plot_path = os.path.join( + args.output_path, f"kinematics_gt_pred_{sample_name}.png" + ) + plot_kinematics( + driver_gt, driver_pred, passenger_gt, passenger_pred, sample_plot_path + ) + + if not driver_sqerrs or not passenger_sqerrs: + print( + "❌ Could not compute squared errors for any sample (missing or misaligned data)." + ) + return + + mse_driver = compute_mse_over_samples(driver_sqerrs) + mse_passenger = compute_mse_over_samples(passenger_sqerrs) + if mse_driver is None or mse_passenger is None: + return + + print("\n--- MSE at probe locations (over all samples and all time) ---") + print("Driver probe:") + print(f" Position MSE: {mse_driver[0]:.6e}") + print(f" Velocity MSE: {mse_driver[1]:.6e}") + print(f" Acceleration MSE: {mse_driver[2]:.6e}") + print("Passenger probe:") + print(f" Position MSE: {mse_passenger[0]:.6e}") + print(f" Velocity MSE: {mse_passenger[1]:.6e}") + print(f" Acceleration MSE: {mse_passenger[2]:.6e}") + + if args.save_csv: + mse_df = pd.DataFrame( + [ + { + "probe": "driver", + "position_mse": mse_driver[0], + "velocity_mse": mse_driver[1], + "acceleration_mse": mse_driver[2], + }, + { + "probe": "passenger", + "position_mse": mse_passenger[0], + "velocity_mse": mse_passenger[1], + "acceleration_mse": mse_passenger[2], + }, + ] + ) + mse_df.to_csv( + os.path.join(args.output_path, "probe_mse.csv"), + index=False, + float_format="%.6e", + ) + print("\n💾 Saved probe MSE to probe_mse.csv.") + + if __name__ == "__main__": - main() + # compute_probe_kinematics_single_sample() + compute_probe_kinematics_all_samples() diff --git a/examples/structural_mechanics/crash/post_processing/run_post_processing.sh b/examples/structural_mechanics/crash/post_processing/run_post_processing.sh old mode 100644 new mode 100755 index e4e65e1f61..b4069999b7 --- a/examples/structural_mechanics/crash/post_processing/run_post_processing.sh +++ b/examples/structural_mechanics/crash/post_processing/run_post_processing.sh @@ -2,13 +2,16 @@ mkdir -p results +dir_path= /path/to/output/directory + python compute_probe_kinematics.py \ - --pred_dir ../predicted_vtps/Run51/test_000 \ - --exact_dir ../exact_vtps/Run51/test_000 \ + --predicted_parent $dir_path/predicted_vtps \ + --exact_parent $dir_path/exact_vtps \ --driver_points "70658-70659,70654-70655,70664,70656,70657,70660,70661-70663,70665,70676-70679,70680-70684,70695-70759,70775-70777,70760,70757,70666-70675,70644,70646,70651,70650" \ --passenger_points "78575-78583,78577,78579,78706-78733,78738-78763,78765-78767,78776-78778,78734-78737,78768-78775" \ --dt 5e-3 \ - --output_plot results/probe_kinematics.png -python compute_l2_error.py --predicted_parent ../predicted_vtps --exact_parent ../exact_vtps --output_plot results/l2_error.png -python plot_cross_section.py --pred_dir ../predicted_vtps/Run51/test_000/ --exact_dir ../exact_vtps/Run51/test_000/ --output_file results/cross_section.png + --output_path $dir_path/post_processing_results \ + # --save_csv +python compute_l2_error.py --predicted_parent $dir_path/predicted_vtps --exact_parent $dir_path/exact_vtps --output_plot $dir_path/post_processing_results/l2_error.png --output_csv $dir_path/post_processing_results/l2_error.csv +python plot_cross_section.py --pred_dir $pred_path --exact_dir $exact_path --output_file $dir_path/post_processing_results/cross_section.png