plt.figure() plt.hexbin(qm_wo_sw_prc[np.logical_and(ea_q > 0, qm_wo_sw_prc > 0)], ea_q[np.logical_and(ea_q > 0, qm_wo_sw_prc > 0)]) plt.ylabel('mod'), plt.xlabel('obs'), plt.title('ea_q vs qm_wo_sw_prc') plt.plot(range(300), range(300), 'b--') plt.savefig(r'D:\Snow project\Oct2018 Results\qm_wo_sw_prc vs ea_q.png') plt.figure() plt.hist( qm_wo_sw_prc[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)] / ta_pos[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)], 20) plt.xlabel('ta_q_factor (W m-2 K-1)') plt.savefig(r'D:\Snow project\Oct2018 Results\ta_q_factor_hist.png') #plt.show() print(rmsd(qm_wo_sw_prc, ta_q), rmsd(qm_wo_sw_prc, ea_q)) es = 6.1121 * np.exp(17.502 * ta / (240.97 + ta)) rh = (ea / es) * 100 plt.scatter( rh[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)] * ws[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)] / 10., qm_wo_sw_prc[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)] / ta_pos[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)], 3) plt.scatter( rh[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)], qm_wo_sw_prc[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)] / ta_pos[np.logical_and(ta_pos > 0.5, qm_wo_sw_prc > 0)]) plt.scatter(ql, qm_wo_sw_prc - ta_q) plt.scatter(ta, qm_wo_sw_prc - ta_q)
if hy == '2017-18': sim_swe = dict_in[run_id]['states_output'].swe.copy().truncate( after='2017-12-31 23:00:00') if hy == '2019-20': sim_swe = dict_in[run_id]['states_output'].swe.copy().truncate( before='2019-05-01 00:00:00', after='2019-11-12 00:00:00') # assert np.all(sim_swe.index == obs_swe.index) #TODO fix index so both timezone aware # cut to just period with observed swe sim_swe = sim_swe[obs_ind] if model == 'fsm2': sim_swe = sim_swe.values stats_store['ns'][i] = nash_sut(sim_swe, obs_swe) stats_store['bias'][i] = mean_bias(sim_swe, obs_swe) stats_store['rmsd'][i] = rmsd(sim_swe, obs_swe) stats_store['mae'][i] = mean_absolute_error(sim_swe, obs_swe) stats_store['run_id'][i] = run_id if model == 'fsm2': sim_nml = dict_in[run_id]['namelist'] for key in sim_nml['params'].keys(): param_store[key][i] = sim_nml['params'][key] # param_store['exe'][i] = dict_in[run_id]['exe'][1] # param_store['density'][i] = dict_in[run_id]['exe'][0] param_store['exchng'][i] = dict_in[run_id]['exe'][1] param_store['hydrol'][i] = dict_in[run_id]['exe'][2] elif model == 'clark' or model == 'eti': for key in dict_in[run_id]['config'].keys(): param_store[key][i] = dict_in[run_id]['config'][key]
# plt.figure() # plt.imshow(np.mean(model_fsca_rs, axis=0),origin=0) ns_array = np.zeros((ny_out, nx_out)) mbd_array = np.zeros((ny_out, nx_out)) rmsd_array = np.zeros((ny_out, nx_out)) mae_array = np.zeros((ny_out, nx_out)) for i in range(ny_out): for j in range(nx_out): obs = np.convolve(modis_fsca_rs[:, i, j], np.ones((smooth_period,)) / smooth_period, mode='same') mod = np.convolve(model_fsca_rs[:, i, j], np.ones((smooth_period,)) / smooth_period, mode='same') ns_array[i, j] = nash_sut(mod, obs) mbd_array[i, j] = mean_bias(mod, obs) rmsd_array[i, j] = rmsd(mod, obs) mae_array[i, j] = mean_absolute_error(mod, obs) modis_mean = np.mean(modis_fsca_rs, axis=0) model_mean = np.mean(model_fsca_rs, axis=0) s_ns.append(ns_array) s_bias.append(mbd_array) s_rmse.append(rmsd_array) s_mae.append(mae_array) s_obs.append(modis_mean) s_mod.append(model_mean) for i,j,name in zip([161,147,127,107,186,125],[83,102,59,88,21,34],['Pisa','Dunstan','Hector','Old Man','Earnslaw','Lochy']): plot_point(i,j,name,year_to_take)
dtstep=1800, init_swe=init_swe, init_d_snow=init_d_snow, inp_sw=inp_sw, which_melt='dsc_snow', **config) daily_swe3 = [] for k in range(47, len(st_swe3[:, 0]), 48): daily_swe3.append(st_swe3[k, 0]) mb_sim = -1 * np.diff(np.asarray(daily_swe3)) ns_array[i, j] = nash_sut(mb_sim, daily_sfc_melt) mbd_array[i, j] = mean_bias(mb_sim, daily_sfc_melt) rmsd_array[i, j] = rmsd(mb_sim, daily_sfc_melt) h_ns_array[i, j] = nash_sut(-1 * np.diff(st_swe3[:, 0]), hourly_seb_melt) h_mbd_array[i, j] = mean_bias(-1 * np.diff(st_swe3[:, 0]), hourly_seb_melt) h_rmsd_array[i, j] = rmsd(-1 * np.diff(st_swe3[:, 0]), hourly_seb_melt) np.savetxt( outfolder + '/daily_sfc_ns_2010_TF_TT_ROS{}_ta_m_tt{}.txt'.format( config['ros'], config['ta_m_tt']), ns_array) np.savetxt( outfolder + '/daily_sfc_mbd_2010_TF_TT_ROS{}_ta_m_tt{}.txt'.format( config['ros'], config['ta_m_tt']), mbd_array) np.savetxt( outfolder + '/daily_sfc_rmsd_2010_TF_TT_ROS{}_ta_m_tt{}.txt'.format(