File size: 1,184 Bytes
835fa51
 
 
 
 
1
2
3
4
5
6
from pathlib import Path
import sys,numpy as np
ROOT=Path(__file__).resolve().parents[1];sys.path.insert(0,str(ROOT))
from model.clm5_emulator import *
c=load_config(ROOT);rng=np.random.default_rng(c["seed"]);n=c["data"]["samples"];p=rng.random((n,6)).astype("float32");lat=np.linspace(-90,90,46);lon=np.arange(72)*5;la,lo=np.meshgrid(lat,lon,indexing="ij");eof=np.stack([[np.cos(np.deg2rad(la)),np.sin(np.deg2rad(lo)),np.sin(np.deg2rad(la*2+lo))],[np.cos(np.deg2rad(la))*np.cos(np.deg2rad(lo)),np.sin(np.deg2rad(la)),np.cos(np.deg2rad(lo*2))]]).astype("float32");eof=eof.reshape(2,3,-1);pc=np.stack((np.stack((2*p[:,0]-p[:,3],p[:,1]*p[:,2],np.sin(np.pi*p[:,4])),1),np.stack((p[:,2]+p[:,5],p[:,0]*p[:,4],np.cos(np.pi*p[:,3])),1)),1).astype("float32");mean=np.stack((2+np.cos(np.deg2rad(la)),50+5*np.sin(np.deg2rad(la)))).reshape(2,-1).astype("float32");fields=reconstruct(pc,eof,mean).reshape(n,2,46,72);split=np.array([0]*24+[1]*8+[2]*8);path=ROOT/c["data"]["path"];path.parent.mkdir(parents=True,exist_ok=True);np.savez_compressed(path,parameters=p,pc=pc,eof=eof,mean=mean,fields=fields,split=split,latitude=lat,longitude=lon,format_version=c["data"]["format_version"]);print(path)