ert 16.0.9__py3-none-any.whl → 19.0.0rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- _ert/events.py +19 -2
- _ert/forward_model_runner/client.py +6 -2
- _ert/forward_model_runner/fm_dispatch.py +9 -6
- _ert/forward_model_runner/reporting/event.py +1 -0
- _ert/forward_model_runner/runner.py +1 -2
- _ert/utils.py +12 -0
- ert/__main__.py +58 -38
- ert/analysis/_enif_update.py +8 -4
- ert/analysis/_es_update.py +19 -6
- ert/analysis/_update_commons.py +16 -6
- ert/base_model_context.py +1 -1
- ert/cli/main.py +17 -12
- ert/cli/monitor.py +7 -0
- ert/config/__init__.py +17 -6
- ert/config/_create_observation_dataframes.py +118 -21
- ert/config/_get_num_cpu.py +1 -1
- ert/config/_observations.py +91 -2
- ert/config/_read_summary.py +74 -328
- ert/config/design_matrix.py +62 -23
- ert/config/distribution.py +1 -1
- ert/config/ensemble_config.py +9 -17
- ert/config/ert_config.py +155 -58
- ert/config/everest_control.py +234 -0
- ert/config/{everest_constraints_config.py → everest_response.py} +27 -15
- ert/config/field.py +99 -90
- ert/config/forward_model_step.py +122 -17
- ert/config/gen_data_config.py +5 -10
- ert/config/gen_kw_config.py +11 -41
- ert/config/known_response_types.py +14 -0
- ert/config/parameter_config.py +1 -33
- ert/config/parsing/_option_dict.py +10 -2
- ert/config/parsing/config_errors.py +1 -1
- ert/config/parsing/config_keywords.py +2 -1
- ert/config/parsing/config_schema.py +23 -11
- ert/config/parsing/config_schema_deprecations.py +3 -3
- ert/config/parsing/config_schema_item.py +26 -11
- ert/config/parsing/context_values.py +3 -3
- ert/config/parsing/file_context_token.py +1 -1
- ert/config/parsing/observations_parser.py +6 -2
- ert/config/parsing/queue_system.py +9 -0
- ert/config/parsing/schema_item_type.py +1 -0
- ert/config/queue_config.py +42 -50
- ert/config/response_config.py +0 -8
- ert/config/rft_config.py +275 -0
- ert/config/summary_config.py +3 -8
- ert/config/surface_config.py +73 -26
- ert/config/workflow_fixtures.py +2 -1
- ert/config/workflow_job.py +135 -54
- ert/dark_storage/client/__init__.py +2 -2
- ert/dark_storage/client/_session.py +4 -4
- ert/dark_storage/client/client.py +2 -2
- ert/dark_storage/common.py +12 -3
- ert/dark_storage/compute/misfits.py +11 -7
- ert/dark_storage/endpoints/compute/misfits.py +6 -4
- ert/dark_storage/endpoints/ensembles.py +4 -0
- ert/dark_storage/endpoints/experiment_server.py +30 -24
- ert/dark_storage/endpoints/experiments.py +2 -2
- ert/dark_storage/endpoints/observations.py +8 -6
- ert/dark_storage/endpoints/parameters.py +4 -12
- ert/dark_storage/endpoints/responses.py +24 -5
- ert/dark_storage/json_schema/ensemble.py +3 -0
- ert/dark_storage/json_schema/experiment.py +1 -1
- ert/data/_measured_data.py +6 -5
- ert/ensemble_evaluator/__init__.py +8 -1
- ert/ensemble_evaluator/config.py +2 -1
- ert/ensemble_evaluator/evaluator.py +81 -29
- ert/ensemble_evaluator/event.py +6 -0
- ert/ensemble_evaluator/snapshot.py +3 -1
- ert/ensemble_evaluator/state.py +1 -0
- ert/field_utils/__init__.py +8 -0
- ert/field_utils/field_utils.py +228 -15
- ert/field_utils/grdecl_io.py +1 -1
- ert/field_utils/roff_io.py +1 -1
- ert/gui/__init__.py +5 -2
- ert/gui/ertnotifier.py +1 -1
- ert/gui/ertwidgets/__init__.py +23 -16
- ert/gui/ertwidgets/analysismoduleedit.py +2 -2
- ert/gui/ertwidgets/checklist.py +1 -1
- ert/gui/ertwidgets/closabledialog.py +2 -0
- ert/gui/ertwidgets/copyablelabel.py +2 -0
- ert/gui/ertwidgets/create_experiment_dialog.py +3 -1
- ert/gui/ertwidgets/ensembleselector.py +2 -2
- ert/gui/ertwidgets/listeditbox.py +2 -0
- ert/gui/ertwidgets/models/__init__.py +2 -0
- ert/gui/ertwidgets/models/activerealizationsmodel.py +5 -1
- ert/gui/ertwidgets/models/path_model.py +1 -1
- ert/gui/ertwidgets/models/targetensemblemodel.py +5 -1
- ert/gui/ertwidgets/models/text_model.py +4 -1
- ert/gui/ertwidgets/pathchooser.py +0 -3
- ert/gui/ertwidgets/searchbox.py +17 -4
- ert/gui/ertwidgets/stringbox.py +2 -0
- ert/gui/{suggestor → ertwidgets/suggestor}/_suggestor_message.py +13 -4
- ert/gui/{suggestor → ertwidgets/suggestor}/suggestor.py +63 -30
- ert/gui/main.py +41 -13
- ert/gui/main_window.py +3 -7
- ert/gui/model/fm_step_list.py +3 -0
- ert/gui/model/real_list.py +1 -0
- ert/gui/model/snapshot.py +1 -0
- ert/gui/simulation/combobox_with_description.py +3 -0
- ert/gui/simulation/ensemble_experiment_panel.py +8 -2
- ert/gui/simulation/ensemble_information_filter_panel.py +7 -2
- ert/gui/simulation/ensemble_smoother_panel.py +8 -2
- ert/gui/simulation/evaluate_ensemble_panel.py +17 -7
- ert/gui/simulation/experiment_panel.py +18 -6
- ert/gui/simulation/manual_update_panel.py +35 -10
- ert/gui/simulation/multiple_data_assimilation_panel.py +13 -9
- ert/gui/simulation/run_dialog.py +47 -20
- ert/gui/simulation/single_test_run_panel.py +6 -3
- ert/gui/simulation/view/progress_widget.py +2 -0
- ert/gui/simulation/view/realization.py +5 -1
- ert/gui/simulation/view/update.py +2 -0
- ert/gui/summarypanel.py +20 -1
- ert/gui/tools/event_viewer/panel.py +3 -4
- ert/gui/tools/event_viewer/tool.py +2 -0
- ert/gui/tools/load_results/load_results_panel.py +1 -1
- ert/gui/tools/load_results/load_results_tool.py +2 -0
- ert/gui/tools/manage_experiments/export_dialog.py +136 -0
- ert/gui/tools/manage_experiments/manage_experiments_panel.py +2 -0
- ert/gui/tools/manage_experiments/storage_info_widget.py +121 -16
- ert/gui/tools/manage_experiments/storage_widget.py +4 -3
- ert/gui/tools/plot/customize/color_chooser.py +5 -2
- ert/gui/tools/plot/customize/customize_plot_dialog.py +2 -0
- ert/gui/tools/plot/customize/default_customization_view.py +4 -0
- ert/gui/tools/plot/customize/limits_customization_view.py +3 -0
- ert/gui/tools/plot/customize/statistics_customization_view.py +3 -0
- ert/gui/tools/plot/customize/style_chooser.py +2 -0
- ert/gui/tools/plot/customize/style_customization_view.py +3 -0
- ert/gui/tools/plot/data_type_keys_widget.py +2 -0
- ert/gui/tools/plot/data_type_proxy_model.py +3 -0
- ert/gui/tools/plot/plot_api.py +50 -28
- ert/gui/tools/plot/plot_ensemble_selection_widget.py +17 -10
- ert/gui/tools/plot/plot_widget.py +15 -2
- ert/gui/tools/plot/plot_window.py +41 -19
- ert/gui/tools/plot/plottery/plot_config.py +2 -0
- ert/gui/tools/plot/plottery/plot_context.py +14 -0
- ert/gui/tools/plot/plottery/plots/__init__.py +2 -0
- ert/gui/tools/plot/plottery/plots/cesp.py +3 -1
- ert/gui/tools/plot/plottery/plots/distribution.py +6 -1
- ert/gui/tools/plot/plottery/plots/ensemble.py +13 -5
- ert/gui/tools/plot/plottery/plots/gaussian_kde.py +12 -2
- ert/gui/tools/plot/plottery/plots/histogram.py +3 -1
- ert/gui/tools/plot/plottery/plots/misfits.py +436 -0
- ert/gui/tools/plot/plottery/plots/observations.py +18 -4
- ert/gui/tools/plot/plottery/plots/statistics.py +62 -20
- ert/gui/tools/plot/plottery/plots/std_dev.py +3 -1
- ert/gui/tools/plot/widgets/clearable_line_edit.py +9 -0
- ert/gui/tools/plot/widgets/filter_popup.py +2 -0
- ert/gui/tools/plot/widgets/filterable_kw_list_model.py +3 -0
- ert/gui/tools/plugins/plugin.py +1 -1
- ert/gui/tools/plugins/plugins_tool.py +2 -0
- ert/gui/tools/plugins/process_job_dialog.py +3 -0
- ert/gui/tools/workflows/workflow_dialog.py +2 -0
- ert/gui/tools/workflows/workflows_tool.py +2 -0
- ert/libres_facade.py +5 -7
- ert/logging/__init__.py +4 -1
- ert/mode_definitions.py +2 -0
- ert/plugins/__init__.py +4 -6
- ert/plugins/hook_implementations/workflows/csv_export.py +2 -3
- ert/plugins/hook_implementations/workflows/gen_data_rft_export.py +10 -2
- ert/plugins/hook_specifications/__init__.py +0 -10
- ert/plugins/hook_specifications/jobs.py +0 -9
- ert/plugins/plugin_manager.py +53 -124
- ert/resources/forward_models/run_reservoirsimulator.py +8 -4
- ert/resources/forward_models/template_render.py +10 -10
- ert/resources/shell_scripts/delete_directory.py +2 -2
- ert/run_models/__init__.py +24 -6
- ert/run_models/_create_run_path.py +133 -38
- ert/run_models/ensemble_experiment.py +10 -4
- ert/run_models/ensemble_information_filter.py +8 -1
- ert/run_models/ensemble_smoother.py +9 -3
- ert/run_models/evaluate_ensemble.py +8 -6
- ert/run_models/event.py +7 -3
- ert/run_models/everest_run_model.py +337 -113
- ert/run_models/initial_ensemble_run_model.py +25 -24
- ert/run_models/manual_update.py +6 -3
- ert/run_models/manual_update_enif.py +37 -0
- ert/run_models/model_factory.py +78 -18
- ert/run_models/multiple_data_assimilation.py +22 -11
- ert/run_models/run_model.py +72 -73
- ert/run_models/single_test_run.py +7 -4
- ert/run_models/update_run_model.py +4 -2
- ert/runpaths.py +5 -6
- ert/sample_prior.py +9 -4
- ert/scheduler/__init__.py +10 -5
- ert/scheduler/driver.py +40 -0
- ert/scheduler/event.py +3 -1
- ert/scheduler/job.py +23 -13
- ert/scheduler/lsf_driver.py +15 -5
- ert/scheduler/openpbs_driver.py +10 -4
- ert/scheduler/scheduler.py +5 -0
- ert/scheduler/slurm_driver.py +20 -5
- ert/services/__init__.py +2 -2
- ert/services/_base_service.py +37 -20
- ert/services/_storage_main.py +20 -18
- ert/services/ert_server.py +317 -0
- ert/shared/_doc_utils/__init__.py +4 -2
- ert/shared/_doc_utils/ert_jobs.py +1 -4
- ert/shared/net_utils.py +43 -18
- ert/shared/storage/connection.py +3 -3
- ert/shared/version.py +3 -3
- ert/storage/__init__.py +14 -1
- ert/storage/local_ensemble.py +44 -13
- ert/storage/local_experiment.py +54 -34
- ert/storage/local_storage.py +90 -58
- ert/storage/migration/to10.py +3 -2
- ert/storage/migration/to11.py +9 -10
- ert/storage/migration/to12.py +19 -20
- ert/storage/migration/to13.py +28 -27
- ert/storage/migration/to14.py +3 -3
- ert/storage/migration/to15.py +25 -0
- ert/storage/migration/to16.py +38 -0
- ert/storage/migration/to17.py +42 -0
- ert/storage/migration/to18.py +11 -0
- ert/storage/migration/to19.py +34 -0
- ert/storage/migration/to20.py +23 -0
- ert/storage/migration/to21.py +25 -0
- ert/storage/migration/to6.py +3 -2
- ert/storage/migration/to7.py +12 -13
- ert/storage/migration/to8.py +9 -11
- ert/storage/migration/to9.py +5 -4
- ert/storage/realization_storage_state.py +7 -7
- ert/substitutions.py +12 -28
- ert/validation/active_range.py +7 -7
- ert/validation/ensemble_realizations_argument.py +4 -2
- ert/validation/rangestring.py +16 -16
- ert/workflow_runner.py +6 -3
- {ert-16.0.9.dist-info → ert-19.0.0rc2.dist-info}/METADATA +21 -15
- ert-19.0.0rc2.dist-info/RECORD +524 -0
- {ert-16.0.9.dist-info → ert-19.0.0rc2.dist-info}/WHEEL +1 -1
- everest/api/everest_data_api.py +14 -1
- everest/assets/everest_logo.svg +406 -0
- everest/bin/config_branch_script.py +30 -14
- everest/bin/everconfigdump_script.py +2 -10
- everest/bin/everest_script.py +53 -33
- everest/bin/everlint_script.py +3 -5
- everest/bin/kill_script.py +7 -5
- everest/bin/main.py +11 -24
- everest/bin/monitor_script.py +64 -35
- everest/bin/utils.py +58 -43
- everest/bin/visualization_script.py +23 -13
- everest/config/__init__.py +4 -1
- everest/config/control_config.py +81 -6
- everest/config/control_variable_config.py +4 -3
- everest/config/everest_config.py +102 -79
- everest/config/forward_model_config.py +5 -3
- everest/config/install_data_config.py +7 -5
- everest/config/install_job_config.py +45 -3
- everest/config/install_template_config.py +3 -3
- everest/config/optimization_config.py +19 -6
- everest/config/output_constraint_config.py +8 -2
- everest/config/server_config.py +6 -55
- everest/config/simulator_config.py +62 -17
- everest/config/utils.py +25 -105
- everest/config/validation_utils.py +34 -15
- everest/config_file_loader.py +30 -21
- everest/detached/__init__.py +0 -6
- everest/detached/client.py +7 -52
- everest/detached/everserver.py +19 -45
- everest/everest_storage.py +24 -40
- everest/gui/everest_client.py +2 -3
- everest/gui/main_window.py +2 -2
- everest/optimizer/everest2ropt.py +68 -42
- everest/optimizer/opt_model_transforms.py +15 -20
- everest/optimizer/utils.py +0 -29
- everest/plugins/hook_specs.py +0 -24
- everest/strings.py +1 -6
- everest/util/__init__.py +3 -1
- ert/config/everest_objective_config.py +0 -95
- ert/config/ext_param_config.py +0 -107
- ert/gui/tools/export/__init__.py +0 -3
- ert/gui/tools/export/export_panel.py +0 -83
- ert/gui/tools/export/export_tool.py +0 -67
- ert/gui/tools/export/exporter.py +0 -36
- ert/plugins/hook_specifications/ecl_config.py +0 -29
- ert/services/storage_service.py +0 -127
- ert/summary_key_type.py +0 -234
- ert-16.0.9.dist-info/RECORD +0 -521
- everest/bin/everexport_script.py +0 -53
- everest/config/sampler_config.py +0 -103
- everest/simulator/__init__.py +0 -88
- everest/simulator/everest_to_ert.py +0 -252
- /ert/gui/{suggestor → ertwidgets/suggestor}/__init__.py +0 -0
- /ert/gui/{suggestor → ertwidgets/suggestor}/_colors.py +0 -0
- {ert-16.0.9.dist-info → ert-19.0.0rc2.dist-info}/entry_points.txt +0 -0
- {ert-16.0.9.dist-info → ert-19.0.0rc2.dist-info}/licenses/COPYING +0 -0
- {ert-16.0.9.dist-info → ert-19.0.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<svg
|
|
3
|
+
viewBox="0 0 821.56887 232.52212"
|
|
4
|
+
version="1.1"
|
|
5
|
+
id="svg21"
|
|
6
|
+
sodipodi:docname="everest_logo.svg"
|
|
7
|
+
width="821.56885"
|
|
8
|
+
height="232.52213"
|
|
9
|
+
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
|
|
10
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
xmlns:svg="http://www.w3.org/2000/svg">
|
|
14
|
+
<sodipodi:namedview
|
|
15
|
+
id="namedview21"
|
|
16
|
+
pagecolor="#ffffff"
|
|
17
|
+
bordercolor="#000000"
|
|
18
|
+
borderopacity="0.25"
|
|
19
|
+
inkscape:showpageshadow="2"
|
|
20
|
+
inkscape:pageopacity="0.0"
|
|
21
|
+
inkscape:pagecheckerboard="0"
|
|
22
|
+
inkscape:deskcolor="#d1d1d1"
|
|
23
|
+
inkscape:zoom="3.1028704"
|
|
24
|
+
inkscape:cx="300.68932"
|
|
25
|
+
inkscape:cy="123.91752"
|
|
26
|
+
inkscape:window-width="5160"
|
|
27
|
+
inkscape:window-height="2126"
|
|
28
|
+
inkscape:window-x="2869"
|
|
29
|
+
inkscape:window-y="-11"
|
|
30
|
+
inkscape:window-maximized="1"
|
|
31
|
+
inkscape:current-layer="svg21" />
|
|
32
|
+
<defs
|
|
33
|
+
id="defs14">
|
|
34
|
+
<style
|
|
35
|
+
id="style1">.j{fill:#fff;}.k{fill:url(#f);}.l{clip-path:url(#e);}.m{clip-path:url(#d);}.n{fill:url(#h);}.o{fill:none;}.p{clip-path:url(#i);}.q{fill:#002484;}.r{clip-path:url(#g);}</style>
|
|
36
|
+
<clipPath
|
|
37
|
+
id="d">
|
|
38
|
+
<rect
|
|
39
|
+
class="o"
|
|
40
|
+
width="1139.59"
|
|
41
|
+
height="233.91"
|
|
42
|
+
id="rect1"
|
|
43
|
+
x="0"
|
|
44
|
+
y="0" />
|
|
45
|
+
</clipPath>
|
|
46
|
+
<clipPath
|
|
47
|
+
id="e">
|
|
48
|
+
<path
|
|
49
|
+
class="o"
|
|
50
|
+
d="M 0,116.95 C 0,181.54 52.36,233.9 116.95,233.9 181.54,233.9 233.9,181.54 233.9,116.95 233.9,52.36 181.54,0 116.95,0 52.36,0 0,52.36 0,116.95"
|
|
51
|
+
id="path1" />
|
|
52
|
+
</clipPath>
|
|
53
|
+
<linearGradient
|
|
54
|
+
id="f"
|
|
55
|
+
x1="-386.98001"
|
|
56
|
+
y1="636.65997"
|
|
57
|
+
x2="-385.98001"
|
|
58
|
+
y2="636.65997"
|
|
59
|
+
gradientTransform="matrix(233.94,0,0,-233.94,90532.27,149060.04)"
|
|
60
|
+
gradientUnits="userSpaceOnUse">
|
|
61
|
+
<stop
|
|
62
|
+
offset="0"
|
|
63
|
+
stop-color="#ff1543"
|
|
64
|
+
id="stop1" />
|
|
65
|
+
<stop
|
|
66
|
+
offset=".23"
|
|
67
|
+
stop-color="#ff1845"
|
|
68
|
+
id="stop2" />
|
|
69
|
+
<stop
|
|
70
|
+
offset=".4"
|
|
71
|
+
stop-color="#ff214d"
|
|
72
|
+
id="stop3" />
|
|
73
|
+
<stop
|
|
74
|
+
offset=".56"
|
|
75
|
+
stop-color="#ff3159"
|
|
76
|
+
id="stop4" />
|
|
77
|
+
<stop
|
|
78
|
+
offset=".7"
|
|
79
|
+
stop-color="#ff486c"
|
|
80
|
+
id="stop5" />
|
|
81
|
+
<stop
|
|
82
|
+
offset=".83"
|
|
83
|
+
stop-color="#ff6583"
|
|
84
|
+
id="stop6" />
|
|
85
|
+
<stop
|
|
86
|
+
offset=".96"
|
|
87
|
+
stop-color="#ff89a0"
|
|
88
|
+
id="stop7" />
|
|
89
|
+
<stop
|
|
90
|
+
offset="1"
|
|
91
|
+
stop-color="#ff96aa"
|
|
92
|
+
id="stop8" />
|
|
93
|
+
</linearGradient>
|
|
94
|
+
<clipPath
|
|
95
|
+
id="g">
|
|
96
|
+
<path
|
|
97
|
+
class="o"
|
|
98
|
+
d="M 0.46,106.52 C 0.16,109.96 0,113.44 0,116.95 0,181.54 52.36,233.9 116.95,233.9 c 64.59,0 112.56,-48.08 116.68,-108.93 v -0.19 l -76.2,-56.36 v 41.29 L 76.77,49.88 Z"
|
|
99
|
+
id="path8" />
|
|
100
|
+
</clipPath>
|
|
101
|
+
<linearGradient
|
|
102
|
+
id="h"
|
|
103
|
+
x1="-386.98001"
|
|
104
|
+
y1="636.71997"
|
|
105
|
+
x2="-385.98001"
|
|
106
|
+
y2="636.71997"
|
|
107
|
+
gradientTransform="matrix(222.02,0,0,-222.02,85898.26,141510.45)"
|
|
108
|
+
gradientUnits="userSpaceOnUse">
|
|
109
|
+
<stop
|
|
110
|
+
offset="0"
|
|
111
|
+
stop-color="#123eb7"
|
|
112
|
+
id="stop9" />
|
|
113
|
+
<stop
|
|
114
|
+
offset=".05"
|
|
115
|
+
stop-color="#0e39ad"
|
|
116
|
+
id="stop10" />
|
|
117
|
+
<stop
|
|
118
|
+
offset=".19"
|
|
119
|
+
stop-color="#082f9a"
|
|
120
|
+
id="stop11" />
|
|
121
|
+
<stop
|
|
122
|
+
offset=".36"
|
|
123
|
+
stop-color="#03288d"
|
|
124
|
+
id="stop12" />
|
|
125
|
+
<stop
|
|
126
|
+
offset=".57"
|
|
127
|
+
stop-color="#002586"
|
|
128
|
+
id="stop13" />
|
|
129
|
+
<stop
|
|
130
|
+
offset="1"
|
|
131
|
+
stop-color="#002484"
|
|
132
|
+
id="stop14" />
|
|
133
|
+
</linearGradient>
|
|
134
|
+
<clipPath
|
|
135
|
+
id="i">
|
|
136
|
+
<circle
|
|
137
|
+
class="o"
|
|
138
|
+
cx="116.95"
|
|
139
|
+
cy="116.95"
|
|
140
|
+
r="116.95"
|
|
141
|
+
id="circle14" />
|
|
142
|
+
</clipPath>
|
|
143
|
+
<mask
|
|
144
|
+
maskUnits="userSpaceOnUse"
|
|
145
|
+
id="mask16">
|
|
146
|
+
<circle
|
|
147
|
+
cx="64.03392"
|
|
148
|
+
cy="64.03392"
|
|
149
|
+
fill="url(#radial-gradient)"
|
|
150
|
+
stroke-width="0"
|
|
151
|
+
id="circle16"
|
|
152
|
+
style="fill:#ffffff;fill-opacity:1"
|
|
153
|
+
r="63.74976" />
|
|
154
|
+
</mask>
|
|
155
|
+
<radialGradient
|
|
156
|
+
id="radial-gradient"
|
|
157
|
+
cx="64.03392"
|
|
158
|
+
cy="64.03392"
|
|
159
|
+
fx="49.353233"
|
|
160
|
+
fy="82.396118"
|
|
161
|
+
r="59.086895"
|
|
162
|
+
gradientUnits="userSpaceOnUse">
|
|
163
|
+
<stop
|
|
164
|
+
offset="0"
|
|
165
|
+
stop-color="#f5aba7"
|
|
166
|
+
id="stop1-0" />
|
|
167
|
+
<stop
|
|
168
|
+
offset=".217861041112723"
|
|
169
|
+
stop-color="#f4a8a5"
|
|
170
|
+
id="stop2-9" />
|
|
171
|
+
<stop
|
|
172
|
+
offset=".361136125615505"
|
|
173
|
+
stop-color="#f39f9f"
|
|
174
|
+
id="stop3-0" />
|
|
175
|
+
<stop
|
|
176
|
+
offset=".482893104808535"
|
|
177
|
+
stop-color="#f29094"
|
|
178
|
+
id="stop4-0" />
|
|
179
|
+
<stop
|
|
180
|
+
offset=".592650507232557"
|
|
181
|
+
stop-color="#ef7b86"
|
|
182
|
+
id="stop5-6" />
|
|
183
|
+
<stop
|
|
184
|
+
offset=".694335183107659"
|
|
185
|
+
stop-color="#ec5f73"
|
|
186
|
+
id="stop6-1" />
|
|
187
|
+
<stop
|
|
188
|
+
offset=".78871442354024"
|
|
189
|
+
stop-color="#e93e5d"
|
|
190
|
+
id="stop7-3" />
|
|
191
|
+
<stop
|
|
192
|
+
offset=".860573681175441"
|
|
193
|
+
stop-color="#e62048"
|
|
194
|
+
id="stop8-8" />
|
|
195
|
+
</radialGradient>
|
|
196
|
+
<clipPath
|
|
197
|
+
id="clippath">
|
|
198
|
+
<circle
|
|
199
|
+
cx="64.03392"
|
|
200
|
+
cy="64.03392"
|
|
201
|
+
r="64.03392"
|
|
202
|
+
fill="none"
|
|
203
|
+
stroke-width="0"
|
|
204
|
+
id="circle8" />
|
|
205
|
+
</clipPath>
|
|
206
|
+
<linearGradient
|
|
207
|
+
id="linear-gradient"
|
|
208
|
+
x1="32.965416"
|
|
209
|
+
y1="147.10043"
|
|
210
|
+
x2="93.746849"
|
|
211
|
+
y2="41.823895"
|
|
212
|
+
gradientUnits="userSpaceOnUse">
|
|
213
|
+
<stop
|
|
214
|
+
offset="0"
|
|
215
|
+
stop-color="#284899"
|
|
216
|
+
id="stop9-9" />
|
|
217
|
+
<stop
|
|
218
|
+
offset=".138867226110765"
|
|
219
|
+
stop-color="#273f87"
|
|
220
|
+
id="stop10-3" />
|
|
221
|
+
<stop
|
|
222
|
+
offset=".311629315711017"
|
|
223
|
+
stop-color="#26397a"
|
|
224
|
+
id="stop11-4" />
|
|
225
|
+
<stop
|
|
226
|
+
offset=".536330265490111"
|
|
227
|
+
stop-color="#263673"
|
|
228
|
+
id="stop12-4" />
|
|
229
|
+
<stop
|
|
230
|
+
offset="1"
|
|
231
|
+
stop-color="#263571"
|
|
232
|
+
id="stop13-6" />
|
|
233
|
+
</linearGradient>
|
|
234
|
+
<mask
|
|
235
|
+
maskUnits="userSpaceOnUse"
|
|
236
|
+
id="mask16-6">
|
|
237
|
+
<circle
|
|
238
|
+
cx="64.03392"
|
|
239
|
+
cy="64.03392"
|
|
240
|
+
fill="url(#radial-gradient)"
|
|
241
|
+
stroke-width="0"
|
|
242
|
+
id="circle16-6"
|
|
243
|
+
style="fill:#ffffff;fill-opacity:1"
|
|
244
|
+
r="63.74976" />
|
|
245
|
+
</mask>
|
|
246
|
+
<radialGradient
|
|
247
|
+
id="radial-gradient-1"
|
|
248
|
+
cx="64.03392"
|
|
249
|
+
cy="64.03392"
|
|
250
|
+
fx="49.353233"
|
|
251
|
+
fy="82.396118"
|
|
252
|
+
r="59.086895"
|
|
253
|
+
gradientUnits="userSpaceOnUse">
|
|
254
|
+
<stop
|
|
255
|
+
offset="0"
|
|
256
|
+
stop-color="#f5aba7"
|
|
257
|
+
id="stop1-0-8" />
|
|
258
|
+
<stop
|
|
259
|
+
offset=".217861041112723"
|
|
260
|
+
stop-color="#f4a8a5"
|
|
261
|
+
id="stop2-9-4" />
|
|
262
|
+
<stop
|
|
263
|
+
offset=".361136125615505"
|
|
264
|
+
stop-color="#f39f9f"
|
|
265
|
+
id="stop3-0-9" />
|
|
266
|
+
<stop
|
|
267
|
+
offset=".482893104808535"
|
|
268
|
+
stop-color="#f29094"
|
|
269
|
+
id="stop4-0-6" />
|
|
270
|
+
<stop
|
|
271
|
+
offset=".592650507232557"
|
|
272
|
+
stop-color="#ef7b86"
|
|
273
|
+
id="stop5-6-3" />
|
|
274
|
+
<stop
|
|
275
|
+
offset=".694335183107659"
|
|
276
|
+
stop-color="#ec5f73"
|
|
277
|
+
id="stop6-1-7" />
|
|
278
|
+
<stop
|
|
279
|
+
offset=".78871442354024"
|
|
280
|
+
stop-color="#e93e5d"
|
|
281
|
+
id="stop7-3-8" />
|
|
282
|
+
<stop
|
|
283
|
+
offset=".860573681175441"
|
|
284
|
+
stop-color="#e62048"
|
|
285
|
+
id="stop8-8-8" />
|
|
286
|
+
</radialGradient>
|
|
287
|
+
<clipPath
|
|
288
|
+
id="clippath-2">
|
|
289
|
+
<circle
|
|
290
|
+
cx="64.03392"
|
|
291
|
+
cy="64.03392"
|
|
292
|
+
r="64.03392"
|
|
293
|
+
fill="none"
|
|
294
|
+
stroke-width="0"
|
|
295
|
+
id="circle8-9" />
|
|
296
|
+
</clipPath>
|
|
297
|
+
<linearGradient
|
|
298
|
+
id="linear-gradient-1"
|
|
299
|
+
x1="32.965416"
|
|
300
|
+
y1="147.10043"
|
|
301
|
+
x2="93.746849"
|
|
302
|
+
y2="41.823895"
|
|
303
|
+
gradientUnits="userSpaceOnUse">
|
|
304
|
+
<stop
|
|
305
|
+
offset="0"
|
|
306
|
+
stop-color="#284899"
|
|
307
|
+
id="stop9-9-3" />
|
|
308
|
+
<stop
|
|
309
|
+
offset=".138867226110765"
|
|
310
|
+
stop-color="#273f87"
|
|
311
|
+
id="stop10-3-5" />
|
|
312
|
+
<stop
|
|
313
|
+
offset=".311629315711017"
|
|
314
|
+
stop-color="#26397a"
|
|
315
|
+
id="stop11-4-9" />
|
|
316
|
+
<stop
|
|
317
|
+
offset=".536330265490111"
|
|
318
|
+
stop-color="#263673"
|
|
319
|
+
id="stop12-4-8" />
|
|
320
|
+
<stop
|
|
321
|
+
offset="1"
|
|
322
|
+
stop-color="#263571"
|
|
323
|
+
id="stop13-6-4" />
|
|
324
|
+
</linearGradient>
|
|
325
|
+
</defs>
|
|
326
|
+
<g
|
|
327
|
+
id="a"
|
|
328
|
+
transform="translate(-0.25982526,-2.1642165)" />
|
|
329
|
+
<g
|
|
330
|
+
id="g1"
|
|
331
|
+
transform="translate(0,-51.351725)">
|
|
332
|
+
<polygon
|
|
333
|
+
class="q"
|
|
334
|
+
points="354.77,148.41 412.88,148.41 412.88,175.43 321.56,175.43 321.56,58.89 411.25,58.89 411.25,85.91 354.77,85.91 354.77,105.44 408.16,105.44 408.16,127.74 354.77,127.74 "
|
|
335
|
+
id="polygon14"
|
|
336
|
+
transform="matrix(0.68640799,0,0,0.68640799,39.345198,87.134883)" />
|
|
337
|
+
<polygon
|
|
338
|
+
class="q"
|
|
339
|
+
points="426.22,58.89 461.37,58.89 486.6,150.2 488.23,150.2 513.13,58.89 548.62,58.89 514.11,175.43 460.56,175.43 "
|
|
340
|
+
id="polygon15"
|
|
341
|
+
transform="matrix(0.68640799,0,0,0.68640799,39.345198,87.134883)" />
|
|
342
|
+
<polygon
|
|
343
|
+
class="q"
|
|
344
|
+
points="599.72,148.41 657.82,148.41 657.82,175.43 566.51,175.43 566.51,58.89 656.2,58.89 656.2,85.91 599.72,85.91 599.72,105.44 653.1,105.44 653.1,127.74 599.72,127.74 "
|
|
345
|
+
id="polygon16"
|
|
346
|
+
transform="matrix(0.68640799,0,0,0.68640799,39.345198,87.134883)" />
|
|
347
|
+
<g
|
|
348
|
+
class="m"
|
|
349
|
+
clip-path="url(#d)"
|
|
350
|
+
id="g18"
|
|
351
|
+
transform="matrix(0.68640799,0,0,0.68640799,39.345198,87.134883)">
|
|
352
|
+
<path
|
|
353
|
+
class="q"
|
|
354
|
+
d="M 678.81,175.43 V 58.89 h 58.76 c 28.48,0 47.36,15.95 47.36,39.72 0,19.04 -12.37,32.39 -29.3,35.48 l -1.3,0.33 34.34,41.02 h -38.25 l -28.97,-38.41 h -8.3 v 38.41 h -34.34 z m 34.34,-60.71 h 18.39 c 10.91,0 19.04,-5.86 19.04,-15.62 0,-9.76 -8.14,-15.46 -19.04,-15.46 h -18.39 v 31.09 z"
|
|
355
|
+
id="path16" />
|
|
356
|
+
<polygon
|
|
357
|
+
class="q"
|
|
358
|
+
points="839.78,148.41 897.89,148.41 897.89,175.43 806.58,175.43 806.58,58.89 896.26,58.89 896.26,85.91 839.78,85.91 839.78,105.44 893.17,105.44 893.17,127.74 839.78,127.74 "
|
|
359
|
+
id="polygon17" />
|
|
360
|
+
<path
|
|
361
|
+
class="q"
|
|
362
|
+
d="m 914.81,137.02 h 32.23 c 0.16,9.77 8.14,16.11 22.14,16.11 11.07,0 18.23,-4.07 18.23,-11.23 0,-8.46 -9.6,-10.42 -21.48,-12.04 -20.02,-2.77 -50.29,-5.21 -50.29,-35.16 0,-23.11 19.86,-38.09 50.62,-38.09 30.76,0 51.6,16.6 51.6,40.69 h -31.09 c 0,-10.26 -7.65,-16.11 -19.37,-16.11 -10.91,0 -17.42,4.56 -17.42,11.07 0,8.79 11.56,10.26 25.07,12.21 19.86,2.93 46.71,7.16 46.71,35.32 0,23.11 -21.32,38.09 -53.88,38.09 -32.56,0 -53.06,-16.76 -53.06,-40.85"
|
|
363
|
+
id="path17" />
|
|
364
|
+
<polygon
|
|
365
|
+
class="q"
|
|
366
|
+
points="1068.78,87.05 1032.32,87.05 1032.32,58.89 1139.59,58.89 1139.59,87.05 1103.13,87.05 1103.13,175.43 1068.78,175.43 "
|
|
367
|
+
id="polygon18" />
|
|
368
|
+
</g>
|
|
369
|
+
</g>
|
|
370
|
+
<g
|
|
371
|
+
id="g16"
|
|
372
|
+
mask="url(#mask16-6)"
|
|
373
|
+
transform="matrix(1.8237098,0,0,1.8237098,-0.5182265,-0.51822534)">
|
|
374
|
+
<circle
|
|
375
|
+
cx="64.03392"
|
|
376
|
+
cy="64.03392"
|
|
377
|
+
r="64.03392"
|
|
378
|
+
fill="url(#radial-gradient)"
|
|
379
|
+
stroke-width="0"
|
|
380
|
+
id="circle13"
|
|
381
|
+
style="fill:url(#radial-gradient-1)" />
|
|
382
|
+
<g
|
|
383
|
+
clip-path="url(#clippath-2)"
|
|
384
|
+
id="g15">
|
|
385
|
+
<g
|
|
386
|
+
id="g14">
|
|
387
|
+
<polygon
|
|
388
|
+
points="42.035928,128.06784 86.198552,128.06784 128.06784,128.06784 127.91906,68.32343 86.198552,37.46588 86.198552,60.074086 42.035928,27.309721 1.0004e-11,58.508567 0,128.06784 "
|
|
389
|
+
fill="url(#linear-gradient)"
|
|
390
|
+
stroke-width="0"
|
|
391
|
+
id="polygon13"
|
|
392
|
+
style="fill:url(#linear-gradient-1)" />
|
|
393
|
+
<polygon
|
|
394
|
+
points="86.198562,60.175133 86.198562,37.566934 70.870099,48.802914 "
|
|
395
|
+
fill="#ffffff"
|
|
396
|
+
stroke-width="0"
|
|
397
|
+
id="polygon14-0" />
|
|
398
|
+
<path
|
|
399
|
+
d="m 38.763237,67.759224 c 2.990335,-2.053995 4.951441,-5.497907 4.951441,-9.399859 l -8.579382,-5.901845 6.725446,-4.922761 -6.616443,-4.964692 6.791802,-5.143195 V 27.410768 L 0,58.609614 v 37.87583 z"
|
|
400
|
+
fill="#ffffff"
|
|
401
|
+
stroke-width="0"
|
|
402
|
+
id="path14" />
|
|
403
|
+
</g>
|
|
404
|
+
</g>
|
|
405
|
+
</g>
|
|
406
|
+
</svg>
|
|
@@ -2,15 +2,16 @@ import argparse
|
|
|
2
2
|
from copy import deepcopy as copy
|
|
3
3
|
from functools import partial
|
|
4
4
|
from pathlib import Path
|
|
5
|
+
from textwrap import dedent
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
|
-
from ruamel.yaml import YAML
|
|
8
|
-
|
|
9
8
|
from everest.bin.utils import setup_logging
|
|
10
9
|
from everest.config import EverestConfig
|
|
11
10
|
from everest.config_file_loader import load_yaml
|
|
12
11
|
from everest.everest_storage import EverestStorage
|
|
13
12
|
|
|
13
|
+
from .utils import ArgParseFormatter
|
|
14
|
+
|
|
14
15
|
|
|
15
16
|
def _yaml_config(
|
|
16
17
|
file_path: str, parser: argparse.ArgumentParser
|
|
@@ -23,23 +24,40 @@ def _yaml_config(
|
|
|
23
24
|
|
|
24
25
|
def _build_args_parser() -> argparse.ArgumentParser:
|
|
25
26
|
arg_parser = argparse.ArgumentParser(
|
|
26
|
-
description=
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
description=dedent(
|
|
28
|
+
"""
|
|
29
|
+
Create a configuration file with updated controls based on a
|
|
30
|
+
previous run.
|
|
31
|
+
|
|
32
|
+
The *everest branch* command reads an existing configuration and
|
|
33
|
+
creates a new configuration file, with initial control values taken
|
|
34
|
+
from a batch of a previous optimization run.
|
|
35
|
+
|
|
36
|
+
**Warning:** Do not remove the optimization output folder before
|
|
37
|
+
running the *branch* command or it will fail.
|
|
38
|
+
|
|
39
|
+
**Note:** The *branch* command does not provide true restart
|
|
40
|
+
functionality. The new config file merely sets new initial controls
|
|
41
|
+
defined by the given batch. Subsequent optimization runs will likely
|
|
42
|
+
produce slightly different results.
|
|
43
|
+
"""
|
|
44
|
+
),
|
|
45
|
+
formatter_class=ArgParseFormatter,
|
|
30
46
|
usage="""everest branch <config_file> <new_config_file> -b #""",
|
|
31
47
|
)
|
|
32
48
|
arg_parser.add_argument(
|
|
33
49
|
"config",
|
|
34
|
-
help="The path to the everest configuration file",
|
|
50
|
+
help="The path to the everest configuration file.",
|
|
35
51
|
type=partial(_yaml_config, parser=arg_parser),
|
|
36
52
|
)
|
|
37
|
-
arg_parser.add_argument(
|
|
53
|
+
arg_parser.add_argument(
|
|
54
|
+
"output_config", help="The path to the new everest configuration file."
|
|
55
|
+
)
|
|
38
56
|
arg_parser.add_argument(
|
|
39
57
|
"-b",
|
|
40
58
|
"--batch",
|
|
41
59
|
type=int,
|
|
42
|
-
help="
|
|
60
|
+
help="ID of the batch providing the new control values.",
|
|
43
61
|
required=True,
|
|
44
62
|
)
|
|
45
63
|
return arg_parser
|
|
@@ -119,11 +137,9 @@ def config_branch_entry(args: list[str] | None = None) -> None:
|
|
|
119
137
|
conf_controls=yml_config["controls"], opt_controls=opt_controls
|
|
120
138
|
)
|
|
121
139
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
with open(options.output_config, "w", encoding="utf-8") as f:
|
|
126
|
-
yaml.dump(yml_config, f)
|
|
140
|
+
EverestConfig.write_dict_to_file(
|
|
141
|
+
yml_config, Path(options.output_config), safe_and_pure=False
|
|
142
|
+
)
|
|
127
143
|
print(f"New config file {options.output_config} created.")
|
|
128
144
|
|
|
129
145
|
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
import argparse
|
|
4
4
|
import sys
|
|
5
5
|
|
|
6
|
-
from ruamel.yaml import YAML
|
|
7
|
-
|
|
8
6
|
from everest.config import EverestConfig
|
|
9
7
|
|
|
10
8
|
|
|
@@ -18,7 +16,7 @@ def _build_args_parser() -> argparse.ArgumentParser:
|
|
|
18
16
|
usage="""everest show <config_file>""",
|
|
19
17
|
)
|
|
20
18
|
arg_parser.add_argument(
|
|
21
|
-
"config_file", help="The path to the everest configuration file"
|
|
19
|
+
"config_file", help="The path to the everest configuration file."
|
|
22
20
|
)
|
|
23
21
|
return arg_parser
|
|
24
22
|
|
|
@@ -26,13 +24,7 @@ def _build_args_parser() -> argparse.ArgumentParser:
|
|
|
26
24
|
def config_dump_entry(args: list[str] | None = None) -> None:
|
|
27
25
|
parser = _build_args_parser()
|
|
28
26
|
options = parser.parse_args(args)
|
|
29
|
-
|
|
30
|
-
config = EverestConfig.load_file(options.config_file)
|
|
31
|
-
|
|
32
|
-
yaml = YAML(typ="safe", pure=True)
|
|
33
|
-
yaml.indent = 2
|
|
34
|
-
yaml.default_flow_style = False
|
|
35
|
-
yaml.dump(config.to_dict(), sys.stdout)
|
|
27
|
+
EverestConfig.load_file(options.config_file).write_to_file(sys.stdout)
|
|
36
28
|
|
|
37
29
|
|
|
38
30
|
if __name__ == "__main__":
|
everest/bin/everest_script.py
CHANGED
|
@@ -3,21 +3,21 @@ import argparse
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
|
-
import logging.config
|
|
7
|
-
import os
|
|
8
6
|
import signal
|
|
9
7
|
import socket
|
|
10
8
|
import threading
|
|
11
9
|
from functools import partial
|
|
12
10
|
from pathlib import Path
|
|
11
|
+
from textwrap import dedent
|
|
12
|
+
|
|
13
|
+
import anyio
|
|
13
14
|
|
|
14
15
|
from _ert.threading import ErtThread
|
|
15
16
|
from ert.config import QueueSystem
|
|
16
|
-
from ert.services import
|
|
17
|
+
from ert.services import ErtServer
|
|
18
|
+
from ert.storage.local_experiment import ExperimentState
|
|
17
19
|
from everest.config import EverestConfig, ServerConfig
|
|
18
20
|
from everest.detached import (
|
|
19
|
-
ExperimentState,
|
|
20
|
-
everserver_status,
|
|
21
21
|
start_experiment,
|
|
22
22
|
start_server,
|
|
23
23
|
wait_for_server,
|
|
@@ -30,6 +30,8 @@ from everest.util import (
|
|
|
30
30
|
)
|
|
31
31
|
|
|
32
32
|
from .utils import (
|
|
33
|
+
ArgParseFormatter,
|
|
34
|
+
get_experiment_status,
|
|
33
35
|
handle_keyboard_interrupt,
|
|
34
36
|
run_detached_monitor,
|
|
35
37
|
run_empty_detached_monitor,
|
|
@@ -103,16 +105,23 @@ def _build_args_parser() -> argparse.ArgumentParser:
|
|
|
103
105
|
"""Build arg parser"""
|
|
104
106
|
|
|
105
107
|
arg_parser = argparse.ArgumentParser(
|
|
106
|
-
description=(
|
|
107
|
-
"
|
|
108
|
-
|
|
108
|
+
description=dedent(
|
|
109
|
+
"""
|
|
110
|
+
Start an optimization run.
|
|
111
|
+
|
|
112
|
+
Closing the console or interrupting the `everest run` process does
|
|
113
|
+
not terminate the optimization. To continue monitoring the running
|
|
114
|
+
optimization, use `everest monitor config_file.yml`. To stop a
|
|
115
|
+
running optimization, use `everest kill config_file.yml`.
|
|
116
|
+
"""
|
|
109
117
|
),
|
|
118
|
+
formatter_class=ArgParseFormatter,
|
|
110
119
|
usage="everest run <config_file> [arguments]",
|
|
111
120
|
)
|
|
112
121
|
arg_parser.add_argument(
|
|
113
122
|
"config",
|
|
114
123
|
type=partial(EverestConfig.load_file_with_argparser, parser=arg_parser),
|
|
115
|
-
help="The path to the everest configuration file",
|
|
124
|
+
help="The path to the everest configuration file.",
|
|
116
125
|
)
|
|
117
126
|
arg_parser.add_argument(
|
|
118
127
|
"--new-run",
|
|
@@ -126,14 +135,16 @@ def _build_args_parser() -> argparse.ArgumentParser:
|
|
|
126
135
|
help="Spawn a GUI monitoring simulation statuses.",
|
|
127
136
|
)
|
|
128
137
|
arg_parser.add_argument(
|
|
129
|
-
"--debug",
|
|
138
|
+
"--debug",
|
|
139
|
+
action="store_true",
|
|
140
|
+
help="Display debug information in the terminal.",
|
|
130
141
|
)
|
|
131
142
|
arg_parser.add_argument(
|
|
132
143
|
"--show-all-jobs",
|
|
133
144
|
action="store_true",
|
|
134
145
|
help=(
|
|
135
146
|
"DEPRECATED: This option no longer has an effect, "
|
|
136
|
-
"and will be removed in a future version"
|
|
147
|
+
"and will be removed in a future version."
|
|
137
148
|
),
|
|
138
149
|
)
|
|
139
150
|
arg_parser.add_argument(
|
|
@@ -158,7 +169,7 @@ async def run_everest(options: argparse.Namespace) -> None:
|
|
|
158
169
|
)
|
|
159
170
|
|
|
160
171
|
try:
|
|
161
|
-
|
|
172
|
+
ErtServer.session(
|
|
162
173
|
Path(ServerConfig.get_session_dir(options.config.output_dir)), timeout=1
|
|
163
174
|
)
|
|
164
175
|
server_running = True
|
|
@@ -183,18 +194,27 @@ async def run_everest(options: argparse.Namespace) -> None:
|
|
|
183
194
|
job_name = fm_job.split()[0]
|
|
184
195
|
logger.info(f"Everest forward model contains job {job_name}")
|
|
185
196
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
197
|
+
async def directory_is_nonempty(path: Path) -> bool:
|
|
198
|
+
try:
|
|
199
|
+
async for _ in anyio.Path(path).iterdir():
|
|
200
|
+
return True
|
|
201
|
+
except OSError: # Raised if the directory is empty
|
|
202
|
+
return False
|
|
203
|
+
else:
|
|
204
|
+
return False
|
|
205
|
+
|
|
206
|
+
if await anyio.Path(
|
|
207
|
+
options.config.simulation_dir
|
|
208
|
+
).exists() and await directory_is_nonempty(options.config.simulation_dir):
|
|
189
209
|
warn_user_that_runpath_is_nonempty()
|
|
190
210
|
if not options.skip_prompt:
|
|
191
211
|
show_scaled_controls_warning()
|
|
192
212
|
|
|
193
213
|
try:
|
|
194
|
-
output_dir = options.config.output_dir
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
214
|
+
output_dir = Path(options.config.output_dir)
|
|
215
|
+
options.config.write_to_file(
|
|
216
|
+
output_dir / options.config.config_file, drop_config_path=True
|
|
217
|
+
)
|
|
198
218
|
except (OSError, LookupError) as e:
|
|
199
219
|
logger.error(f"Failed to save optimization config: {e}")
|
|
200
220
|
|
|
@@ -213,7 +233,7 @@ async def run_everest(options: argparse.Namespace) -> None:
|
|
|
213
233
|
|
|
214
234
|
print("Waiting for server ...")
|
|
215
235
|
logger.debug("Waiting for response from everserver")
|
|
216
|
-
client =
|
|
236
|
+
client = ErtServer.session(
|
|
217
237
|
Path(ServerConfig.get_session_dir(options.config.output_dir))
|
|
218
238
|
)
|
|
219
239
|
wait_for_server(client, timeout=600)
|
|
@@ -253,19 +273,19 @@ async def run_everest(options: argparse.Namespace) -> None:
|
|
|
253
273
|
)
|
|
254
274
|
)
|
|
255
275
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
logger.info(
|
|
268
|
-
print(
|
|
276
|
+
msg: str = ""
|
|
277
|
+
experiment_status = get_experiment_status(options.config.storage_dir)
|
|
278
|
+
if experiment_status and experiment_status.status == ExperimentState.failed:
|
|
279
|
+
msg = f"Everest run failed with: {experiment_status.message or 'Unknown error'}"
|
|
280
|
+
logger.error(msg)
|
|
281
|
+
raise SystemExit(msg)
|
|
282
|
+
if experiment_status:
|
|
283
|
+
msg = (
|
|
284
|
+
"Everest run finished with: "
|
|
285
|
+
f"{experiment_status.message or 'Experiment completed successfully'}"
|
|
286
|
+
)
|
|
287
|
+
logger.info(msg)
|
|
288
|
+
print(msg)
|
|
269
289
|
|
|
270
290
|
|
|
271
291
|
if __name__ == "__main__":
|