def make_fake_target(config, time_axis, catchment_index): print "Fake target Catchment index = {}".format(catchment_index) tv=api.TargetSpecificationVector() t=api.TargetSpecificationPts() simulator = ShyftRunner(config) simulator.build_model(time_axis.start(), time_axis.delta(), time_axis.size()) simulator.run_model() ts = simulator.get_sum_catchment_result('SimDischarge',catchment_index) mapped_indx = [i for i,j in enumerate(simulator.catchment_map) if j in catchment_index] catch_indx = api.IntVector(mapped_indx) t.catchment_indexes=catch_indx t.scale_factor=1.0 t.calc_mode=api.NASH_SUTCLIFFE t.ts=ts tv.push_back(t) return tv
def _main_runner(config_file): print 'Starting runner' from shyft.orchestration.utils.ShyftConfig import ShyftConfig config = ShyftConfig(config_file) simulator = ShyftRunner(config) simulator.build_model(config.t_start, config.dt, config.n_steps) simulator.run_model() if "shapes" in simulator.cell_data_types(): extractor = {'Total discharge': lambda x: x.response.total_discharge, 'Snow storage': lambda x: x.response.gs.storage*(1.0 - (x.lake_frac + x.reservoir_frac)), 'Temperature': lambda x: x.temperature[len(x.temperature)-1], 'Precipitation': lambda x: x.precipitation[len(x.precipitation)-1]} simulator.plot_distributed_data(simulator.cell_data("shapes"), simulator.model.get_cells(), extractor) print "Exit.."
# time_axis = api.FixedIntervalTimeAxis(t_start, delta_t, n_steps) time_axis = api.TimeAxis(t_start, delta_t, n_steps) config._target = make_fake_target(config.model_config, time_axis, config.catchment_index[0]['catch_id']) calibrator = ShyftCalibrator(config) calibrator.init(time_axis) print calibrator.calibrate(tol=1.0e-5) print "Exit.." if __name__ == "__main__": import sys import os from shyft.orchestration.utils.ShyftRunner import ShyftRunner from shyft.orchestration.utils.ShyftConfig import ShyftConfig enki_root=os.path.join("D:\\","Users","sih","enki_config_for_test") config_file = os.path.join(enki_root, "runner_configurations.yaml") config= ShyftConfig(config_file,'NeaNidelva') simulator = ShyftRunner(config) simulator.build_model(config.t_start, config.dt, config.n_steps) simulator.run_model() discharge_0=simulator.get_calculated_discharge(38) if "shapes" in simulator.cell_data_types(): extractor = {'Total discharge': lambda x: x.response.total_discharge, 'Snow storage': lambda x: x.response.gs.storage*(1.0 - (x.lake_frac + x.reservoir_frac)), 'Temperature': lambda x: x.temperature[len(x.temperature)-1], 'Precipitation': lambda x: x.precipitation[len(x.precipitation)-1]} simulator.plot_distributed_data(simulator.cell_data("shapes"), simulator.model.get_cells(), extractor) print "Exit.." #default_config_file = os.path.join(os.path.dirname(__file__), "config\NeaNidelva_calibration.yaml") #filename = sys.argv[1] if len(sys.argv) == 2 else default_config_file #_main_calibration_runner(filename)