| from pathlib import Path | |
| import sys,numpy as np,torch;import matplotlib;matplotlib.use('Agg');import matplotlib.pyplot as plt | |
| R=Path(__file__).resolve().parents[1];sys.path.insert(0,str(R));from model.delta_hbv import cfg,nse,write | |
| c=cfg(R);d=np.load(R/c['paths']['predictions']);p=d['streamflow'][:,365:];t=d['target'][:,365:];scores=[float(nse(torch.tensor(p[i]),torch.tensor(t[i]))) for i in range(12)];et_rmse=float(np.sqrt(np.mean((d['et']-d['et_target'])**2)));trend_p=np.polyfit(np.arange(p.shape[1]),p.mean(0),1)[0];trend_t=np.polyfit(np.arange(t.shape[1]),t.mean(0),1)[0];write(R/c['paths']['evaluation'],{'median_nse':float(np.median(scores)),'et_rmse':et_rmse,'trend_error':float(abs(trend_p-trend_t)),'synthetic':True});plt.plot(t[0],label='target');plt.plot(p[0],label='prediction');plt.legend();q=R/c['paths']['figure'];q.parent.mkdir(parents=True,exist_ok=True);plt.savefig(q,dpi=150);print(q) | |