Skip to content

Commit

Permalink
fixups
Browse files Browse the repository at this point in the history
  • Loading branch information
yngve-sk committed Oct 24, 2024
1 parent 69de78c commit c53fb78
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 31 deletions.
39 changes: 19 additions & 20 deletions src/ert/run_models/everest_run_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import copy
import datetime
import functools
import json
import logging
import os
import queue
Expand Down Expand Up @@ -300,10 +301,10 @@ def __init__(
optimization_callback: OptimizerCallback,
display_all_jobs: bool = True,
):
self._add_defaults(everest_config)
everest_config = self._add_defaults(everest_config)

Path(everest_config.log_dir).mkdir(parents=True)
Path(everest_config.optimization_output_dir).mkdir(parents=True)
Path(everest_config.log_dir).mkdir(parents=True, exist_ok=True)
Path(everest_config.optimization_output_dir).mkdir(parents=True, exist_ok=True)

self.ropt_config = everest2ropt(everest_config)
self.everest_config = everest_config
Expand Down Expand Up @@ -341,7 +342,7 @@ def __init__(
self.num_retries_per_iter = 0 # OK?

@staticmethod
def _add_defaults(config: EverestConfig):
def _add_defaults(config: EverestConfig) -> EverestConfig:
"""This function exists as a temporary mechanism to default configurations that
needs to be global in the sense that they should carry over both to ropt and ERT.
When the proper mechanism for this is implemented this code
Expand Down Expand Up @@ -372,24 +373,23 @@ def create(
simulation_callback: Optional[SimulationCallback] = None,
optimization_callback: Optional[OptimizerCallback] = None,
random_seed: Optional[int] = None,
):
if simulation_callback is None:

def simulation_callback():
return None
) -> EverestRunModel:
def default_simulation_callback(
simulation_status: SimulationStatus | None, event: str
) -> str | None:
return None

if optimization_callback is None:

def optimization_callback():
return None
def default_optimization_callback() -> str | None:
return None

ert_config = everest_to_ert_config(ever_config)
return cls(
random_seed=random_seed,
config=ert_config,
everest_config=ever_config,
simulation_callback=simulation_callback,
optimization_callback=optimization_callback,
simulation_callback=simulation_callback or default_simulation_callback,
optimization_callback=optimization_callback
or default_optimization_callback,
)

def run_experiment(
Expand Down Expand Up @@ -561,10 +561,9 @@ def description(cls) -> str:
return "Run batches "

@property
def result(self):
def result(self) -> Optional[seba_sqlite.sqlite_storage.OptimalResult]:
return self._result

def __repr__(self):
return "EverestRunModel(config={})" % json.dumps(
self.everest_config, sort_keys=True, indent=2
)
def __repr__(self) -> str:
config_json = json.dumps(self.everest_config, sort_keys=True, indent=2)
return f"EverestRunModel(config={config_json})"
2 changes: 1 addition & 1 deletion tests/everest/test_everserver.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def test_everserver_status_failure(_1, copy_math_func_test_data_to_tmp):
)
@patch("everest.detached.jobs.everserver._everserver_thread")
@patch(
"everest.detached.jobs.everserver.start_optimization",
"ert.run_models.everest_run_model.run_experiment",
side_effect=partial(check_status, status=ServerStatus.running),
)
@patch("everest.detached.jobs.everserver.validate_export", return_value=([], False))
Expand Down
2 changes: 1 addition & 1 deletion tests/everest/test_objective_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ def test_mathfunc_stddev(
assert x1 == pytest.approx(0.5, abs=0.025)
assert x2 == pytest.approx(0.5, abs=0.025)

assert workflow.result.total_objective < 0.0
assert run_model.result.total_objective < 0.0
21 changes: 13 additions & 8 deletions tests/everest/test_templating.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from ruamel.yaml import YAML

import everest
from ert.run_models.everest_run_model import EverestRunModel
from everest.config import EverestConfig

TMPL_CONFIG_FILE = "config.yml"
Expand Down Expand Up @@ -125,10 +126,13 @@ def test_render_executable(copy_template_test_data_to_tmp):


@pytest.mark.integration_test
def test_install_template(copy_template_test_data_to_tmp):
def test_install_template(
copy_template_test_data_to_tmp, evaluator_server_config_generator
):
config = EverestConfig.load_file(TMPL_CONFIG_FILE)
workflow = everest.suite._EverestWorkflow(config)
workflow.start_optimization()
run_model = EverestRunModel.create(config)
evaluator_server_config = evaluator_server_config_generator(run_model)
run_model.run_experiment(evaluator_server_config)


def test_well_order_template(change_to_tmpdir):
Expand Down Expand Up @@ -164,7 +168,9 @@ def test_well_order_template(change_to_tmpdir):


@pytest.mark.integration_test
def test_user_specified_data_n_template(copy_math_func_test_data_to_tmp):
def test_user_specified_data_n_template(
copy_math_func_test_data_to_tmp, evaluator_server_config_generator
):
"""
Ensure that a user specifying a data resource and an installed_template
with "extra_data", the results of that template will be passed to the
Expand Down Expand Up @@ -212,10 +218,9 @@ def test_user_specified_data_n_template(copy_math_func_test_data_to_tmp):

config = EverestConfig.with_defaults(**updated_config_dict)

workflow = everest.suite._EverestWorkflow(config)
assert workflow is not None

workflow.start_optimization()
run_model = EverestRunModel.create(config)
evaluator_server_config = evaluator_server_config_generator(run_model)
run_model.run_experiment(evaluator_server_config)

# The data should have been loaded and passed through template to file.
expected_file = os.path.join(
Expand Down
4 changes: 3 additions & 1 deletion tests/everest/test_workflows.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ def test_state_modifier_workflow_run(
) -> None:
cwd = copy_testdata_tmpdir("open_shut_state_modifier")

run_model = EverestRunModel.create(config)
run_model = EverestRunModel.create(
EverestConfig.load_file(f"everest/model/{config}.yml")
)
evaluator_server_config = evaluator_server_config_generator(run_model)
run_model.run_experiment(evaluator_server_config)

Expand Down

0 comments on commit c53fb78

Please sign in to comment.