webviz-subsurface 0.2.38__py3-none-any.whl → 0.2.39__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.
@@ -2,7 +2,10 @@
2
2
  import pandas as pd
3
3
  import pytest
4
4
 
5
- from webviz_subsurface._components.tornado._tornado_data import TornadoData
5
+ from webviz_subsurface._components.tornado._tornado_data import (
6
+ SensitivityType,
7
+ TornadoData,
8
+ )
6
9
 
7
10
 
8
11
  def test_tornado_data_init():
@@ -36,6 +39,7 @@ def test_tornado_data_init():
36
39
  "values": 11.0,
37
40
  "values_ref": -26.666666666666668,
38
41
  "reals": [0],
42
+ "senstype": "mc",
39
43
  }
40
44
  low_high_list = tornado_data._calculate_tornado_low_high_list(avg_list)
41
45
  assert low_high_list[0] == {
@@ -52,6 +56,7 @@ def test_tornado_data_init():
52
56
  "high_tooltip": 26.666666666666668,
53
57
  "true_high": 19.0,
54
58
  "high_reals": [1],
59
+ "senstype": "mc",
55
60
  }
56
61
 
57
62
  tornado_data = TornadoData(
@@ -72,6 +77,7 @@ def test_tornado_data_init():
72
77
  "high_tooltip": 13.5,
73
78
  "true_high": 19.0,
74
79
  "high_reals": [0, 1],
80
+ "senstype": SensitivityType.MONTE_CARLO,
75
81
  },
76
82
  {
77
83
  "low": 0.0,
@@ -87,6 +93,7 @@ def test_tornado_data_init():
87
93
  "high_tooltip": 0.0,
88
94
  "true_high": 5.5,
89
95
  "high_reals": [2, 3],
96
+ "senstype": SensitivityType.SCALAR,
90
97
  },
91
98
  {
92
99
  "low": 0.0,
@@ -102,6 +109,7 @@ def test_tornado_data_init():
102
109
  "high_tooltip": 20.0,
103
110
  "true_high": 25.5,
104
111
  "high_reals": [4, 5],
112
+ "senstype": SensitivityType.SCALAR,
105
113
  },
106
114
  {
107
115
  "low": 0.0,
@@ -117,5 +125,6 @@ def test_tornado_data_init():
117
125
  "high_tooltip": 5.300000000000001,
118
126
  "true_high": 10.8,
119
127
  "high_reals": [6, 7],
128
+ "senstype": SensitivityType.MONTE_CARLO,
120
129
  },
121
130
  ]
@@ -5,7 +5,7 @@ import plotly.graph_objects as go
5
5
 
6
6
  from webviz_subsurface._abbreviations.number_formatting import si_prefixed
7
7
 
8
- from ._tornado_data import TornadoData
8
+ from ._tornado_data import SensitivityType, TornadoData
9
9
 
10
10
 
11
11
  class TornadoBarChart:
@@ -136,9 +136,25 @@ class TornadoBarChart:
136
136
  hovertext.append(text)
137
137
  return hovertext
138
138
 
139
+ def get_sensitivity_colors(self, case: str) -> List:
140
+ """Create color list for bars based on sensitivity type
141
+ If colors are set by sensitivity, just create a color per sensitivty.
142
+ If not handle scalar and mc sensitivities separately.
143
+ For scalar, that is sensitivities with two "cases", use separate colors for each case.
144
+ For mc, use one color.
145
+ """
146
+ if self._color_by_sens:
147
+ return self.create_color_list(self._tornadotable["sensname"])
148
+ colors = []
149
+ for _, row in self._tornadotable.iterrows():
150
+ if row["senstype"] == SensitivityType.MONTE_CARLO or case == "low":
151
+ colors.append(self._plotly_theme["layout"]["colorway"][0])
152
+ else:
153
+ colors.append(self._plotly_theme["layout"]["colorway"][1])
154
+ return colors
155
+
139
156
  @property
140
157
  def data(self) -> List:
141
- colors = self.create_color_list(self._tornadotable["sensname"].unique())
142
158
  return [
143
159
  {
144
160
  "type": "bar",
@@ -157,7 +173,7 @@ class TornadoBarChart:
157
173
  "orientation": "h",
158
174
  "marker": {
159
175
  "line": {"width": 1.5, "color": "black"},
160
- "color": colors if self._color_by_sens else None,
176
+ "color": self.get_sensitivity_colors("low"),
161
177
  },
162
178
  },
163
179
  {
@@ -177,7 +193,7 @@ class TornadoBarChart:
177
193
  "orientation": "h",
178
194
  "marker": {
179
195
  "line": {"width": 1.5, "color": "black"},
180
- "color": colors if self._color_by_sens else None,
196
+ "color": self.get_sensitivity_colors("high"),
181
197
  },
182
198
  },
183
199
  ]
@@ -193,6 +209,15 @@ class TornadoBarChart:
193
209
 
194
210
  @property
195
211
  def scatter_data(self) -> List[Dict]:
212
+ def get_color(case_name_arr: pd.Series, case_type_arr: pd.Series) -> List:
213
+ colors = []
214
+ for case_name, case_type in zip(case_name_arr, case_type_arr):
215
+ if case_name == "low" or case_type == SensitivityType.MONTE_CARLO:
216
+ colors.append(self._plotly_theme["layout"]["colorway"][0])
217
+ else:
218
+ colors.append(self._plotly_theme["layout"]["colorway"][1])
219
+ return colors
220
+
196
221
  return [
197
222
  {
198
223
  "type": "scatter",
@@ -202,14 +227,9 @@ class TornadoBarChart:
202
227
  "text": df["REAL"],
203
228
  "hovertemplate": "REAL: <b>%{text}</b><br>"
204
229
  + "X: <b>%{x:.1f}</b> <extra></extra>",
205
- "marker": {
206
- "size": 15,
207
- "color": self._plotly_theme["layout"]["colorway"][0]
208
- if case == "low"
209
- else self._plotly_theme["layout"]["colorway"][1],
210
- },
230
+ "marker": {"size": 15, "color": get_color(df["case"], df["casetype"])},
211
231
  }
212
- for case, df in self._realtable.groupby("case")
232
+ for _, df in self._realtable.groupby("case")
213
233
  ]
214
234
 
215
235
  @property
@@ -3,6 +3,15 @@ from typing import Dict, List, Optional, Union
3
3
  import numpy as np
4
4
  import pandas as pd
5
5
 
6
+ from webviz_subsurface._utils.enum_shim import StrEnum
7
+
8
+
9
+ class SensitivityType(StrEnum):
10
+ """Sensitivity types used in Tornado analysis."""
11
+
12
+ SCALAR = "scalar"
13
+ MONTE_CARLO = "mc"
14
+
6
15
 
7
16
  class TornadoData:
8
17
  REQUIRED_COLUMNS = ["REAL", "SENSNAME", "SENSCASE", "SENSTYPE", "VALUE"]
@@ -50,7 +59,11 @@ class TornadoData:
50
59
  def _create_real_df(self, dframe: pd.DataFrame) -> pd.DataFrame:
51
60
  """Make dataframe with value and case info per realization"""
52
61
  realdf = dframe[self.REQUIRED_COLUMNS].rename(
53
- columns={"SENSNAME": "sensname", "SENSCASE": "senscase"}
62
+ columns={
63
+ "SENSNAME": "sensname",
64
+ "SENSCASE": "senscase",
65
+ "SENSTYPE": "senstype",
66
+ }
54
67
  )
55
68
 
56
69
  sensitivities = self._tornadotable["sensname"].unique()
@@ -61,7 +74,7 @@ class TornadoData:
61
74
  casemask = realdf["REAL"].isin(val[f"real_{case}"])
62
75
  realdf.loc[casemask, "case"] = case
63
76
 
64
- mc_mask = realdf["SENSTYPE"] == "mc"
77
+ mc_mask = realdf["senstype"] == "mc"
65
78
  realdf["casetype"] = np.where(mc_mask, "mc", realdf["case"])
66
79
  realdf["sensname_case"] = np.where(
67
80
  mc_mask,
@@ -127,6 +140,7 @@ class TornadoData:
127
140
  sens_case_df["VALUE"].mean()
128
141
  ),
129
142
  "reals": list(map(int, sens_case_df["REAL"])),
143
+ "senstype": SensitivityType.SCALAR,
130
144
  }
131
145
  )
132
146
  # If `SENSTYPE` is monte carlo get p10, p90
@@ -162,6 +176,7 @@ class TornadoData:
162
176
  "values": p90,
163
177
  "values_ref": self._scale_to_ref(p90),
164
178
  "reals": low_reals,
179
+ "senstype": SensitivityType.MONTE_CARLO,
165
180
  }
166
181
  )
167
182
  avg_per_sensitivity.append(
@@ -171,6 +186,7 @@ class TornadoData:
171
186
  "values": p10,
172
187
  "values_ref": self._scale_to_ref(p10),
173
188
  "reals": high_reals,
189
+ "senstype": SensitivityType.MONTE_CARLO,
174
190
  }
175
191
  )
176
192
 
@@ -198,6 +214,7 @@ class TornadoData:
198
214
  high["reals"] = []
199
215
  high["senscase"] = None
200
216
  high["values"] = self.reference_average
217
+
201
218
  else:
202
219
  low = (
203
220
  low.copy()
@@ -218,6 +235,7 @@ class TornadoData:
218
235
  "true_low": low["values"],
219
236
  "low_reals": low["reals"],
220
237
  "sensname": sensname,
238
+ "senstype": sens_name_df["senstype"].unique()[0],
221
239
  "high": self.calc_high_x(low["values_ref"], high["values_ref"]),
222
240
  "high_base": self.calc_high_base(
223
241
  low["values_ref"], high["values_ref"]
@@ -10,6 +10,9 @@ from webviz_config.webviz_factory import WebvizFactory
10
10
  from webviz_config.webviz_factory_registry import WEBVIZ_FACTORY_REGISTRY
11
11
  from webviz_config.webviz_instance_info import WebvizRunMode
12
12
 
13
+ from webviz_subsurface._utils.design_matrix import (
14
+ rename_design_matrix_parameter_columns,
15
+ )
13
16
  from webviz_subsurface._utils.perf_timer import PerfTimer
14
17
 
15
18
  from ..ensemble_summary_provider._arrow_unsmry_import import (
@@ -283,6 +286,7 @@ class EnsembleTableProviderFactory(WebvizFactory):
283
286
  raise ValueError(
284
287
  f"Failed to load 'parameter.txt' files for ensemble {ens_path}."
285
288
  )
289
+ ensemble_df = rename_design_matrix_parameter_columns(ensemble_df)
286
290
 
287
291
  elapsed_load_parameters_s = timer.lap_s()
288
292
 
@@ -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
@@ -2,6 +2,7 @@ from webviz_config.utils import StrEnum
2
2
 
3
3
 
4
4
  class VisualizationType(StrEnum):
5
+ HISTOGRAM = "histogram"
5
6
  DISTRIBUTION = "distribution"
6
7
  BOX = "box"
7
8
  STAT_TABLE = "stat-table"
@@ -8,6 +8,8 @@ from webviz_config import WebvizConfigTheme
8
8
  from webviz_subsurface._figures import create_figure
9
9
  from webviz_subsurface._models.parameter_model import ParametersModel as Pmodel
10
10
 
11
+ from .._types import VisualizationType
12
+
11
13
 
12
14
  class ParametersModel:
13
15
  """Class to process and visualize ensemble parameter data"""
@@ -163,7 +165,7 @@ class ParametersModel:
163
165
  self,
164
166
  ensembles: list,
165
167
  parameters: List[Any],
166
- plot_type: str = "distribution",
168
+ plot_type: VisualizationType = VisualizationType.DISTRIBUTION,
167
169
  ) -> go.Figure:
168
170
  """Create subplots for selected parameters"""
169
171
  df = self.dataframe_melted.copy()
@@ -171,7 +173,7 @@ class ParametersModel:
171
173
  df = df[df["PARAMETER"].isin(parameters)]
172
174
  df = self._sort_parameters_col(df, parameters)
173
175
 
174
- return (
176
+ figure = (
175
177
  create_figure(
176
178
  plot_type=plot_type,
177
179
  data_frame=df,
@@ -179,6 +181,7 @@ class ParametersModel:
179
181
  facet_col="PARAMETER",
180
182
  color="ENSEMBLE",
181
183
  color_discrete_sequence=self.colorway,
184
+ barmode="overlay",
182
185
  )
183
186
  .update_xaxes(matches=None)
184
187
  .for_each_trace(
@@ -189,6 +192,11 @@ class ParametersModel:
189
192
  )
190
193
  )
191
194
  )
195
+ # Use bingroup=None so that Plotly calculates bins per trace
196
+ # This also means that individual ensembles will have separate binning.
197
+ if plot_type == VisualizationType.HISTOGRAM:
198
+ figure.update_traces(bingroup=None)
199
+ return figure
192
200
 
193
201
  def get_stat_value(self, parameter: str, ensemble: str, stat_column: str) -> float:
194
202
  """
@@ -20,6 +20,7 @@ class ParamDistVisualizationType(SettingsGroupABC):
20
20
  wcc.RadioItems(
21
21
  id=self.register_component_unique_id(self.Ids.VISUALIZATION_TYPE),
22
22
  options=[
23
+ {"label": "Histogram", "value": VisualizationType.HISTOGRAM},
23
24
  {
24
25
  "label": "Distribution plots",
25
26
  "value": VisualizationType.DISTRIBUTION,
@@ -30,7 +31,7 @@ class ParamDistVisualizationType(SettingsGroupABC):
30
31
  "value": VisualizationType.STAT_TABLE,
31
32
  },
32
33
  ],
33
- value=VisualizationType.DISTRIBUTION,
34
+ value=VisualizationType.HISTOGRAM,
34
35
  vertical=True,
35
36
  )
36
37
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webviz-subsurface
3
- Version: 0.2.38
3
+ Version: 0.2.39
4
4
  Summary: Webviz config plugins for subsurface data
5
5
  Home-page: https://github.com/equinor/webviz-subsurface
6
6
  Author: R&T Equinor
@@ -19,7 +19,7 @@ tests/unit_tests/model_tests/test_well_attributes_model.py,sha256=9C22NFoAz456x1
19
19
  tests/unit_tests/model_tests/test_well_set_model.py,sha256=5dzJwOP6ocyQRhx4Rer2gdxk_XS_KuBdiYlLaYjX-Rw,2081
20
20
  tests/unit_tests/plugin_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  tests/unit_tests/plugin_tests/test_grouptree.py,sha256=7Lf16VF-7E_bWNoON4WuCsmwFazkdd1Dx_2xWtPqnno,5820
22
- tests/unit_tests/plugin_tests/test_tornado_data.py,sha256=5zZ5IW65SOmwxrpJBex0ifKn7MBK3ZB6Iwg8aK8kNis,3879
22
+ tests/unit_tests/plugin_tests/test_tornado_data.py,sha256=JFPY_zAQ9_ueW4vE4kLRw_2l8FJPA1ImlIpYnpyLTzY,4163
23
23
  tests/unit_tests/plugin_tests/test_well_completions.py,sha256=_Czv9r1pEgzGfJFJ1MVWR0gcbXWJLNZZCesGLYNqIl4,5244
24
24
  tests/unit_tests/plugin_tests/test_simulation_time_series/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  tests/unit_tests/plugin_tests/test_simulation_time_series/mocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -69,8 +69,8 @@ webviz_subsurface/_components/__init__.py,sha256=LA2-36i1GI92rAQK2CrZHCUeFQY4RBS
69
69
  webviz_subsurface/_components/color_picker.py,sha256=Zg73Ha8bmv3phg1LZHCDRP3xrpIVV1Zg1wmF9ql2ETs,8879
70
70
  webviz_subsurface/_components/parameter_filter.py,sha256=XO2BfpkbaY7bhuLK4M0gECBWK3_wd3tlVFMUPXdwvSs,22232
71
71
  webviz_subsurface/_components/tornado/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- webviz_subsurface/_components/tornado/_tornado_bar_chart.py,sha256=a6n0xV30JL8l8ow7E5axIkxu_jDTG1eyosMhx76SViY,11621
73
- webviz_subsurface/_components/tornado/_tornado_data.py,sha256=ukXCZNSFZfnZ-IiKjl1Zjdx_Q3t8EMwkEETNk9dnof0,12061
72
+ webviz_subsurface/_components/tornado/_tornado_bar_chart.py,sha256=3P2XTBSW-t9n0ayorhBBQmPJCfgr72FIceF6O0ImOdI,12695
73
+ webviz_subsurface/_components/tornado/_tornado_data.py,sha256=nld5vRq0I8Q_sQUod2vHsJkJEHCax8gfgXvYp4tnzvA,12603
74
74
  webviz_subsurface/_components/tornado/_tornado_table.py,sha256=idfm4j3MoROMjTNGz-g21rb_qWQu3-0OJSjFOgB3Ck4,2475
75
75
  webviz_subsurface/_components/tornado/tornado_widget.py,sha256=HdfwH70HAQQpZWt0yl8Pa3teZHCYTZJz-CCCPSRDy14,21547
76
76
  webviz_subsurface/_datainput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -167,7 +167,7 @@ webviz_subsurface/_providers/ensemble_table_provider/__init__.py,sha256=YxM91G6i
167
167
  webviz_subsurface/_providers/ensemble_table_provider/_field_metadata.py,sha256=vd6EDP00LPIQHsSwXLNaxkUl_Dw8objE3krlGCmT84w,543
168
168
  webviz_subsurface/_providers/ensemble_table_provider/_table_import.py,sha256=Y6_3KVgkXdBvuhC-LEIIHaatXxyC2LeJ2d6sQYIl8zE,5604
169
169
  webviz_subsurface/_providers/ensemble_table_provider/ensemble_table_provider.py,sha256=GuG88MnbS4RSIIsndxk2TGM-rJ-YWkrkSjj_qRM9ZO8,910
170
- webviz_subsurface/_providers/ensemble_table_provider/ensemble_table_provider_factory.py,sha256=mzTAl8ufbO4r2PU0aEtj9kNzsseJ_MGjq9z_J0fLZm4,14192
170
+ webviz_subsurface/_providers/ensemble_table_provider/ensemble_table_provider_factory.py,sha256=v32yheVa9YzBPJc-Wzr1k7OKj39sNAdSpUVk52_i7G0,14365
171
171
  webviz_subsurface/_providers/ensemble_table_provider/ensemble_table_provider_impl_arrow.py,sha256=ToDZGjRD--S38OkcQgAP7bt28_O52sxLh4M1MidGWgU,8901
172
172
  webviz_subsurface/_providers/well_provider/__init__.py,sha256=iw0VRgqEA6u77A5SKPuC0pcz9tRfJMkYgpv28Goy29w,131
173
173
  webviz_subsurface/_providers/well_provider/_provider_impl_file.py,sha256=X89ZPB8I9g9zDEV3xv-w2bK2vb-7-De9L4NrcDTtKJU,4011
@@ -178,6 +178,7 @@ webviz_subsurface/_providers/well_provider/well_server.py,sha256=XVgZhIsUEsVEFwB
178
178
  webviz_subsurface/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
179
  webviz_subsurface/_utils/colors.py,sha256=Ke_OOKMQYeBvzzlmd-7kshqqGbF2IpJEXGRrm7ss708,6184
180
180
  webviz_subsurface/_utils/dataframe_utils.py,sha256=BrnPO-iNfhhtna-lgeXjOupB23LGZqrpGYbxM7_qxq4,4209
181
+ webviz_subsurface/_utils/design_matrix.py,sha256=yyGVKYmhtzFbt1-1g3hmhVIi8YHeZuj3W_Q_wiHAGw8,1373
181
182
  webviz_subsurface/_utils/ensemble_summary_provider_set.py,sha256=qZAkUwAC9SPOYiIK4968h-_67cJhvJenJc6eGdv3oEM,5550
182
183
  webviz_subsurface/_utils/ensemble_summary_provider_set_factory.py,sha256=y6J1YRTYOvWprFdHKYqKKTAfs7nU3pvV7eCMRXyIQbg,2630
183
184
  webviz_subsurface/_utils/ensemble_table_provider_set.py,sha256=r1w3u4eEmNlC-YZHrdm6DSTZFyjJvJGB8oyZBSsB5MU,2904
@@ -302,10 +303,10 @@ webviz_subsurface/plugins/_map_viewer_fmu/layout.py,sha256=fUlMWbkegC9Y09ElxPtMK
302
303
  webviz_subsurface/plugins/_map_viewer_fmu/map_viewer_fmu.py,sha256=SDJJoOOMgvbrQJmvqL8KpidXmmaWqfp6ECOlO-8d0XQ,10412
303
304
  webviz_subsurface/plugins/_parameter_analysis/__init__.py,sha256=YIsJxDje9XN0Qyzk7wVrZ5GIfdqnwUnnbxAh1iHvoko,39
304
305
  webviz_subsurface/plugins/_parameter_analysis/_plugin.py,sha256=zoXVsOcHIBR4sR5nu5lSf6iQXcRSh_ciY4eM30-rbyk,5593
305
- webviz_subsurface/plugins/_parameter_analysis/_types.py,sha256=at_5vL34UHclHNFSxkqO694e35do87a_br_rpt9iud0,407
306
+ webviz_subsurface/plugins/_parameter_analysis/_types.py,sha256=g-2IPTqbpSbOV7jjuV45tWnR1b55yiFbiRrMNT9KBPo,435
306
307
  webviz_subsurface/plugins/_parameter_analysis/_utils/__init__.py,sha256=VSAGfgdhacGxYW9WCesfdpa5eQM_lsXGh_hPsF3SnSk,120
307
308
  webviz_subsurface/plugins/_parameter_analysis/_utils/_datetime_utils.py,sha256=p2SvffNUmShWsctynt34UGdm9mP4GSYa71pjn4xgSSQ,548
308
- webviz_subsurface/plugins/_parameter_analysis/_utils/_parameters_model.py,sha256=xNiL8tgv2Hs5rXwlSSB8uBRG68pNkiqPZfD8N6vX0e0,7852
309
+ webviz_subsurface/plugins/_parameter_analysis/_utils/_parameters_model.py,sha256=cmVBoU7ke9M8gYvLMdF3j9PQUi4rtLMCFzh29xC8k6o,8231
309
310
  webviz_subsurface/plugins/_parameter_analysis/_utils/_provider_timesseries_datamodel.py,sha256=70ATYNJEtHjNk-UoJUc9nC8Fziro5kuBl6yynMEbNqU,5394
310
311
  webviz_subsurface/plugins/_parameter_analysis/_views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
311
312
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_view/__init__.py,sha256=J7_qFYcZRB_wIIIiYOVfmJaehzo3HrSV25ueWLgOd2o,45
@@ -314,7 +315,7 @@ webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_vi
314
315
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_view/_settings/__init__.py,sha256=whY4RYk2U9hM0rkABSTC4dqxcDikPn5naPMBeP3qzgk,148
315
316
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_view/_settings/_ensembles.py,sha256=nOZNPmhoxn3L71Omm_5w0jdnkxxi9NO3TDx853ZrTAQ,1333
316
317
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_view/_settings/_parameters.py,sha256=GHKE0ZZZndc1jBjvLAitfaM5k5ARm0vxFWp2JPvTBBw,1628
317
- webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_view/_settings/_visualization_type.py,sha256=bDmtNgR8msaiERHv_DD-C6MhHoO9PxloUrFtBrAD3gU,1200
318
+ webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_distributions_view/_settings/_visualization_type.py,sha256=Nx8GVM2ng6dSgoduJ3uTW9oOhEK_prTKCXSEYYbsAk4,1279
318
319
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_response_view/__init__.py,sha256=7FsVn4FasBbUozc3TMF5rOjqL5nxCnA54P-ruPRe5Q8,41
319
320
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_response_view/_view.py,sha256=k3j1-oz7s_UN_nEvHa3cCsqmOQL5tkaqStD73xuyyFc,29763
320
321
  webviz_subsurface/plugins/_parameter_analysis/_views/_parameter_response_view/_view_element.py,sha256=9ymaq2WJx8z4ErEeJhG5I9W2PhrOuSgHEwGpSjLzw_g,556
@@ -600,10 +601,10 @@ webviz_subsurface/plugins/_well_log_viewer/controllers/_well_controller.py,sha25
600
601
  webviz_subsurface/plugins/_well_log_viewer/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
601
602
  webviz_subsurface/plugins/_well_log_viewer/utils/default_color_tables.py,sha256=0UgrvygPGEAuC15vn73NCXJUQLt9Dpn5QZqqq1IJkfw,4872
602
603
  webviz_subsurface/plugins/_well_log_viewer/utils/xtgeo_well_log_to_json.py,sha256=T44-vFwvvjyo376yoL1QWDc98exG8N1cLTEzrGp-I7A,1608
603
- webviz_subsurface-0.2.38.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
604
- webviz_subsurface-0.2.38.dist-info/LICENSE.chromedriver,sha256=H5UWVvf6Y7Ul6i35mriz7071dWR01cR9G-5ypnZHnpM,326542
605
- webviz_subsurface-0.2.38.dist-info/METADATA,sha256=D6TkT_-1cixzO7evVMKMyRs6nEG7wWSZ1Mr4ap4wZ5A,6354
606
- webviz_subsurface-0.2.38.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
607
- webviz_subsurface-0.2.38.dist-info/entry_points.txt,sha256=aprJRZQ2dW0An59soobTCaWzw6nEtiZBGncBhWA_C5Y,4129
608
- webviz_subsurface-0.2.38.dist-info/top_level.txt,sha256=NobeVsNfPINQgUSc9hlW3aqYHO5A0SNlhacg-2YDcf4,24
609
- webviz_subsurface-0.2.38.dist-info/RECORD,,
604
+ webviz_subsurface-0.2.39.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
605
+ webviz_subsurface-0.2.39.dist-info/LICENSE.chromedriver,sha256=H5UWVvf6Y7Ul6i35mriz7071dWR01cR9G-5ypnZHnpM,326542
606
+ webviz_subsurface-0.2.39.dist-info/METADATA,sha256=rFnRadClZlAGeQCYmxBT5ozeuYn3v-q6w7FPbGfemfc,6354
607
+ webviz_subsurface-0.2.39.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
608
+ webviz_subsurface-0.2.39.dist-info/entry_points.txt,sha256=aprJRZQ2dW0An59soobTCaWzw6nEtiZBGncBhWA_C5Y,4129
609
+ webviz_subsurface-0.2.39.dist-info/top_level.txt,sha256=NobeVsNfPINQgUSc9hlW3aqYHO5A0SNlhacg-2YDcf4,24
610
+ webviz_subsurface-0.2.39.dist-info/RECORD,,