Beispiel #1
0
def OF(Qobs, Qout, q_uz_routed, q_lz_trans, coordinates):
    all_errors = []
    # error for all internal stations
    for i in range(len(coordinates) - 1):
        Quz = np.reshape(
            q_uz_routed[int(coordinates.loc[coordinates.index[i], "cell_row"]),
                        int(coordinates.loc[coordinates.index[i],
                                            "cell_col"]), :-1], len(Qobs))
        Qlz = np.reshape(
            q_lz_trans[int(coordinates.loc[coordinates.index[i], "cell_row"]),
                       int(coordinates.loc[coordinates.index[i],
                                           "cell_col"]), :-1], len(Qobs))
        Q = Quz + Qlz
        all_errors.append((PC.RMSE(Qobs[:, i], Q)) *
                          coordinates.loc[coordinates.index[i], 'weight'])
    #outlet observed discharge is at the end of the array
    all_errors.append((PC.RMSE(Qobs[:, -1], Qout)) *
                      coordinates.loc[coordinates.index[-1], 'weight'])
    print(all_errors)
    error = sum(all_errors)
    return error
Beispiel #2
0
Qobs = Jiboa.QGauges[Jiboa.GaugesTable.loc[0, 'id']]

gaugeid = Jiboa.GaugesTable.loc[0, 'id']

WS = {}
WS['type'] = 1
WS['N'] = 3
ModelMetrics = dict()
ModelMetrics['Calib_RMSEHF'] = round(
    Pf.RMSEHF(Qobs, Jiboa.Qsim[gaugeid], WS['type'], WS['N'], 0.75), 3)
ModelMetrics['Calib_RMSELF'] = round(
    Pf.RMSELF(Qobs, Jiboa.Qsim[gaugeid], WS['type'], WS['N'], 0.75), 3)
ModelMetrics['Calib_NSEHf'] = round(Pf.NSE(Qobs, Jiboa.Qsim[gaugeid]), 3)
ModelMetrics['Calib_NSELf'] = round(
    Pf.NSE(np.log(Qobs), np.log(Jiboa.Qsim[gaugeid])), 3)
ModelMetrics['Calib_RMSE'] = round(Pf.RMSE(Qobs, Jiboa.Qsim[gaugeid]), 3)
ModelMetrics['Calib_KGE'] = round(Pf.KGE(Qobs, Jiboa.Qsim[gaugeid]), 3)
ModelMetrics['Calib_WB'] = round(Pf.WB(Qobs, Jiboa.Qsim[gaugeid]), 3)

print(ModelMetrics)
#%% plot
gaugei = 0
plotstart = "2012-06-16"
plotend = "2013-12-23"

Jiboa.PlotHydrograph(plotstart, plotend, gaugei)
#%%
"""
=============================================================================
AnimateArray(Arr, Time, NoElem, TicksSpacing = 2, Figsize=(8,8), PlotNumbers=True,
       NumSize= 8, Title = 'Total Discharge',titlesize = 15, Backgroundcolorthreshold=None,
Beispiel #3
0
#%% run the model
Sim =pd.DataFrame(index = lakeCalib.index)
st, Sim['Q'], q_uz_routed, q_lz_trans = RunHAPIwithLake(HBV, Paths, ParPath, p2, init_st,
                                                     snow, lakeCalibArray, StageDischargeCurve,
                                                     LakeParameters, lakecell,Lake_init_st)

#%% calculate some metrics
WS = {}
WS['type'] = 1
WS['N'] = 3
ModelMetrics=dict()
ModelMetrics['Calib_RMSEHF'] = round(Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75),3)
ModelMetrics['Calib_RMSELF'] = round(Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75),3)
ModelMetrics['Calib_NSEHf'] = round(Pf.NSE(lakeCalib['Q'],Sim['Q']),3)
ModelMetrics['Calib_NSELf'] = round(Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q'])),3)
ModelMetrics['Calib_RMSE'] = round(Pf.RMSE(lakeCalib['Q'],Sim['Q']),3)
ModelMetrics['Calib_KGE'] = round(Pf.KGE(lakeCalib['Q'],Sim['Q']),3)
ModelMetrics['Calib_WB'] = round(Pf.WB(lakeCalib['Q'],Sim['Q']),3)

print(ModelMetrics)
#%% plotting
plt.figure(50,figsize=(15,8))
Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label="Observed data", zorder = 10)
ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Simulated Calibration data')
ax1.annotate("Model performance" ,xy=('2012-12-01 00:00:00',20),fontsize=15)
ax1.annotate("RMSE = " + str(round(ModelMetrics['Calib_RMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)
ax1.annotate("NSE = " + str(round(ModelMetrics['Calib_NSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)
plt.legend()
#ax1.annotate("RMSELF = " + str(round(committee['c_rmself'],3)),xy=('2013-01-01 00:00:00',max(calib['Q'])-3),fontsize=15)

#ax2=single_valid['Q'].plot(color='orange',linewidth=2.8,label='Simulated Validation')
Beispiel #4
0
st, Sim['Q'], q_uz_routed, q_lz_trans = RunHAPIwithLake(
    HBV, Paths, ParPath, p2, init_st, snow, lakeCalibArray,
    StageDischargeCurve, LakeParameters, lakecell, Lake_init_st)

#%% calculate some metrics
WS = {}
WS['type'] = 1
WS['N'] = 3
ModelMetrics = dict()
ModelMetrics['CalibErrorHf'] = Pf.RMSEHF(lakeCalib['Q'], Sim['Q'], WS['type'],
                                         WS['N'], 0.75)
ModelMetrics['CalibErrorLf'] = Pf.RMSELF(lakeCalib['Q'], Sim['Q'], WS['type'],
                                         WS['N'], 0.75)
ModelMetrics['CalibNSEHf'] = Pf.NSE(lakeCalib['Q'], Sim['Q'])
ModelMetrics['CalibNSELf'] = Pf.NSE(np.log(lakeCalib['Q']), np.log(Sim['Q']))
ModelMetrics['CalibRMSE'] = Pf.RMSE(lakeCalib['Q'], Sim['Q'])
ModelMetrics['CalibKGE'] = Pf.KGE(lakeCalib['Q'], Sim['Q'])
ModelMetrics['CalibWB'] = Pf.WB(lakeCalib['Q'], Sim['Q'])
#%% plotting
plt.figure(50, figsize=(15, 8))
Sim.Q.plot(color=[(0, 0.3, 0.7)],
           linewidth=2.5,
           label="Observed data",
           zorder=10)
ax1 = lakeCalib['Q'].plot(color='#DC143C',
                          linewidth=2.8,
                          label='Simulated Calibration data')
ax1.annotate("Model performance", xy=('2012-12-01 00:00:00', 20), fontsize=15)
ax1.annotate("RMSE = " + str(round(ModelMetrics['CalibRMSE'], 3)),
             xy=('2012-12-01 00:00:00', 20 - 1.5),
             fontsize=15)