Skip to content

Commit 2559b7a

Browse files
Handle parameters from parameters.txt with DESIGN_MATRIX prefix (#1333)
1 parent bf33225 commit 2559b7a

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

webviz_subsurface/_providers/ensemble_table_provider/ensemble_table_provider_factory.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
from webviz_config.webviz_factory_registry import WEBVIZ_FACTORY_REGISTRY
1111
from webviz_config.webviz_instance_info import WebvizRunMode
1212

13+
from webviz_subsurface._utils.design_matrix import (
14+
rename_design_matrix_parameter_columns,
15+
)
1316
from webviz_subsurface._utils.perf_timer import PerfTimer
1417

1518
from ..ensemble_summary_provider._arrow_unsmry_import import (
@@ -283,6 +286,7 @@ def create_from_per_realization_parameter_file(
283286
raise ValueError(
284287
f"Failed to load 'parameter.txt' files for ensemble {ens_path}."
285288
)
289+
ensemble_df = rename_design_matrix_parameter_columns(ensemble_df)
286290

287291
elapsed_load_parameters_s = timer.lap_s()
288292

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import logging
2+
3+
import pandas as pd
4+
5+
LOGGER = logging.getLogger(__name__)
6+
7+
8+
def rename_design_matrix_parameter_columns(parameter_df: pd.DataFrame) -> pd.DataFrame:
9+
"""Given a dataframe of parameters, checks if the DESIGN_MATRIX prefix is present.
10+
If present assume this is a design matrix run. Return the dataframe with the prefix
11+
removed. Also do a check if removing the prefix result in any duplicates.
12+
If duplicates remove those and give a warning.
13+
"""
14+
15+
if any(col.startswith("DESIGN_MATRIX:") for col in parameter_df.columns):
16+
original_columns = parameter_df.columns
17+
stripped_columns = original_columns.str.replace(
18+
r"^DESIGN_MATRIX:", "", regex=True
19+
)
20+
rename_map = {
21+
old: new
22+
for old, new in zip(original_columns, stripped_columns)
23+
if old != new
24+
}
25+
conflict_names = set(rename_map.values()) & set(original_columns)
26+
if conflict_names:
27+
LOGGER.info(
28+
"DESIGN_MATRIX run detected, but non design matrix parameters was found."
29+
)
30+
LOGGER.info(
31+
f"The following parameters will be dropped: {sorted(conflict_names)}"
32+
)
33+
parameter_df = parameter_df.drop(columns=conflict_names)
34+
35+
parameter_df = parameter_df.rename(columns=rename_map)
36+
return parameter_df

0 commit comments

Comments
 (0)