ert 18.0.1__py3-none-any.whl → 18.0.4__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.
@@ -4,8 +4,8 @@ from .config_schema_deprecations import deprecated_keywords_list
4
4
  from .config_schema_item import (
5
5
  SchemaItem,
6
6
  Varies,
7
+ existing_file_keyword,
7
8
  existing_path_inline_keyword,
8
- existing_path_keyword,
9
9
  float_keyword,
10
10
  int_keyword,
11
11
  path_keyword,
@@ -318,8 +318,8 @@ def init_user_config_schema() -> ConfigSchemaDict:
318
318
  surface_keyword(),
319
319
  field_keyword(),
320
320
  single_arg_keyword(ConfigKeys.ECLBASE),
321
- existing_path_keyword(ConfigKeys.DATA_FILE),
322
- existing_path_keyword(ConfigKeys.GRID),
321
+ existing_file_keyword(ConfigKeys.DATA_FILE),
322
+ existing_file_keyword(ConfigKeys.GRID),
323
323
  path_keyword(ConfigKeys.REFCASE),
324
324
  int_keyword(ConfigKeys.RANDOM_SEED),
325
325
  num_realizations_keyword(),
@@ -217,15 +217,4 @@ deprecated_keywords_list = [
217
217
  ),
218
218
  check=lambda line: line[0] == "DESIGN2PARAMS",
219
219
  ),
220
- DeprecationInfo(
221
- keyword="FORWARD_MODEL",
222
- message=(
223
- "FORWARD_MODEL DESIGN_KW will be replaced with RUN_TEMPLATE. "
224
- "DESIGN2PARAMS has been replaced by DESIGN_MATRIX, so the "
225
- "parameters are already available for magic string replacement "
226
- "with the RUN_TEMPLATE keyword. Please use this format: "
227
- "'RUN_TEMPLATE my_text_file_template.txt my_text_output_file.txt'"
228
- ),
229
- check=lambda line: line[0] == "DESIGN_KW",
230
- ),
231
220
  ]
@@ -155,9 +155,9 @@ class SchemaItem:
155
155
  f"value as argument {index + 1!r}",
156
156
  token,
157
157
  )
158
-
159
158
  case (
160
159
  SchemaItemType.PATH
160
+ | SchemaItemType.EXISTING_FILE
161
161
  | SchemaItemType.EXISTING_PATH
162
162
  | SchemaItemType.EXISTING_PATH_INLINE
163
163
  ):
@@ -166,10 +166,14 @@ class SchemaItem:
166
166
  path = os.path.normpath(
167
167
  os.path.join(os.path.dirname(token.filename), token)
168
168
  )
169
- if val_type in {
170
- SchemaItemType.EXISTING_PATH,
171
- SchemaItemType.EXISTING_PATH_INLINE,
172
- }:
169
+ if val_type != SchemaItemType.PATH:
170
+ if val_type == SchemaItemType.EXISTING_FILE and not os.path.isfile(
171
+ str(path)
172
+ ):
173
+ raise ConfigValidationError.with_context(
174
+ f"{self.kw} {token} is not a file.",
175
+ token,
176
+ )
173
177
  if not os.path.exists(str(path)):
174
178
  err = f'Cannot find file or directory "{token.value}". '
175
179
  if path != token:
@@ -343,8 +347,8 @@ def path_keyword(keyword: str) -> SchemaItem:
343
347
  return SchemaItem(kw=keyword, type_map=[SchemaItemType.PATH])
344
348
 
345
349
 
346
- def existing_path_keyword(keyword: str) -> SchemaItem:
347
- return SchemaItem(kw=keyword, type_map=[SchemaItemType.EXISTING_PATH])
350
+ def existing_file_keyword(keyword: str) -> SchemaItem:
351
+ return SchemaItem(kw=keyword, type_map=[SchemaItemType.EXISTING_FILE])
348
352
 
349
353
 
350
354
  def existing_path_inline_keyword(
@@ -9,6 +9,7 @@ class SchemaItemType(StrEnum):
9
9
  POSITIVE_FLOAT = "POSITIVE_FLOAT"
10
10
  PATH = "PATH"
11
11
  EXISTING_PATH = "EXISTING_PATH"
12
+ EXISTING_FILE = "EXISTING_FILE"
12
13
  # EXISTING_PATH_INLINE is a directive to the
13
14
  # schema validation to inline the contents of
14
15
  # the file.
@@ -5,6 +5,7 @@ import logging
5
5
  import math
6
6
  import os
7
7
  import time
8
+ from collections import defaultdict
8
9
  from collections.abc import Iterable, Mapping
9
10
  from copy import deepcopy
10
11
  from datetime import UTC, datetime
@@ -102,7 +103,7 @@ def _generate_parameter_files(
102
103
  iens: int,
103
104
  fs: Ensemble,
104
105
  iteration: int,
105
- ) -> Mapping[str, Mapping[str, float | str]]:
106
+ ) -> tuple[Mapping[str, Mapping[str, float | str]], Mapping[str, float]]:
106
107
  """
107
108
  Generate parameter files that are placed in each runtime directory for
108
109
  forward-model jobs to consume.
@@ -117,8 +118,9 @@ def _generate_parameter_files(
117
118
  fs: Ensemble from which to load parameter data
118
119
 
119
120
  Returns:
120
- Returns the union of parameters returned by write_to_runpath for each
121
- parameter_config.
121
+ Returns a tuple containing: the union of parameters returned by
122
+ write_to_runpath for each parameter_config, and a dict with
123
+ timings/durations for each parameter type.
122
124
  """
123
125
  # preload scalar parameters for this realization
124
126
  keys = [
@@ -126,18 +128,23 @@ def _generate_parameter_files(
126
128
  for p in parameter_configs
127
129
  if p.cardinality == ParameterCardinality.multiple_configs_per_ensemble_dataset
128
130
  ]
131
+ export_timings: defaultdict[str, float] = defaultdict(float)
129
132
  scalar_data: dict[str, float | str] = {}
130
133
  if keys:
134
+ start_time = time.perf_counter()
131
135
  df = fs._load_scalar_keys(keys=keys, realizations=iens, transformed=True)
132
136
  scalar_data = df.to_dicts()[0]
137
+ export_timings["load_scalar_keys"] = time.perf_counter() - start_time
133
138
  exports: dict[str, dict[str, float | str]] = {}
134
139
  log_exports: dict[str, dict[str, float | str]] = {}
140
+
135
141
  for param in parameter_configs:
136
142
  # For the first iteration we do not write the parameter
137
143
  # to run path, as we expect to read if after the forward
138
144
  # model has completed.
139
145
  if param.forward_init and iteration == 0:
140
146
  continue
147
+ start_time = time.perf_counter()
141
148
  export_values: dict[str, dict[str, float | str]] | None = None
142
149
  log_export_values: dict[str, dict[str, float | str]] | None = {}
143
150
  if param.name in scalar_data:
@@ -164,11 +171,15 @@ def _generate_parameter_files(
164
171
  if log_export_values:
165
172
  for group, vals in log_export_values.items():
166
173
  log_exports.setdefault(group, {}).update(vals)
174
+ export_timings[param.type] += time.perf_counter() - start_time
167
175
  continue
168
-
176
+ start_time = time.perf_counter()
169
177
  _value_export_txt(run_path, export_base_name, exports | log_exports)
178
+ export_timings["value_export_txt"] = time.perf_counter() - start_time
179
+ start_time = time.perf_counter()
170
180
  _value_export_json(run_path, export_base_name, exports)
171
- return exports
181
+ export_timings["value_export_json"] = time.perf_counter() - start_time
182
+ return (exports, dict(export_timings))
172
183
 
173
184
 
174
185
  def _manifest_to_json(ensemble: Ensemble, iens: int, iter_: int) -> dict[str, Any]:
@@ -239,7 +250,7 @@ def create_run_path(
239
250
  if run_arg.active:
240
251
  run_path.mkdir(parents=True, exist_ok=True)
241
252
  start_time = time.perf_counter()
242
- param_data = _generate_parameter_files(
253
+ (param_data, detailed_parameter_timings) = _generate_parameter_files(
243
254
  ensemble.experiment.parameter_configuration.values(),
244
255
  parameters_file,
245
256
  run_path,
@@ -247,6 +258,11 @@ def create_run_path(
247
258
  ensemble,
248
259
  ensemble.iteration,
249
260
  )
261
+ for parameter_type, duration in detailed_parameter_timings.items():
262
+ if parameter_type not in timings:
263
+ timings[parameter_type] = 0.0
264
+ timings[parameter_type] += duration
265
+
250
266
  timings["generate_parameter_files"] += time.perf_counter() - start_time
251
267
  real_iter_substituter = substituter.real_iter_substituter(
252
268
  run_arg.iens, ensemble.iteration
ert/shared/version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '18.0.1'
32
- __version_tuple__ = version_tuple = (18, 0, 1)
31
+ __version__ = version = '18.0.4'
32
+ __version_tuple__ = version_tuple = (18, 0, 4)
33
33
 
34
- __commit_id__ = commit_id = 'g969b012de'
34
+ __commit_id__ = commit_id = 'gbe2423cee'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ert
3
- Version: 18.0.1
3
+ Version: 18.0.4
4
4
  Summary: Ensemble based Reservoir Tool (ERT)
5
5
  Author-email: Equinor ASA <fg_sib-scout@equinor.com>
6
6
  License-Expression: GPL-3.0-only
@@ -88,9 +88,9 @@ ert/config/parsing/_read_file.py,sha256=QKMQSNG5J05AdTzy_VQiK5AQ26g0bDHyxlSSPqIh
88
88
  ert/config/parsing/config_dict.py,sha256=yyBb-NeaFnIjENrcziVA11Bq43uGguUiPECcKWLDg8w,52
89
89
  ert/config/parsing/config_errors.py,sha256=p3lAcRPXTm4okupdVyLwRCVWJ_86a7rgCohkDaLRM10,4806
90
90
  ert/config/parsing/config_keywords.py,sha256=J8kgzDVhuM8jvCwzO1kfOxvOH_DnDASOZPaJZujcIgQ,1860
91
- ert/config/parsing/config_schema.py,sha256=sUkjjhso6xNChfyFWE1srhD3DMLNvg3eHyALzZ5s6FQ,9614
92
- ert/config/parsing/config_schema_deprecations.py,sha256=fmzyxUBxR9GtDNIkP0ozHWU2SH1TvyhBFFyFhG8vZjA,9125
93
- ert/config/parsing/config_schema_item.py,sha256=G5TQNuywQu55yglR3Ef_DnkYBRm5YzqAfyL1XwMt-m0,14172
91
+ ert/config/parsing/config_schema.py,sha256=9ws2C3Oc-eT5uB_Xy2IEvPWON7b9rZnIc2FpID7hhWc,9614
92
+ ert/config/parsing/config_schema_deprecations.py,sha256=xUkbe-_UA8UawNcUF58YwHHpHTAfC6XO2ZBN97jchKc,8611
93
+ ert/config/parsing/config_schema_item.py,sha256=jjHT1KqobQvpLxh9gZ0rR8x_YylV29pvvP7oUASFwtA,14448
94
94
  ert/config/parsing/context_values.py,sha256=S_j_BKuwqSm8RZNnw6Ki2ZQ4jz0VFXXmh0MZA2OstmQ,2288
95
95
  ert/config/parsing/deprecation_info.py,sha256=E31LBTiG1qNeqACU8lTxp54bESIeuuVHgFim8j8uVjg,663
96
96
  ert/config/parsing/error_info.py,sha256=AMOS0v-_ECHESj4aoy0m2fUPPlw9SE1DN_8MsaHeilY,2906
@@ -103,7 +103,7 @@ ert/config/parsing/lark_parser.py,sha256=SS0yXTI5w_qmpFvePMO-r0g9NPqOOrlCFF3amPe
103
103
  ert/config/parsing/observations_parser.py,sha256=3hmDjQYjSgrumrb8592X2AbJFp-J72Sq_VLQpOwMaWw,6707
104
104
  ert/config/parsing/queue_system.py,sha256=P4-oHftl7piNwCNjnelJAA3WePlBmgXGPhnbHhSb4Eo,570
105
105
  ert/config/parsing/schema_dict.py,sha256=MWKhtLhdRvqfWm8oZatWFnAhiIU03DdQCOaX6A71068,4313
106
- ert/config/parsing/schema_item_type.py,sha256=mruMC2Gb7XzK6blg-tDuAJLy0aHct6xkg7p8xLkYrko,617
106
+ ert/config/parsing/schema_item_type.py,sha256=LP6lXE7YihnAEVP3kCJ80kdpgH6Veu--xcPfgaqJhdc,653
107
107
  ert/config/parsing/types.py,sha256=NXV5odfbVL_opQgPTaSlpgkilY4qaB3pal4TaV6pL80,315
108
108
  ert/config/parsing/workflow_job_keywords.py,sha256=4SSy2dwLS3G2B1-HPw3b6dMEpIc5-2218ERL_PT_R1k,269
109
109
  ert/config/parsing/workflow_job_schema.py,sha256=lkL7CAOFeNcWNRGfBuu1FdbcSqwPXM__8dCC8b3hkTg,2905
@@ -369,7 +369,7 @@ ert/resources/workflows/jobs/shell/MOVE_DIRECTORY,sha256=Lh_u0-eCr5Usa8Xien44d6q
369
369
  ert/resources/workflows/jobs/shell/MOVE_FILE,sha256=MET6aPtDTVaoEDiTZqKqx_hRayJP3Gn-yubdwrJqpjw,48
370
370
  ert/resources/workflows/jobs/shell/SYMLINK,sha256=P6wYoLM6y7IqzJQE5ZWkKEj7ERfK9VTRJa6N1pKigeg,46
371
371
  ert/run_models/__init__.py,sha256=PzLAD_gFRm_oUq_zDByAlQ05zShrBRoCR8oCn2qg43I,1348
372
- ert/run_models/_create_run_path.py,sha256=kcjx-Q1RqswzI-lx0Y-3dApZMCNSEZHq7y2xs9BxjrE,11734
372
+ ert/run_models/_create_run_path.py,sha256=fnHCRQaGtTYpQy2garIGF7qrTQsfXMZmcOCoFZoFVu4,12691
373
373
  ert/run_models/ensemble_experiment.py,sha256=bbwZtuQQy-3V5VKK8WpGnGe4rDd9A8A4B0skt70ds3Q,2968
374
374
  ert/run_models/ensemble_information_filter.py,sha256=WecqKB9XlN0Ktxu43jTftjSkw0Kp_GfxSUh-tPrT0_E,1297
375
375
  ert/run_models/ensemble_smoother.py,sha256=zGEG6DvASDaz_XsXrUT8Vbv7bxWIWw-wR4b1DGx6H3I,3802
@@ -400,7 +400,7 @@ ert/services/ert_server.py,sha256=geh5mkdAKqNKgG56DcwSnEpvf0wcUc7vuw4feG1ykEI,10
400
400
  ert/services/webviz_ert_service.py,sha256=J5vznqb_-DjlDMOze7tdvuBE4GWEPgJ5dIIXvRLKd0Y,650
401
401
  ert/shared/__init__.py,sha256=OwgL-31MxA0fabETJ5Svw0tqJpHi569CZDRFHdHiqA0,644
402
402
  ert/shared/net_utils.py,sha256=DDHIZLHdBnh7ZZ--1s-FUlsoNTSJJsfHmLQE44E2JqU,5324
403
- ert/shared/version.py,sha256=LdklmOEwlOIIdS7lWti2mZbLoh16FqAetVPZiWAM6Ug,714
403
+ ert/shared/version.py,sha256=sHyQpOJPAhRw_LFevtB2d0hrVnwOgd9JQmCvacV5LwI,714
404
404
  ert/shared/_doc_utils/__init__.py,sha256=zSl-NUpWLF167PVTvfjn0T50gExjvyWPw5OGq5Bt2Dc,983
405
405
  ert/shared/_doc_utils/ert_jobs.py,sha256=uHP8ozhKwCHG6BkyhAgCGoy59JEFb102pHKot-5ZEys,8054
406
406
  ert/shared/_doc_utils/everest_jobs.py,sha256=uBDN7tIwlBJIZVZ6ZFL1tkewEJJGDLoeVrFIIrJznvM,2081
@@ -453,7 +453,7 @@ ert/validation/validation_status.py,sha256=f47_B7aS-9DEh6uaVzKxD97pXienkyTVVCqTy
453
453
  ert/warnings/__init__.py,sha256=IBwQVkdD7Njaad9PAB-9K-kr15wnA4EBKboxyqgu9NA,214
454
454
  ert/warnings/_warnings.py,sha256=7qhNZ0W4nnljzoOx6AXX7VlMv5pa34Ek5M5n1Ep0Kak,189
455
455
  ert/warnings/specific_warning_handler.py,sha256=5dVXtOhzcMmtPBGx4AOddXNPfzTFOPA7RVtdH8hLv68,932
456
- ert-18.0.1.dist-info/licenses/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
456
+ ert-18.0.4.dist-info/licenses/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
457
457
  everest/__init__.py,sha256=8_f50f6H3-onqaiuNCwC0Eiotdl9JuTxhwyF_54MVvU,306
458
458
  everest/config_file_loader.py,sha256=q_rmxk778uDrNxdQQW0tBs9R3hU4az6yGCJwuY_5xww,5698
459
459
  everest/everest_storage.py,sha256=Xg2CuRdhZOqljm0i6H5o-pejcMeCwncSGw7Q6beZRgY,42173
@@ -517,8 +517,8 @@ everest/templates/well_drill.tmpl,sha256=9iLexmBHMsMQNXyyRK4GlmVuVpVIxRcCHpy1av5
517
517
  everest/templates/well_order.tmpl,sha256=XJ1eVRkeyTdLu5sLsltJSSK6BDLN7rFOAqLdM3ZZy3w,75
518
518
  everest/util/__init__.py,sha256=xEYLz6pUtgkH8VHer1RfoCwKiO70dBnuhHonsOPaOx0,1359
519
519
  everest/util/forward_models.py,sha256=JPxHhLI6TrmQJwW50wwGBmw57TfRd8SG2svYhXFHrc8,1617
520
- ert-18.0.1.dist-info/METADATA,sha256=Ral9g5M8fieMBwg1eytzO6DkwFGV6T83V-0iypq_VcA,10013
521
- ert-18.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
522
- ert-18.0.1.dist-info/entry_points.txt,sha256=ChZ7vn8Qy9v9rT8GM2JtAvWDN3NVoy4BIcvVRtU73CM,189
523
- ert-18.0.1.dist-info/top_level.txt,sha256=LRh9GfdfyDWfAGmrQgp_XdoMHA4v6aotw8xgsy5YyHE,17
524
- ert-18.0.1.dist-info/RECORD,,
520
+ ert-18.0.4.dist-info/METADATA,sha256=eSyzD9hbt1j8gVmplb7QiqFVxBXbx9k_tivxwopG2E8,10013
521
+ ert-18.0.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
522
+ ert-18.0.4.dist-info/entry_points.txt,sha256=ChZ7vn8Qy9v9rT8GM2JtAvWDN3NVoy4BIcvVRtU73CM,189
523
+ ert-18.0.4.dist-info/top_level.txt,sha256=LRh9GfdfyDWfAGmrQgp_XdoMHA4v6aotw8xgsy5YyHE,17
524
+ ert-18.0.4.dist-info/RECORD,,
File without changes