示例#1
0
    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)
示例#2
0
    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))
示例#3
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)
示例#4
0
    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)