from pathlib import Path import sys import numpy as np import torch.nn.functional as F import torch ROOT = Path(__file__).resolve().parents[1]; sys.path.insert(0, str(ROOT)) from model.scale_adaptive_cm import load_config, structured_fields c = load_config(ROOT); h,w=c["data"]["high_grid"]; lh,lw=c["data"]["low_grid"] high=structured_fields(c["data"]["samples"],h,w,c["seed"]) low=F.avg_pool2d(torch.from_numpy(high),c["data"]["scale_factor"]).numpy() assert low.shape[-2:]==(lh,lw) path=ROOT/c["data"]["path"]; path.parent.mkdir(parents=True,exist_ok=True) np.savez_compressed(path,format_version=np.array(c["data"]["format_version"]),low=low,high=high,split=np.array(["train"]*(len(high)-1)+["test"]),unit=np.array("mm day-1")) print(path,low.shape,high.shape)