| import argparse |
| import json |
| import sys |
| from pathlib import Path |
|
|
| import numpy as np |
|
|
|
|
| PROJECT_ROOT = Path(__file__).resolve().parents[1] |
| sys.path.insert(0, str(PROJECT_ROOT)) |
|
|
| from scripts.common import PROBLEMS, ensure_onescience_path, load_config, resolve_path |
|
|
|
|
| def parse_args(): |
| parser = argparse.ArgumentParser(description="Generate GP_for_TO runtime sample tensors.") |
| parser.add_argument("--problem", choices=PROBLEMS, default=None) |
| parser.add_argument("--n-col-domain", type=int, default=None) |
| parser.add_argument("--n-train-per-bc", type=int, default=None) |
| parser.add_argument("--output-dir", default=None) |
| return parser.parse_args() |
|
|
|
|
| def main(): |
| args = parse_args() |
| cfg = load_config() |
| ensure_onescience_path(cfg.get("runtime", {}).get("onescience_src")) |
| from onescience.utils.GP_TO import get_data_fluid, set_seed |
|
|
| problem = args.problem or cfg["fake_data"]["problem"] |
| n_col_domain = args.n_col_domain or cfg["fake_data"]["n_col_domain"] |
| n_train_per_bc = args.n_train_per_bc or cfg["fake_data"]["n_train_per_bc"] |
| output_dir = resolve_path(args.output_dir or cfg["fake_data"]["output_dir"]) |
| output_dir.mkdir(parents=True, exist_ok=True) |
|
|
| set_seed(int(cfg["seed"])) |
| x_col, x_train, sol_train = get_data_fluid( |
| problem=problem, |
| N_col_domain=n_col_domain, |
| N_train=n_train_per_bc, |
| ) |
|
|
| npz_path = output_dir / f"{problem}_samples.npz" |
| arrays = {"x_col": x_col.cpu().numpy()} |
| for i, name in enumerate(cfg["output_names"]): |
| arrays[f"x_train_{name}"] = x_train[i].cpu().numpy() |
| arrays[f"target_{name}"] = sol_train[i].cpu().numpy() |
| np.savez(npz_path, **arrays) |
|
|
| metadata = { |
| "problem": problem, |
| "n_col_domain_requested": int(n_col_domain), |
| "n_train_per_bc": int(n_train_per_bc), |
| "x_col_shape": list(x_col.shape), |
| "x_train_shapes": [list(x.shape) for x in x_train], |
| "target_shapes": [list(y.shape) for y in sol_train], |
| } |
| metadata_path = output_dir / f"{problem}_metadata.json" |
| metadata_path.write_text(json.dumps(metadata, indent=2), encoding="utf-8") |
| print(f"Fake GP_for_TO tensors written to {npz_path}") |
| print(json.dumps(metadata, indent=2)) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|