Skip to content

Commit 0834507

Browse files
committed
Export LOG_10 prefixes values of LOG gen_kw parameters
This commit makes _generate_parameter_files() export the log genkw parameters with LOG10_ prefix, in addition to the normal way of exporting. This is only in parameters.txt, parameters.json will be the same as before. (cherry picked from commit 578bdea)
1 parent f916ce0 commit 0834507

2 files changed

Lines changed: 41 additions & 4 deletions

File tree

src/ert/run_models/_create_run_path.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import json
44
import logging
5+
import math
56
import os
67
import time
78
from collections.abc import Iterable, Mapping
@@ -22,6 +23,7 @@
2223
SurfaceConfig,
2324
)
2425
from ert.config.design_matrix import DESIGN_MATRIX_GROUP
26+
from ert.config.distribution import LogNormalSettings, LogUnifSettings
2527
from ert.config.ert_config import create_forward_model_json
2628
from ert.substitutions import Substitutions, substitute_runpath_name
2729
from ert.utils import log_duration
@@ -128,23 +130,42 @@ def _generate_parameter_files(
128130
df = fs._load_scalar_keys(keys=keys, realizations=iens, transformed=True)
129131
scalar_data = df.to_dicts()[0]
130132
exports: dict[str, dict[str, float | str]] = {}
133+
log_exports: dict[str, dict[str, float | str]] = {}
131134
for param in parameter_configs:
132135
# For the first iteration we do not write the parameter
133136
# to run path, as we expect to read if after the forward
134137
# model has completed.
135138
if param.forward_init and iteration == 0:
136139
continue
137140
export_values: dict[str, dict[str, float | str]] | None = None
141+
log_export_values: dict[str, dict[str, float | str]] | None = {}
138142
if param.name in scalar_data:
139-
export_values = {param.group_name: {param.name: scalar_data[param.name]}}
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+
)
140158
else:
141159
export_values = param.write_to_runpath(Path(run_path), iens, fs)
142160
if export_values:
143161
for group, vals in export_values.items():
144162
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)
145166
continue
146167

147-
_value_export_txt(run_path, export_base_name, exports)
168+
_value_export_txt(run_path, export_base_name, exports | log_exports)
148169
_value_export_json(run_path, export_base_name, exports)
149170
return exports
150171

tests/ert/unit_tests/config/test_gen_kw_config.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,30 @@ def test_gen_kw_config_get_priors(spec, expected):
153153
"distribution, expect_log, parameters_regex",
154154
[
155155
("NORMAL 0 1", False, r"KW_NAME:MY_KEYWORD " + number_regex),
156-
("LOGNORMAL 0 1", True, r"KW_NAME:MY_KEYWORD " + number_regex + r"\n"),
156+
(
157+
"LOGNORMAL 0 1",
158+
True,
159+
r"KW_NAME:MY_KEYWORD "
160+
+ number_regex
161+
+ r"\n"
162+
+ r"LOG10_KW_NAME:MY_KEYWORD "
163+
+ number_regex,
164+
),
157165
("UNIFORM 0 1", False, r"KW_NAME:MY_KEYWORD " + number_regex),
158166
(
159167
"TRUNCATED_NORMAL 1 0.25 0 10",
160168
False,
161169
r"KW_NAME:MY_KEYWORD " + number_regex,
162170
),
163-
("LOGUNIF 0.0001 1", True, r"KW_NAME:MY_KEYWORD " + number_regex),
171+
(
172+
"LOGUNIF 0.0001 1",
173+
True,
174+
r"KW_NAME:MY_KEYWORD "
175+
+ number_regex
176+
+ r"\n"
177+
+ r"LOG10_KW_NAME:MY_KEYWORD "
178+
+ number_regex,
179+
),
164180
("CONST 1.0", False, "KW_NAME:MY_KEYWORD 1\n"),
165181
("DUNIF 5 1 5", False, r"KW_NAME:MY_KEYWORD " + number_regex),
166182
("ERRF 1 2 0.1 0.1", False, r"KW_NAME:MY_KEYWORD " + number_regex),

0 commit comments

Comments
 (0)