from hydroDL.master import basins from hydroDL.data import usgs, gageII, gridMET, ntn import numpy as np from hydroDL.master import slurm import importlib import os import json dirSel = os.path.join(kPath.dirData, 'USGS', 'inventory', 'siteSel') with open(os.path.join(dirSel, 'dictRB_Y30N5.json')) as f: dictSite = json.load(f) siteNoLst = dictSite['comb'] # comb model dataName = 'rbWN5' wqData = waterQuality.DataModelWQ(dataName) codeLst = wqData.varC # labelLst = ['QFP_C', 'QTFP_C', 'QT_C'] for label in labelLst: trainSet = 'comb-B10' outName = '{}-{}-{}-{}'.format(dataName, 'comb', label, trainSet) basins.testModelSeq(outName, siteNoLst, wqData=wqData, retest=True) # # solo models # label = 'FP_QC' # codeLst = usgs.newC # for code in codeLst: # trainSet = '{}-B10'.format(code) # outName = '{}-{}-{}-{}'.format(dataName, code, label, trainSet) # basins.testModelSeq(outName, siteNoLst, wqData=wqData)
import numpy as np import pandas as pd import matplotlib.pyplot as plt # test outName = 'Silica64-00955-Y8090-opt1' wqData = waterQuality.DataModelWQ('Silica64') code = '00955' trainset = 'Y8090' testset = 'Y0010' master = basins.loadMaster(outName) # seq test siteNoLst = wqData.info['siteNo'].unique().tolist() basins.testModelSeq(outName, siteNoLst, wqData=wqData) siteNo = siteNoLst[0] dfPred, dfObs = basins.loadSeq(outName, siteNo) fig, axes = plt.subplots(2, 1) axes[0].plot(np.log(dfPred['00060']), dfPred['00955'], '*') axes[1].plot(np.log(dfObs['00060']), dfObs['00955'], '*') fig.show() ceqMat1 = np.full([len(siteNoLst), 2], np.nan) dwMat1 = np.full([len(siteNoLst), 2], np.nan) ceqMat2 = np.full([len(siteNoLst), 2], np.nan) dwMat2 = np.full([len(siteNoLst), 2], np.nan) sd = np.datetime64('1980-01-01') tBar = np.datetime64('2000-01-01')
if 'training' in doLst: dataName = 'HBN5' codeLst = ['00618', '00955'] trainset = '00618-00955-all-Y8090' testset = '00618-00955-all-Y0010' out = 'HBN5-00618-00955-all-Y8090' wqData = waterQuality.DataModelWQ(dataName) masterName = basins.wrapMaster(dataName='HBN5', trainName=trainset, batchSize=[None, 100], outName=out, varYC=codeLst, nEpoch=100) basins.trainModelTS(masterName) # sequence testing dataName = 'HBN' outName = 'HBN-00618-00955-all-Y8090-opt2' trainset = '00618-00955-all-Y8090' testset = '00618-00955-all-Y0010' wqData = waterQuality.DataModelWQ(dataName) # point testing yP, ycP = basins.testModel(outName, testset, wqData=wqData) # sequence testing infoTrain = wqData.info.iloc[wqData.subset[trainset]] siteNoLst = infoTrain['siteNo'].unique().tolist() dictPred = basins.testModelSeq(outName, siteNoLst=siteNoLst, wqData=wqData)