| """Create realistic packed-wedge synthetic data when licensed observations are unavailable.""" |
|
|
| from __future__ import annotations |
|
|
| import argparse |
| from pathlib import Path |
|
|
| import numpy as np |
| import sys |
| ROOT=Path(__file__).resolve().parents[1];sys.path.insert(0,str(ROOT)) |
|
|
| from model.echocast_3d import load_config, make_sample |
|
|
|
|
| def main() -> None: |
| parser = argparse.ArgumentParser() |
| parser.add_argument("--config", default="conf/config.yaml") |
| parser.add_argument("--output", default="data") |
| args = parser.parse_args() |
| config = load_config(ROOT / args.config) |
| output = ROOT / args.output |
| output.mkdir(parents=True, exist_ok=True) |
| for split, count in (("train", config["data"]["train_samples"]), ("validation", config["data"]["validation_samples"])): |
| for index in range(count): |
| sample = make_sample(config, config["seed"] + index + (10000 if split == "validation" else 0)) |
| path = output / f"{split}_{index:04d}.npz" |
| np.savez(path, **sample) |
| print(f"wrote {path} ({path.stat().st_size / 1024**2:.2f} MiB)") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|