ert 17.1.7__py3-none-any.whl → 17.1.9__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/analysis/_enif_update.py +8 -4
- ert/analysis/_update_commons.py +4 -3
- ert/run_models/_create_run_path.py +23 -2
- ert/shared/version.py +3 -3
- {ert-17.1.7.dist-info → ert-17.1.9.dist-info}/METADATA +1 -1
- {ert-17.1.7.dist-info → ert-17.1.9.dist-info}/RECORD +11 -11
- everest/api/everest_data_api.py +14 -1
- {ert-17.1.7.dist-info → ert-17.1.9.dist-info}/WHEEL +0 -0
- {ert-17.1.7.dist-info → ert-17.1.9.dist-info}/entry_points.txt +0 -0
- {ert-17.1.7.dist-info → ert-17.1.9.dist-info}/licenses/COPYING +0 -0
- {ert-17.1.7.dist-info → ert-17.1.9.dist-info}/top_level.txt +0 -0
ert/analysis/_enif_update.py
CHANGED
|
@@ -160,10 +160,14 @@ def analysis_EnIF(
|
|
|
160
160
|
Y=S.T,
|
|
161
161
|
verbose_level=5,
|
|
162
162
|
)
|
|
163
|
-
|
|
163
|
+
updated_parameters = [
|
|
164
|
+
p
|
|
165
|
+
for p, config in source_ensemble.experiment.parameter_configuration.items()
|
|
166
|
+
if config.update
|
|
167
|
+
]
|
|
164
168
|
# Learn the precision matrix block-sparse over parameter groups
|
|
165
169
|
Prec_u = sp.sparse.csc_matrix((0, 0), dtype=float)
|
|
166
|
-
for param_group in
|
|
170
|
+
for param_group in updated_parameters:
|
|
167
171
|
config_node = source_ensemble.experiment.parameter_configuration[param_group]
|
|
168
172
|
X_local = source_ensemble.load_parameters_numpy(param_group, iens_active_index)
|
|
169
173
|
X_local_scaler = StandardScaler()
|
|
@@ -215,7 +219,7 @@ def analysis_EnIF(
|
|
|
215
219
|
|
|
216
220
|
# Iterate over parameters to store the updated ensemble
|
|
217
221
|
parameters_updated = 0
|
|
218
|
-
for param_group in
|
|
222
|
+
for param_group in updated_parameters:
|
|
219
223
|
log_msg = f"Storing data for {param_group}.."
|
|
220
224
|
logger.info(log_msg)
|
|
221
225
|
progress_callback(AnalysisStatusEvent(msg=log_msg))
|
|
@@ -241,7 +245,7 @@ def analysis_EnIF(
|
|
|
241
245
|
)
|
|
242
246
|
_copy_unupdated_parameters(
|
|
243
247
|
list(source_ensemble.experiment.parameter_configuration.keys()),
|
|
244
|
-
|
|
248
|
+
updated_parameters,
|
|
245
249
|
iens_active_index,
|
|
246
250
|
source_ensemble,
|
|
247
251
|
target_ensemble,
|
ert/analysis/_update_commons.py
CHANGED
|
@@ -331,11 +331,12 @@ def _all_parameters(
|
|
|
331
331
|
) -> npt.NDArray[np.float64]:
|
|
332
332
|
"""Return all parameters in assimilation problem"""
|
|
333
333
|
|
|
334
|
-
|
|
335
|
-
|
|
334
|
+
groups_to_update = [
|
|
335
|
+
k for k, v in ensemble.experiment.parameter_configuration.items() if v.update
|
|
336
|
+
]
|
|
336
337
|
param_arrays = [
|
|
337
338
|
ensemble.load_parameters_numpy(param_group, iens_active_index)
|
|
338
|
-
for param_group in
|
|
339
|
+
for param_group in groups_to_update
|
|
339
340
|
]
|
|
340
341
|
|
|
341
342
|
return np.vstack(param_arrays)
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
+
import math
|
|
5
6
|
import os
|
|
6
7
|
import time
|
|
7
8
|
from collections.abc import Iterable, Mapping
|
|
@@ -22,6 +23,7 @@ from ert.config import (
|
|
|
22
23
|
SurfaceConfig,
|
|
23
24
|
)
|
|
24
25
|
from ert.config.design_matrix import DESIGN_MATRIX_GROUP
|
|
26
|
+
from ert.config.distribution import LogNormalSettings, LogUnifSettings
|
|
25
27
|
from ert.config.ert_config import create_forward_model_json
|
|
26
28
|
from ert.substitutions import Substitutions, substitute_runpath_name
|
|
27
29
|
from ert.utils import log_duration
|
|
@@ -128,6 +130,7 @@ def _generate_parameter_files(
|
|
|
128
130
|
df = fs._load_scalar_keys(keys=keys, realizations=iens, transformed=True)
|
|
129
131
|
scalar_data = df.to_dicts()[0]
|
|
130
132
|
exports: dict[str, dict[str, float | str]] = {}
|
|
133
|
+
log_exports: dict[str, dict[str, float | str]] = {}
|
|
131
134
|
for param in parameter_configs:
|
|
132
135
|
# For the first iteration we do not write the parameter
|
|
133
136
|
# to run path, as we expect to read if after the forward
|
|
@@ -135,16 +138,34 @@ def _generate_parameter_files(
|
|
|
135
138
|
if param.forward_init and iteration == 0:
|
|
136
139
|
continue
|
|
137
140
|
export_values: dict[str, dict[str, float | str]] | None = None
|
|
141
|
+
log_export_values: dict[str, dict[str, float | str]] | None = {}
|
|
138
142
|
if param.name in scalar_data:
|
|
139
|
-
|
|
143
|
+
scalar_value = scalar_data[param.name]
|
|
144
|
+
export_values = {param.group_name: {param.name: scalar_value}}
|
|
145
|
+
if isinstance(param, GenKwConfig) and isinstance(
|
|
146
|
+
param.distribution, (LogNormalSettings, LogUnifSettings)
|
|
147
|
+
):
|
|
148
|
+
if isinstance(scalar_value, float) and scalar_value > 0:
|
|
149
|
+
log_value = math.log10(scalar_value)
|
|
150
|
+
log_export_values = {
|
|
151
|
+
f"LOG10_{param.group_name}": {param.name: log_value}
|
|
152
|
+
}
|
|
153
|
+
else:
|
|
154
|
+
logger.warning(
|
|
155
|
+
"Could not export the log10 value of "
|
|
156
|
+
f"{scalar_value} as it is invalid"
|
|
157
|
+
)
|
|
140
158
|
else:
|
|
141
159
|
export_values = param.write_to_runpath(Path(run_path), iens, fs)
|
|
142
160
|
if export_values:
|
|
143
161
|
for group, vals in export_values.items():
|
|
144
162
|
exports.setdefault(group, {}).update(vals)
|
|
163
|
+
if log_export_values:
|
|
164
|
+
for group, vals in log_export_values.items():
|
|
165
|
+
log_exports.setdefault(group, {}).update(vals)
|
|
145
166
|
continue
|
|
146
167
|
|
|
147
|
-
_value_export_txt(run_path, export_base_name, exports)
|
|
168
|
+
_value_export_txt(run_path, export_base_name, exports | log_exports)
|
|
148
169
|
_value_export_json(run_path, export_base_name, exports)
|
|
149
170
|
return exports
|
|
150
171
|
|
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 = '17.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (17, 1,
|
|
31
|
+
__version__ = version = '17.1.9'
|
|
32
|
+
__version_tuple__ = version_tuple = (17, 1, 9)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g37d22236c'
|
|
@@ -31,9 +31,9 @@ ert/substitutions.py,sha256=k3dMj0-GWmE1F-kuVPkK36ekvmoPAx5NdxdcxhUrQSo,4561
|
|
|
31
31
|
ert/trace.py,sha256=m2ZjKd1nf7LjBM2lL0fk1cNF04HnQs8blZhQbTXgcB0,1274
|
|
32
32
|
ert/workflow_runner.py,sha256=veKEZBRnyMoErFpABRKLreMJvgVoN7UENbJssqmKW7w,7298
|
|
33
33
|
ert/analysis/__init__.py,sha256=NNLGQG9gex6lJ8IZjEg_tXTfSeJceRA9zjOek-UeY0Y,591
|
|
34
|
-
ert/analysis/_enif_update.py,sha256=
|
|
34
|
+
ert/analysis/_enif_update.py,sha256=Oh9oUiMLbBT8o3TPl9x3ZR24gqBpIn6nFPwrOjMNtnY,7654
|
|
35
35
|
ert/analysis/_es_update.py,sha256=tav1ku3uqPBPDqDfVzsMS1gi5Zn0lRk_oXqt2LZolPs,16592
|
|
36
|
-
ert/analysis/_update_commons.py,sha256=
|
|
36
|
+
ert/analysis/_update_commons.py,sha256=2kf7e9iFs_jBO_qGur6gvoolK2zrnIs9GRwTvCVhcSo,12054
|
|
37
37
|
ert/analysis/event.py,sha256=vBYqtTl5DXePPWHTLX9bROmGTD2ixcrQh4K07g-UikM,2248
|
|
38
38
|
ert/analysis/misfit_preprocessor.py,sha256=2MjlL2yIg5KQpqWiD3675-hoy_5QM49pWQ7VXK4rous,8001
|
|
39
39
|
ert/analysis/snapshots.py,sha256=rLMxg4y5dlA_GZ2ETnZilfmggsqDm3O8Fiuq2xpshz8,2106
|
|
@@ -367,7 +367,7 @@ ert/resources/workflows/jobs/shell/MOVE_DIRECTORY,sha256=Lh_u0-eCr5Usa8Xien44d6q
|
|
|
367
367
|
ert/resources/workflows/jobs/shell/MOVE_FILE,sha256=MET6aPtDTVaoEDiTZqKqx_hRayJP3Gn-yubdwrJqpjw,48
|
|
368
368
|
ert/resources/workflows/jobs/shell/SYMLINK,sha256=P6wYoLM6y7IqzJQE5ZWkKEj7ERfK9VTRJa6N1pKigeg,46
|
|
369
369
|
ert/run_models/__init__.py,sha256=MWZL_nWbAarzw8Ltuy1kU0LyZpxP07Nk86wGHwOQEv8,936
|
|
370
|
-
ert/run_models/_create_run_path.py,sha256=
|
|
370
|
+
ert/run_models/_create_run_path.py,sha256=sLOfSigHWRYuwec4Fm9nP1uYfmd4u7LSgGyzDJ1e9Mo,11178
|
|
371
371
|
ert/run_models/ensemble_experiment.py,sha256=dUOSNh8a8jKNoBesirvQU0qUUvZ1jcaCTCS1T4s0KCY,2833
|
|
372
372
|
ert/run_models/ensemble_information_filter.py,sha256=CN-yX3DJlRI7qMaLcEdTgpJMptVjU8d4c7o9HX61PQ0,1039
|
|
373
373
|
ert/run_models/ensemble_smoother.py,sha256=CEdcGSAo_yW3Sfvh3OjQjnhGcwwErDkq7aFZBkKsNOo,3623
|
|
@@ -397,7 +397,7 @@ ert/services/storage_service.py,sha256=3hiQ5MVDD1ozFgndcy6HadK0qPVS1FAmL4P5p2LFf
|
|
|
397
397
|
ert/services/webviz_ert_service.py,sha256=J5vznqb_-DjlDMOze7tdvuBE4GWEPgJ5dIIXvRLKd0Y,650
|
|
398
398
|
ert/shared/__init__.py,sha256=OwgL-31MxA0fabETJ5Svw0tqJpHi569CZDRFHdHiqA0,644
|
|
399
399
|
ert/shared/net_utils.py,sha256=DDHIZLHdBnh7ZZ--1s-FUlsoNTSJJsfHmLQE44E2JqU,5324
|
|
400
|
-
ert/shared/version.py,sha256=
|
|
400
|
+
ert/shared/version.py,sha256=uJeJEMKM6ycEOGW1VQzG0q2Pqrjz4rEMC4JjzCXVs28,714
|
|
401
401
|
ert/shared/_doc_utils/__init__.py,sha256=zSl-NUpWLF167PVTvfjn0T50gExjvyWPw5OGq5Bt2Dc,983
|
|
402
402
|
ert/shared/_doc_utils/ert_jobs.py,sha256=425Ol3pk-rIjyQxoopAijKV-YiAESJy3yyoukBQle4s,8116
|
|
403
403
|
ert/shared/_doc_utils/everest_jobs.py,sha256=uBDN7tIwlBJIZVZ6ZFL1tkewEJJGDLoeVrFIIrJznvM,2081
|
|
@@ -449,13 +449,13 @@ ert/validation/validation_status.py,sha256=f47_B7aS-9DEh6uaVzKxD97pXienkyTVVCqTy
|
|
|
449
449
|
ert/warnings/__init__.py,sha256=IBwQVkdD7Njaad9PAB-9K-kr15wnA4EBKboxyqgu9NA,214
|
|
450
450
|
ert/warnings/_warnings.py,sha256=7qhNZ0W4nnljzoOx6AXX7VlMv5pa34Ek5M5n1Ep0Kak,189
|
|
451
451
|
ert/warnings/specific_warning_handler.py,sha256=5dVXtOhzcMmtPBGx4AOddXNPfzTFOPA7RVtdH8hLv68,932
|
|
452
|
-
ert-17.1.
|
|
452
|
+
ert-17.1.9.dist-info/licenses/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
453
453
|
everest/__init__.py,sha256=8_f50f6H3-onqaiuNCwC0Eiotdl9JuTxhwyF_54MVvU,306
|
|
454
454
|
everest/config_file_loader.py,sha256=7cOcT0nwsZ_bhqDkyZ60sIvh1kL2sG1gURqF3IHQ4hc,5287
|
|
455
455
|
everest/everest_storage.py,sha256=nfaTdab9kPlXZQiZWRR-Y7Zb-2kyQNhF0B914bU1IDQ,42269
|
|
456
456
|
everest/strings.py,sha256=byT2Su4swYFcyyB36pCVvaMqxNnu8kyYfCOg8sv6LkA,1016
|
|
457
457
|
everest/api/__init__.py,sha256=_me3w2C92NQpPX2RrJ28IfQiXNif5-f2dN9Qg4HzbgY,86
|
|
458
|
-
everest/api/everest_data_api.py,sha256
|
|
458
|
+
everest/api/everest_data_api.py,sha256=-W_Qot75zJ6xl2M7S3SyL1SXGLcgpeopmMUSS8jSmHg,10333
|
|
459
459
|
everest/assets/everest_logo.svg,sha256=1GDy-tJYQSean8f_WWTlcKPhv1Wsb_xhFzXe3Gguke4,12048
|
|
460
460
|
everest/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
461
461
|
everest/bin/config_branch_script.py,sha256=qrSOqCYsiCi24k_Gj_Xg2s_QH3tqaPxmx-IrDAaiWQE,5138
|
|
@@ -516,8 +516,8 @@ everest/templates/well_drill.tmpl,sha256=9iLexmBHMsMQNXyyRK4GlmVuVpVIxRcCHpy1av5
|
|
|
516
516
|
everest/templates/well_order.tmpl,sha256=XJ1eVRkeyTdLu5sLsltJSSK6BDLN7rFOAqLdM3ZZy3w,75
|
|
517
517
|
everest/util/__init__.py,sha256=xEYLz6pUtgkH8VHer1RfoCwKiO70dBnuhHonsOPaOx0,1359
|
|
518
518
|
everest/util/forward_models.py,sha256=JPxHhLI6TrmQJwW50wwGBmw57TfRd8SG2svYhXFHrc8,1617
|
|
519
|
-
ert-17.1.
|
|
520
|
-
ert-17.1.
|
|
521
|
-
ert-17.1.
|
|
522
|
-
ert-17.1.
|
|
523
|
-
ert-17.1.
|
|
519
|
+
ert-17.1.9.dist-info/METADATA,sha256=ICE3O9TkVJ-T6JK2CeeROGZG0TCL9mLKUpx69TfH0YU,10005
|
|
520
|
+
ert-17.1.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
521
|
+
ert-17.1.9.dist-info/entry_points.txt,sha256=ChZ7vn8Qy9v9rT8GM2JtAvWDN3NVoy4BIcvVRtU73CM,189
|
|
522
|
+
ert-17.1.9.dist-info/top_level.txt,sha256=LRh9GfdfyDWfAGmrQgp_XdoMHA4v6aotw8xgsy5YyHE,17
|
|
523
|
+
ert-17.1.9.dist-info/RECORD,,
|
everest/api/everest_data_api.py
CHANGED
|
@@ -224,6 +224,8 @@ class EverestDataAPI:
|
|
|
224
224
|
assert self._config.storage_dir
|
|
225
225
|
storage = open_storage(self._config.storage_dir, "r")
|
|
226
226
|
experiment = next(storage.experiments)
|
|
227
|
+
identical_columns_in_all_batches: bool = True
|
|
228
|
+
summary_columns: list[str] | None = None
|
|
227
229
|
for batch_id in batches:
|
|
228
230
|
try:
|
|
229
231
|
ensemble = experiment.get_ensemble_by_name(f"batch_{batch_id}")
|
|
@@ -238,6 +240,10 @@ class EverestDataAPI:
|
|
|
238
240
|
summary = summary.pivot(
|
|
239
241
|
on="response_key", index=["realization", "time"], sort_columns=True
|
|
240
242
|
)
|
|
243
|
+
if summary_columns is None:
|
|
244
|
+
summary_columns = summary.columns
|
|
245
|
+
identical_columns_in_all_batches &= summary_columns == summary.columns
|
|
246
|
+
|
|
241
247
|
# The 'Realization' column exported by ert are
|
|
242
248
|
# the 'simulations' of everest.
|
|
243
249
|
summary = summary.rename({"time": "date", "realization": "simulation"})
|
|
@@ -265,7 +271,14 @@ class EverestDataAPI:
|
|
|
265
271
|
|
|
266
272
|
data_frames.append(summary)
|
|
267
273
|
storage.close()
|
|
268
|
-
return
|
|
274
|
+
return (
|
|
275
|
+
pl.concat(
|
|
276
|
+
data_frames,
|
|
277
|
+
how="vertical" if identical_columns_in_all_batches else "diagonal",
|
|
278
|
+
)
|
|
279
|
+
if data_frames
|
|
280
|
+
else pl.DataFrame()
|
|
281
|
+
)
|
|
269
282
|
|
|
270
283
|
@property
|
|
271
284
|
def output_folder(self) -> str:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|