def test_run_geo_ts_data_config_simulator(self): # set up configuration config_dir = path.join(path.dirname(__file__), "netcdf") config_file = path.join(config_dir,"neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section) # get a simulator simulator = ConfigSimulator(cfg) n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model.__class__, n_cells) simulator.run(cfg.time_axis, state_repos.get_state(0)) cids = IntVector() discharge = simulator.region_model.statistics.discharge(cids) # regression test on discharge values self.assertAlmostEqual(discharge.values[0],0.1961,3) self.assertAlmostEqual(discharge.values[3],2.7582,3) self.assertAlmostEqual(discharge.values[6400],58.9381,3) self.assertAlmostEqual(discharge.values[3578],5.5069,3) # regression test on geo fractions self.assertAlmostEqual(simulator.region_model.cells[0].geo.land_type_fractions_info().unspecified(),1.0,3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().unspecified(),0.1433,3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().forest(),0.0,3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().reservoir(),0.8566,3) self.assertAlmostEqual(simulator.region_model.cells[3383].geo.land_type_fractions_info().lake(),0.7432,3) self.assertAlmostEqual(simulator.region_model.cells[652].geo.land_type_fractions_info().glacier(),0.1351,3)
def test_run_geo_ts_data_config_simulator(self): # These config files are versioned in shyft git config_dir = path.join(path.dirname(__file__), "netcdf") config_file = path.join(config_dir, "neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section, overrides={'config': {'number_of_steps': 168}}) # These config files are versioned in shyft-data git. Read from ${SHYFTDATA}/netcdf/orchestration-testdata/ # TODO: Put all config files needed to run this test under the same versioning system (shyft git) simulator = ConfigSimulator(cfg) n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model.__class__, n_cells) simulator.run(cfg.time_axis, state_repos.get_state(0)) cids = IntVector() discharge = simulator.region_model.statistics.discharge(cids) # Regression tests on discharge values self.assertAlmostEqual(discharge.values[0], 0.1961, 3) self.assertAlmostEqual(discharge.values[3], 2.748813, 3) # # x self.assertAlmostEqual(discharge.values[6400], 58.8385, 3) # was 58.9381,3 before glacier&fractions adjustments # x self.assertAlmostEqual(discharge.values[3578],5.5069,3) # glacier_melt, not much, but enough to test # x self.assertAlmostEqual(simulator.region_model.gamma_snow_response.glacier_melt(cids).values.to_numpy().max(),0.201625547258,4) self.assertAlmostEqual(simulator.region_model.gamma_snow_response.glacier_melt(cids).values.to_numpy().max(), 0.11938204918828155, 4) # Regression tests on geo fractions self.assertAlmostEqual(simulator.region_model.cells[0].geo.land_type_fractions_info().unspecified(), 1.0, 3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().unspecified(), 0.1433, 3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().forest(), 0.0, 3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().reservoir(), 0.8566, 3)
def test_run_geo_ts_data_config_simulator(self): # These config files are versioned in shyft git config_dir = path.join(path.dirname(__file__), "netcdf") config_file = path.join(config_dir, "neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section, overrides={'config': {'number_of_steps': 168}}) # These config files are versioned in shyft-data git. Read from ${SHYFTDATA}/netcdf/orchestration-testdata/ # TODO: Put all config files needed to run this test under the same versioning system (shyft git) simulator = ConfigSimulator(cfg) n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model.__class__, n_cells) simulator.run(cfg.time_axis, state_repos.get_state(0)) cids = IntVector() discharge = simulator.region_model.statistics.discharge(cids) # Regression tests on discharge values self.assertAlmostEqual(discharge.values[0], 0.0957723, 3) self.assertAlmostEqual(discharge.values[3], 3.9098, 3) # # x self.assertAlmostEqual(discharge.values[6400], 58.8385, 3) # was 58.9381,3 before glacier&fractions adjustments # x self.assertAlmostEqual(discharge.values[3578],5.5069,3) # glacier_melt, not much, but enough to test # x self.assertAlmostEqual(simulator.region_model.gamma_snow_response.glacier_melt(cids).values.to_numpy().max(),0.201625547258,4) self.assertAlmostEqual(simulator.region_model.gamma_snow_response.glacier_melt(cids).values.to_numpy().max(), 0.12393672891230645, 4) # Regression tests on geo fractions self.assertAlmostEqual(simulator.region_model.cells[0].geo.land_type_fractions_info().unspecified(), 1.0, 3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().unspecified(), 0.1433, 3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().forest(), 0.0, 3) self.assertAlmostEqual(simulator.region_model.cells[2].geo.land_type_fractions_info().reservoir(), 0.8566, 3)
def test_run_geo_ts_data_config_simulator(self): # set up configuration config_dir = path.join(path.dirname(__file__), "netcdf") config_file = path.join(config_dir,"neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section) # get a simulator simulator = ConfigSimulator(cfg) n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model.__class__, n_cells) simulator.run(cfg.time_axis, state_repos.get_state(0))
def test_run_geo_ts_data_config_simulator(self): # These config files are versioned in shyft-data git config_dir = path.join(shyftdata_dir, "neanidelv", "yaml_config") config_file = path.join(config_dir, "neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section, overrides={'config': { 'number_of_steps': 168 }}) # These config files are versioned in shyft-data git. Read from ${SHYFTDATA}/netcdf/orchestration-testdata/ simulator = ConfigSimulator(cfg) # Regression tests on interpolation parameters self.assertAlmostEqual( simulator.region_model.interpolation_parameter.precipitation. scale_factor, 1.01, 3) #n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model) simulator.run(cfg.time_axis, state_repos.get_state(0)) cids = IntVector() discharge = simulator.region_model.statistics.discharge(cids) # Regression tests on discharge values self.assertAlmostEqual(discharge.values[0], 80.23843199, 3) self.assertAlmostEqual(discharge.values[3], 82.50344985, 3) # Regression tests on geo fractions self.assertAlmostEqual( simulator.region_model.cells[0].geo.land_type_fractions_info(). unspecified(), 1.0, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). unspecified(), 0.1433, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). forest(), 0.0, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). reservoir(), 0.8566, 3)
def test_run_geo_ts_data_config_simulator(self): # set up configuration config_dir = path.join(path.dirname(__file__), "netcdf") config_file = path.join(config_dir, "neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section) # get a simulator simulator = ConfigSimulator(cfg) n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model.__class__, n_cells) simulator.run(cfg.time_axis, state_repos.get_state(0)) cids = IntVector() discharge = simulator.region_model.statistics.discharge(cids) # regression test on discharge values self.assertAlmostEqual(discharge.values[0], 0.1961, 3) self.assertAlmostEqual(discharge.values[3], 2.7582, 3) self.assertAlmostEqual(discharge.values[6400], 58.9381, 3) self.assertAlmostEqual(discharge.values[3578], 5.5069, 3) # regression test on geo fractions self.assertAlmostEqual( simulator.region_model.cells[0].geo.land_type_fractions_info(). unspecified(), 1.0, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). unspecified(), 0.1433, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). forest(), 0.0, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). reservoir(), 0.8566, 3) self.assertAlmostEqual( simulator.region_model.cells[3383].geo.land_type_fractions_info(). lake(), 0.7432, 3) self.assertAlmostEqual( simulator.region_model.cells[652].geo.land_type_fractions_info(). glacier(), 0.1351, 3)
def test_run_geo_ts_data_config_simulator(self): # These config files are versioned in shyft git config_dir = path.join(path.dirname(__file__), "netcdf") config_file = path.join(config_dir, "neanidelva_simulation.yaml") config_section = "neanidelva" cfg = YAMLSimConfig(config_file, config_section, overrides={'config': { 'number_of_steps': 168 }}) # These config files are versioned in shyft-data git. Read from ${SHYFTDATA}/netcdf/orchestration-testdata/ # TODO: Put all config files needed to run this test under the same versioning system (shyft git) simulator = ConfigSimulator(cfg) #n_cells = simulator.region_model.size() state_repos = DefaultStateRepository(simulator.region_model) simulator.run(cfg.time_axis, state_repos.get_state(0)) cids = IntVector() discharge = simulator.region_model.statistics.discharge(cids) # Regression tests on discharge values self.assertAlmostEqual(discharge.values[0], 0.1001063, 3) self.assertAlmostEqual(discharge.values[3], 3.9141928, 3) # Regression tests on geo fractions self.assertAlmostEqual( simulator.region_model.cells[0].geo.land_type_fractions_info(). unspecified(), 1.0, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). unspecified(), 0.1433, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). forest(), 0.0, 3) self.assertAlmostEqual( simulator.region_model.cells[2].geo.land_type_fractions_info(). reservoir(), 0.8566, 3)
#import pandas as pd import numpy as np import math from matplotlib import pyplot as plt from shyft import api # importing the shyft modules needed for running a calibration from shyft.repository.default_state_repository import DefaultStateRepository from shyft.orchestration.configuration.yaml_configs import YAMLCalibConfig, YAMLSimConfig from shyft.orchestration.simulators.config_simulator import ConfigCalibrator, ConfigSimulator # conduct a configured simulation first. config_file_path = '/home/olga/workspace/shyft-data/narayani/yaml_config-rpmgsk/narayani_simulation.yaml' # config_file_path = '/home/olga/workspace/shyft-data/narayani/yaml_config-ptgsk/narayani_simulation.yaml' cfg = YAMLSimConfig(config_file_path, "narayani") simulator = ConfigSimulator(cfg) # run the model, and we'll just pull the `api.model` from the `simulator` simulator.run() state = simulator.region_model.state config_file_path = '/home/olga/workspace/shyft-data/narayani/yaml_config-rpmgsk/narayani_calibration.yaml' # here is the *.yaml file # config_file_path = '/home/olga/workspace/shyft-data/narayani/yaml_config-ptgsk/narayani_calibration.yaml' # here is the *.yaml file cfg = YAMLCalibConfig(config_file_path, "narayani") # config_file_path = '/home/olga/workspace/shyft-data/neanidelv/yaml_config/neanidelva_simulation.yaml' # here is the *.yaml file # cfg = YAMLSimConfig(config_file_path, "neanidelva") # to run a calibration using the above initiated configuration calib = ConfigCalibrator(cfg)
import time # importing the shyft modules needed for running a calibration from shyft.repository.default_state_repository import DefaultStateRepository from shyft.orchestration.configuration.yaml_configs import YAMLCalibConfig, YAMLSimConfig from shyft.orchestration.simulators.config_simulator import ConfigCalibrator, ConfigSimulator from shyft.repository.netcdf import cf_ts_repository from shyft.repository.netcdf import cf_region_model_repository from shyft.repository.netcdf import cf_geo_ts_repository start_sim = time.time() # conduct a configured simulation first. # config_file_path = '/home/olga/workspace/shyft-data/neanidelv/yaml_config/neanidelva_simulation.yaml' config_file_path = '/home/olga/workspace/shyft-data/neanidelv/yaml_config-rpmgsk/neanidelva_simulation.yaml' cfg = YAMLSimConfig(config_file_path, "neanidelva") simulator = ConfigSimulator(cfg) # run the model, and we'll just pull the `api.model` from the `simulator` simulator.run() state = simulator.region_model.state end_sim = time.time() print("Elapsed time, simulation: "+ str(end_sim-start_sim)) start_cal = time.time() # config_file_path = '/home/olga/workspace/shyft-data/neanidelv/yaml_config/neanidelva_calibration.yaml' # here is the *.yaml file config_file_path = '/home/olga/workspace/shyft-data/neanidelv/yaml_config-rpmgsk/neanidelva_calibration.yaml' # here is the *.yaml file cfg = YAMLCalibConfig(config_file_path, "neanidelva") # to run a calibration using the above initiated configuration
sys.path.insert(0,'D:/users/ysa/shyft_main/shyft') from os import path from datetime import datetime import numpy as np from shyft.orchestration.configuration.yaml_configs import YAMLSimConfig from shyft.orchestration.simulators.config_simulator import ConfigSimulator # For testing from statkraft repos (GIS service & SMG) config_dir = "D:/users/ysa/config/config_test" config_file = path.join(config_dir, "simulation.yaml") config_section = "LTM5-Tya" print('\nConfiguring simulation for region {}'.format(config_section)) cfg = YAMLSimConfig(config_file, config_section) simulator = ConfigSimulator(cfg) simulator.region_model.set_state_collection(-1, True) # enable state collection for all cells simulator.region_model.set_snow_sca_swe_collection(-1, True) # enable/disable collection of snow sca|swe for calibration purposes print('Done initializing...') simulator.run() print('Done simulating...') # ---------------------------------------------------------------------------------------------------------------------- # Getting array with values and timesteps from shyft timeseries extracted in the examples below # ---------------------------------------------------------------------------------------------------------------------- def get_v_and_t_from_ts(ts): return ts.values.to_numpy(), np.array([datetime.utcfromtimestamp(ts.time(i)) for i in range(ts.size())]) # ---------------------------------------------------------------------------------------------------------------------- # Catchment index list, source index, time index and cell index used in the data extraction examples below # ----------------------------------------------------------------------------------------------------------------------