Download scripts/result.py from OneScience-Group/CFDBench: direct link, hf CLI and curl.
- Browser
- Download file 1.84 kB
-
https://huggingface.co/OneScience-Group/CFDBench/resolve/f66dcc7a856aa5df10255db0b79faa9ecdb76508/scripts/result.py
- Command line
-
hf download hf://OneScience-Group/CFDBench@f66dcc7a856aa5df10255db0b79faa9ecdb76508/scripts/result.py
-
curl -L -o result.py https://huggingface.co/OneScience-Group/CFDBench/resolve/f66dcc7a856aa5df10255db0b79faa9ecdb76508/scripts/result.py
1.84 kB
| import argparse | |
| import json | |
| import os | |
| import sys | |
| from pathlib import Path | |
| import torch | |
| PROJECT_ROOT = Path(__file__).resolve().parents[1] | |
| sys.path.insert(0, str(PROJECT_ROOT)) | |
| from onescience.utils.YParams import YParams | |
| from model import infer_task_type | |
| def resolve_path(path_value): | |
| path = Path(path_value) | |
| return path if path.is_absolute() else PROJECT_ROOT / path | |
| def output_path(cfg): | |
| task_type = infer_task_type(cfg.model.name) | |
| output_dir = resolve_path(cfg.inference.output_dir) | |
| if cfg.inference.get("group_by_model", False): | |
| output_dir = output_dir / task_type / cfg.model.name | |
| return output_dir | |
| def parse_args(): | |
| parser = argparse.ArgumentParser(description="Summarize CFDBench inference outputs.") | |
| parser.add_argument("--model", default=None, help="Override root.model.name and read that model's inference outputs.") | |
| return parser.parse_args() | |
| def main(): | |
| args = parse_args() | |
| cfg = YParams(str(PROJECT_ROOT / "conf" / "config.yaml"), "root") | |
| if args.model: | |
| cfg.model.name = args.model | |
| elif os.environ.get("CFDBENCH_MODEL_NAME"): | |
| cfg.model.name = os.environ["CFDBENCH_MODEL_NAME"] | |
| output_dir = output_path(cfg) | |
| pred_path = output_dir / "preds.pt" | |
| score_path = output_dir / "scores.json" | |
| if not pred_path.is_file() or not score_path.is_file(): | |
| raise FileNotFoundError("Missing inference outputs. Run scripts/inference.py first.") | |
| preds = torch.load(pred_path, map_location="cpu", weights_only=True) | |
| scores = json.loads(score_path.read_text(encoding="utf-8")) | |
| print(f"Prediction tensor: shape={tuple(preds.shape)}, dtype={preds.dtype}") | |
| print(f"Prediction range: min={float(preds.min()):.4e}, max={float(preds.max()):.4e}") | |
| print(f"Scores: {scores['mean']}") | |
| if __name__ == "__main__": | |
| main() | |