webviz-subsurface 0.2.43__py3-none-any.whl → 0.2.46__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.
Files changed (21) hide show
  1. webviz_subsurface/_datainput/well_completions.py +1 -1
  2. webviz_subsurface/_models/gruptree_model.py +31 -7
  3. webviz_subsurface/_providers/ensemble_polygon_provider/_provider_impl_file.py +2 -1
  4. webviz_subsurface/_version.py +2 -2
  5. webviz_subsurface/plugins/_co2_migration/_plugin.py +31 -8
  6. webviz_subsurface/plugins/_co2_migration/_utilities/callbacks.py +183 -19
  7. webviz_subsurface/plugins/_co2_migration/_utilities/co2volume.py +83 -62
  8. webviz_subsurface/plugins/_co2_migration/_utilities/containment_data_provider.py +6 -0
  9. webviz_subsurface/plugins/_co2_migration/_utilities/generic.py +40 -3
  10. webviz_subsurface/plugins/_co2_migration/_utilities/initialization.py +2 -1
  11. webviz_subsurface/plugins/_co2_migration/_utilities/polygon_handler.py +4 -0
  12. webviz_subsurface/plugins/_co2_migration/views/mainview/settings.py +38 -3
  13. webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/ensemble_subplot_builder.py +3 -1
  14. webviz_subsurface/plugins/_vfp_analysis/_utils/_vfp_data_model.py +1 -1
  15. {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/METADATA +1 -2
  16. {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/RECORD +20 -21
  17. {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/WHEEL +1 -1
  18. webviz_subsurface-0.2.43.dist-info/licenses/LICENSE.chromedriver +0 -6291
  19. {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/entry_points.txt +0 -0
  20. {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/licenses/LICENSE +0 -0
  21. {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,6 @@ import pandas as pd
11
11
  import plotly.express as px
12
12
  import plotly.graph_objects as go
13
13
 
14
- from webviz_subsurface._providers import EnsembleTableProvider
15
14
  from webviz_subsurface._utils.enum_shim import StrEnum
16
15
  from webviz_subsurface.plugins._co2_migration._utilities.containment_data_provider import (
17
16
  ContainmentDataProvider,
@@ -32,19 +31,6 @@ class _Columns(StrEnum):
32
31
  VOLUME_OUTSIDE = "volume_outside"
33
32
 
34
33
 
35
- class Colors(StrEnum):
36
- # pylint: disable=invalid-name
37
- total = "#222222"
38
- contained = "#00aa00"
39
- outside = "#006ddd"
40
- hazardous = "#dd4300"
41
- dissolved_water = "#208eb7"
42
- dissolved_oil = "#A0522D"
43
- gas = "#C41E3A"
44
- free_gas = "#FF2400"
45
- trapped_gas = "#880808"
46
-
47
-
48
34
  class Marks(StrEnum):
49
35
  dissolved_water = "/"
50
36
  dissolved_oil = "x"
@@ -61,61 +47,76 @@ class Lines(StrEnum):
61
47
  trapped_gas = "dashdot"
62
48
 
63
49
 
64
- _COLOR_ZONES = [
65
- "#e91451",
66
- "#daa218",
67
- "#208eb7",
68
- "#84bc04",
69
- "#b74532",
70
- "#9a89b4",
71
- "#8d30ba",
72
- "#256b33",
73
- "#95704d",
74
- "#1357ca",
75
- "#f75ef0",
76
- "#34b36f",
50
+ _CONTAINMENT_COLORS = {
51
+ "total": ("#222222", "#909090"),
52
+ "contained": ("#00aa00", "#55ff55"),
53
+ "outside": ("#006ddd", "#6eb6ff"),
54
+ "nogo": ("#dd4300", "#ff9a6e"),
55
+ }
56
+
57
+
58
+ _PHASE_COLORS = {
59
+ "total": ("#222222", "#909090"),
60
+ "dissolved_water": ("#208eb7", "#81cde9"),
61
+ "dissolved_oil": ("#A0522D", "#C28163"),
62
+ "gas": ("#C41E3A", "#E42E5A"),
63
+ "free_gas": ("#FF2400", "#FF7430"),
64
+ "trapped_gas": ("#880808", "#C84848"),
65
+ }
66
+
67
+
68
+ _GENERAL_COLORS = [
69
+ ("#e91451", "#f589a8"),
70
+ ("#daa218", "#f2d386"),
71
+ ("#208eb7", "#81cde9"),
72
+ ("#84bc04", "#cdfc63"),
73
+ ("#b74532", "#e19e92"),
74
+ ("#9a89b4", "#ccc4d9"),
75
+ ("#8d30ba", "#c891e3"),
76
+ ("#256b33", "#77d089"),
77
+ ("#95704d", "#cfb7a1"),
78
+ ("#1357ca", "#7ba7f3"),
79
+ ("#f75ef0", "#fbaef7"),
80
+ ("#34b36f", "#93e0b7"),
77
81
  ]
78
82
 
83
+
79
84
  _LIGHTER_COLORS = {
80
85
  "black": "#909090",
81
- "#222222": "#909090",
82
- "#00aa00": "#55ff55",
83
- "#006ddd": "#6eb6ff",
84
- "#dd4300": "#ff9a6e",
85
- "#e91451": "#f589a8",
86
- "#daa218": "#f2d386",
87
- "#208eb7": "#81cde9",
88
- "#84bc04": "#cdfc63",
89
- "#b74532": "#e19e92",
90
- "#9a89b4": "#ccc4d9",
91
- "#8d30ba": "#c891e3",
92
- "#256b33": "#77d089",
93
- "#95704d": "#cfb7a1",
94
- "#1357ca": "#7ba7f3",
95
- "#f75ef0": "#fbaef7",
96
- "#34b36f": "#93e0b7",
97
- "#C41E3A": "#E42E5A",
98
- "#FF2400": "#FF7430",
99
- "#880808": "#C84848",
86
+ **dict(_CONTAINMENT_COLORS.values()),
87
+ **dict(_PHASE_COLORS.values()),
88
+ **dict(_GENERAL_COLORS),
100
89
  }
101
90
 
91
+ _LABEL_TRANSLATIONS = {
92
+ "nogo": "no-go",
93
+ "dissolved_water": "dissolved water",
94
+ "dissolved_oil": "dissolved oil",
95
+ "free_gas": "free gas",
96
+ "trapped_gas": "trapped gas",
97
+ }
102
98
 
103
- def _read_dataframe(
104
- table_provider: EnsembleTableProvider,
105
- realization: int,
106
- scale_factor: float,
107
- ) -> pd.DataFrame:
108
- df = table_provider.get_column_data(table_provider.column_names(), [realization])
109
- if scale_factor == 1.0:
110
- return df
111
- df["amount"] /= scale_factor
112
- return df
99
+
100
+ def _translate_labels(df: Union[pd.DataFrame, Dict], column: str = "type") -> None:
101
+ def translate_label(label: str) -> str:
102
+ if ", " in label:
103
+ parts = label.split(", ")
104
+ translated_parts = [_LABEL_TRANSLATIONS.get(part, part) for part in parts]
105
+ return ", ".join(translated_parts)
106
+ return _LABEL_TRANSLATIONS.get(label, label)
107
+
108
+ if isinstance(df, dict):
109
+ df[column] = [translate_label(label) for label in df[column]]
110
+ else:
111
+ df[column] = df[column].apply(translate_label)
113
112
 
114
113
 
115
114
  def _get_colors(color_options: List[str], split: str) -> List[str]:
116
- if split in {"containment", "phase"}:
117
- return [Colors[option] for option in color_options]
118
- options = list(_COLOR_ZONES)
115
+ if split == "containment":
116
+ return [_CONTAINMENT_COLORS[option][0] for option in color_options]
117
+ if split == "phase":
118
+ return [_PHASE_COLORS[option][0] for option in color_options]
119
+ options = [x[0] for x in _GENERAL_COLORS]
119
120
  if split == "region":
120
121
  options.reverse()
121
122
  num_cols = len(color_options)
@@ -268,8 +269,8 @@ def _prepare_pattern_and_color_options_statistics_plot(
268
269
 
269
270
 
270
271
  def _find_default_legendonly(df: pd.DataFrame, categories: List[str]) -> List[str]:
271
- if "hazardous" in categories:
272
- default_option = "hazardous"
272
+ if "no-go" in categories:
273
+ default_option = "no-go"
273
274
  else:
274
275
  max_value = -999.9
275
276
  default_option = categories[0]
@@ -416,7 +417,7 @@ def _add_sort_key_and_real(
416
417
  sort_value = np.sum(
417
418
  df[
418
419
  (df["phase"] == "total")
419
- & (df["containment"] == "hazardous")
420
+ & (df["containment"] == "nogo")
420
421
  & (df["zone"] == containment_info.zone)
421
422
  & (df["region"] == containment_info.region)
422
423
  & (df["plume_group"] == containment_info.plume_group)
@@ -530,6 +531,9 @@ def generate_co2_volume_figure(
530
531
  color_choice,
531
532
  mark_choice,
532
533
  )
534
+ _translate_labels(df, "type")
535
+ _translate_labels(cat_ord, "type")
536
+
533
537
  fig = px.bar(
534
538
  df,
535
539
  y="real",
@@ -590,6 +594,9 @@ def generate_co2_time_containment_one_realization_figure(
590
594
  color_choice,
591
595
  mark_choice,
592
596
  )
597
+ _translate_labels(df, "type")
598
+ _translate_labels(cat_ord, "type")
599
+
593
600
  fig = px.area(
594
601
  df,
595
602
  x="date",
@@ -776,6 +783,8 @@ def generate_co2_time_containment_figure(
776
783
  options = _prepare_line_type_and_color_options(
777
784
  df, containment_info, color_choice, mark_choice
778
785
  )
786
+ _translate_labels(df, "name")
787
+ _translate_labels(options, "name")
779
788
  if legendonly_traces is None:
780
789
  inactive_cols_at_startup = list(
781
790
  options[~(options["line_type"].isin(["solid", "0px"]))]["name"]
@@ -788,6 +797,14 @@ def generate_co2_time_containment_figure(
788
797
  except ValueError:
789
798
  pass
790
799
 
800
+ options["name"] = options["name"].apply(
801
+ lambda label: ", ".join(
802
+ [_LABEL_TRANSLATIONS.get(part, part) for part in label.split(", ")]
803
+ )
804
+ if ", " in label
805
+ else _LABEL_TRANSLATIONS.get(label, label)
806
+ )
807
+
791
808
  fig = go.Figure()
792
809
  # Generate dummy scatters for legend entries
793
810
  dummy_args = {"x": df["date"], "mode": "lines", "hoverinfo": "none"}
@@ -907,6 +924,8 @@ def generate_co2_statistics_figure(
907
924
  color_choice,
908
925
  mark_choice,
909
926
  )
927
+ _translate_labels(df, "type")
928
+ _translate_labels(cat_ord, "type")
910
929
 
911
930
  df = df.drop(columns=["REAL"]).reset_index(drop=True)
912
931
  fig = px.ecdf(
@@ -973,6 +992,8 @@ def generate_co2_box_plot_figure(
973
992
  color_choice,
974
993
  mark_choice,
975
994
  )
995
+ _translate_labels(df, "type")
996
+ _translate_labels(cat_ord, "type")
976
997
 
977
998
  fig = go.Figure()
978
999
  for count, type_val in enumerate(cat_ord["type"], 0):
@@ -34,6 +34,9 @@ class ContainmentDataProvider:
34
34
  df = self._provider.get_column_data(
35
35
  self._provider.column_names(), [realization]
36
36
  )
37
+ # Backward compatibility:
38
+ df["containment"] = df["containment"].replace({"hazardous": "nogo"})
39
+
37
40
  scale_factor = self._find_scale_factor(scale)
38
41
  if scale_factor == 1.0:
39
42
  return df
@@ -45,6 +48,9 @@ class ContainmentDataProvider:
45
48
  co2_scale: Union[Co2MassScale, Co2VolumeScale],
46
49
  ) -> pd.DataFrame:
47
50
  df = self._provider.get_column_data(self._provider.column_names())
51
+ # Backward compatibility:
52
+ df["containment"] = df["containment"].replace({"hazardous": "nogo"})
53
+
48
54
  df = df.loc[
49
55
  (df["zone"] == "all")
50
56
  & (df["region"] == "all")
@@ -2,11 +2,15 @@ from __future__ import ( # Change to import Self from typing if we update to Py
2
2
  annotations,
3
3
  )
4
4
 
5
+ import logging
6
+ import warnings
5
7
  from enum import Enum
6
- from typing import Dict, List, TypedDict
8
+ from typing import Dict, List, Optional, TypedDict
7
9
 
8
10
  from webviz_subsurface._utils.enum_shim import StrEnum
9
11
 
12
+ LOGGER = logging.getLogger(__name__)
13
+
10
14
 
11
15
  class MapAttribute(StrEnum):
12
16
  MIGRATION_TIME_SGAS = "Migration time (SGAS)"
@@ -212,7 +216,8 @@ class LayoutLabels(StrEnum):
212
216
 
213
217
  SHOW_FAULTPOLYGONS = "Show fault polygons"
214
218
  SHOW_CONTAINMENT_POLYGON = "Show containment polygon"
215
- SHOW_HAZARDOUS_POLYGON = "Show hazardous polygon"
219
+ SHOW_NOGO_POLYGON = "Show no-go polygon"
220
+ SHOW_POLYGONS_AS_OUTLINES = "Show polygons as outlines"
216
221
  SHOW_WELLS = "Show wells"
217
222
  WELL_FILTER = "Well filter"
218
223
  COMMON_SELECTIONS = "Options and global filters"
@@ -289,5 +294,37 @@ class MapThresholds:
289
294
  class BoundarySettings(TypedDict):
290
295
  polygon_file_pattern: str
291
296
  attribute: str
292
- hazardous_name: str
297
+ hazardous_name: str # Keep for backward compatibility
298
+ nogo_name: str
293
299
  containment_name: str
300
+
301
+
302
+ class IgnoreHazardousPolyWarning(logging.Filter):
303
+ def filter(self, record: logging.LogRecord) -> bool:
304
+ haz_poly = (
305
+ "hazardous" in record.getMessage() or "invalid" in record.getMessage()
306
+ ) and "SimulatedPolygonsAddress" in record.getMessage()
307
+ return not haz_poly
308
+
309
+
310
+ def deactivate_polygon_warnings() -> None:
311
+ logger1 = logging.getLogger(
312
+ "webviz_subsurface._providers.ensemble_polygon_provider._provider_impl_file"
313
+ )
314
+ logger1.addFilter(IgnoreHazardousPolyWarning())
315
+
316
+
317
+ def check_hazardous_polygon(boundary_settings: Optional[BoundarySettings]) -> None:
318
+ if boundary_settings is not None and "hazardous_name" in boundary_settings:
319
+ warning_txt = (
320
+ "In config file: 'hazardous_name' under 'boundary_settings' is deprecated and will be "
321
+ "removed in future versions. Use 'nogo_name' instead."
322
+ )
323
+ warnings.warn(
324
+ warning_txt,
325
+ DeprecationWarning,
326
+ )
327
+ LOGGER.warning(warning_txt)
328
+ # Only use nogo polygon if both are specified
329
+ if "nogo_name" in boundary_settings:
330
+ boundary_settings["hazardous_name"] = "invalid"
@@ -196,7 +196,8 @@ def init_polygon_provider_handlers(
196
196
  filled_options: BoundarySettings = {
197
197
  "polygon_file_pattern": "share/results/polygons/*.csv",
198
198
  "attribute": "boundary",
199
- "hazardous_name": "hazardous",
199
+ "hazardous_name": "hazardous", # Keep for backward compatibility (ccs-scripts issue #390)
200
+ "nogo_name": "nogo",
200
201
  "containment_name": "containment",
201
202
  }
202
203
  if options is not None:
@@ -20,6 +20,7 @@ class PolygonHandler:
20
20
  self._server = server
21
21
  self._attribute = boundary_options["attribute"]
22
22
  self._hazardous_name = boundary_options["hazardous_name"]
23
+ self._nogo_name = boundary_options["nogo_name"]
23
24
  self._containment_name = boundary_options["containment_name"]
24
25
  polygon_provider_factory = EnsemblePolygonProviderFactory.instance()
25
26
  self._provider = polygon_provider_factory.create_from_ensemble_polygon_files(
@@ -28,6 +29,9 @@ class PolygonHandler:
28
29
  )
29
30
  server.add_provider(self._provider)
30
31
 
32
+ def extract_nogo_poly_url(self, realization: List[int]) -> Optional[str]:
33
+ return self._extract_polygon_url(self._nogo_name, self._attribute, realization)
34
+
31
35
  def extract_hazardous_poly_url(self, realization: List[int]) -> Optional[str]:
32
36
  return self._extract_polygon_url(
33
37
  self._hazardous_name, self._attribute, realization
@@ -54,6 +54,8 @@ class ViewSettings(SettingsGroupABC):
54
54
  CM_MAX = "cm-max"
55
55
  CM_MIN_AUTO = "cm-min-auto"
56
56
  CM_MAX_AUTO = "cm-max-auto"
57
+ CONTOURS_SWITCH = "contours-switch"
58
+ CONTOURS_QUANTITY = "contours-quantity"
57
59
 
58
60
  GRAPH_SOURCE = "graph-source"
59
61
  CO2_SCALE = "co2-scale"
@@ -155,6 +157,8 @@ class ViewSettings(SettingsGroupABC):
155
157
  self.register_component_unique_id(self.Ids.CM_MAX),
156
158
  self.register_component_unique_id(self.Ids.CM_MIN_AUTO),
157
159
  self.register_component_unique_id(self.Ids.CM_MAX_AUTO),
160
+ self.register_component_unique_id(self.Ids.CONTOURS_SWITCH),
161
+ self.register_component_unique_id(self.Ids.CONTOURS_QUANTITY),
158
162
  self.register_component_unique_id(self.Ids.MASS_UNIT),
159
163
  self.register_component_unique_id(self.Ids.MASS_UNIT_UPDATE),
160
164
  self._map_attribute_names,
@@ -604,8 +608,9 @@ class DialogLayout(wcc.Dialog):
604
608
  checklist_values.append(LayoutLabels.SHOW_FAULTPOLYGONS)
605
609
  checklist_options.append(LayoutLabels.SHOW_CONTAINMENT_POLYGON)
606
610
  checklist_values.append(LayoutLabels.SHOW_CONTAINMENT_POLYGON)
607
- checklist_options.append(LayoutLabels.SHOW_HAZARDOUS_POLYGON)
608
- checklist_values.append(LayoutLabels.SHOW_HAZARDOUS_POLYGON)
611
+ checklist_options.append(LayoutLabels.SHOW_NOGO_POLYGON)
612
+ checklist_values.append(LayoutLabels.SHOW_NOGO_POLYGON)
613
+ checklist_options.append(LayoutLabels.SHOW_POLYGONS_AS_OUTLINES)
609
614
  checklist_options.append(LayoutLabels.SHOW_WELLS)
610
615
  checklist_values.append(LayoutLabels.SHOW_WELLS)
611
616
 
@@ -667,6 +672,7 @@ class FilterSelectorLayout(wcc.Selectors):
667
672
  wcc.Dropdown(
668
673
  id=formation_id,
669
674
  clearable=False,
675
+ maxHeight=300,
670
676
  ),
671
677
  ],
672
678
  )
@@ -770,6 +776,8 @@ class MapSelectorLayout(wcc.Selectors):
770
776
  cm_max_id: str,
771
777
  cm_min_auto_id: str,
772
778
  cm_max_auto_id: str,
779
+ contour_switch_id: str,
780
+ contour_quantity_id: str,
773
781
  mass_unit_id: str,
774
782
  mass_unit_update_id: str,
775
783
  map_attribute_names: FilteredMapAttribute,
@@ -791,6 +799,7 @@ class MapSelectorLayout(wcc.Selectors):
791
799
  options=_compile_property_options(map_attribute_names),
792
800
  value=next(iter(map_attribute_names.filtered_values)).value,
793
801
  clearable=False,
802
+ maxHeight=500,
794
803
  ),
795
804
  "Statistic",
796
805
  wcc.Dropdown(
@@ -858,6 +867,29 @@ class MapSelectorLayout(wcc.Selectors):
858
867
  ],
859
868
  style={"display": "flex"},
860
869
  ),
870
+ "Contours",
871
+ html.Div(
872
+ [
873
+ "#",
874
+ dcc.Input(
875
+ id=contour_quantity_id,
876
+ value=5,
877
+ type="number",
878
+ min=1,
879
+ style={"width": "25%"},
880
+ ),
881
+ dcc.Checklist(
882
+ ["On/Off"],
883
+ [],
884
+ id=contour_switch_id,
885
+ ),
886
+ ],
887
+ style={"display": "flex"},
888
+ title=(
889
+ "Contours work best with relatively smooth maps,"
890
+ " and Minimum and Maximum set to 'auto'."
891
+ ),
892
+ ),
861
893
  OpenVisualizationThresholdsButton(),
862
894
  ],
863
895
  )
@@ -999,6 +1031,7 @@ class GraphSelectorsLayout(wcc.Selectors):
999
1031
  value="all",
1000
1032
  id=containment_ids[ids.ZONE],
1001
1033
  clearable=False,
1034
+ maxHeight=300,
1002
1035
  ),
1003
1036
  ],
1004
1037
  id=containment_ids[ids.ZONE_COL],
@@ -1027,6 +1060,7 @@ class GraphSelectorsLayout(wcc.Selectors):
1027
1060
  value="all",
1028
1061
  id=containment_ids[ids.REGION],
1029
1062
  clearable=False,
1063
+ maxHeight=300,
1030
1064
  ),
1031
1065
  ],
1032
1066
  id=containment_ids[ids.REGION_COL],
@@ -1065,7 +1099,7 @@ class GraphSelectorsLayout(wcc.Selectors):
1065
1099
  {"label": "All areas", "value": "total"},
1066
1100
  {"label": "Contained", "value": "contained"},
1067
1101
  {"label": "Outside", "value": "outside"},
1068
- {"label": "Hazardous", "value": "hazardous"},
1102
+ {"label": "No-go", "value": "nogo"},
1069
1103
  ],
1070
1104
  value="total",
1071
1105
  clearable=False,
@@ -1134,6 +1168,7 @@ class GraphSelectorsLayout(wcc.Selectors):
1134
1168
  wcc.Dropdown(
1135
1169
  id=containment_ids[ids.DATE_OPTION],
1136
1170
  clearable=False,
1171
+ maxHeight=300,
1137
1172
  ),
1138
1173
  ],
1139
1174
  id=containment_ids[ids.DATE_OPTION_COL],
@@ -357,5 +357,7 @@ class EnsembleSubplotBuilder(GraphFigureBuilderBase):
357
357
  missing = vectors - set(self._selected_vectors)
358
358
  if missing:
359
359
  raise ValueError(
360
- f"Unexpected vectors found: {missing}. Does not exist among selected vectors: {self._selected_vectors}"
360
+ f"Unexpected vectors found: {missing}."
361
+ f" Does not exist among selected vectors: "
362
+ f"{self._selected_vectors}"
361
363
  )
@@ -241,7 +241,7 @@ def _read_vfp_arrow(filename: str) -> io.BytesIO:
241
241
  source = pa.memory_map(filename, "r")
242
242
  reader = pa.ipc.RecordBatchFileReader(source)
243
243
  pa_table = reader.read_all()
244
- vfp_dict = pyarrow2basic_data(pa_table)
244
+ vfp_dict = pyarrow2basic_data(pa_table) or {}
245
245
 
246
246
  for key, _ in vfp_dict.items():
247
247
  # Convert types to strings
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webviz-subsurface
3
- Version: 0.2.43
3
+ Version: 0.2.46
4
4
  Summary: Webviz config plugins for subsurface data
5
5
  Author: R&T Equinor
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -695,7 +695,6 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
695
695
  Requires-Python: ~=3.11
696
696
  Description-Content-Type: text/markdown
697
697
  License-File: LICENSE
698
- License-File: LICENSE.chromedriver
699
698
  Requires-Dist: dash<3,>=2.0.0
700
699
  Requires-Dist: dash_bootstrap_components>=0.10.3
701
700
  Requires-Dist: dash-daq>=0.5.0
@@ -1,5 +1,5 @@
1
1
  webviz_subsurface/__init__.py,sha256=XUL8THCPZObkUsxDodKtE_wx-pYmQ4sATXgx5sdYa-A,3824
2
- webviz_subsurface/_version.py,sha256=gGfD04M45bLDbLxKefFz8XrPC5GvdOYOo_ZY_ExXwEg,706
2
+ webviz_subsurface/_version.py,sha256=mS--kdtjJqUKfsljfki5FdWrl3-cIsK7SI2vUzlwC-A,706
3
3
  webviz_subsurface/smry2arrow_batch.py,sha256=zTekRSgkUei6_DGT1ZWibd22PrFkkTQ_pnjZYvzMOL4,4129
4
4
  webviz_subsurface/_abbreviations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  webviz_subsurface/_abbreviations/number_formatting.py,sha256=zElrkv3j3H6i7nbeeyKG1oE6VfNtzfrSJQYrC08Bev0,3479
@@ -36,7 +36,7 @@ webviz_subsurface/_datainput/seismic.py,sha256=7alyU9dezKgrSqiGI1R405hh5ymPDf5Cb
36
36
  webviz_subsurface/_datainput/surface.py,sha256=fxrV65AJBw1dbIyJtnfknk7DriqpotF2oi7ZDNQBheE,348
37
37
  webviz_subsurface/_datainput/units.py,sha256=xBtouLCXa4ZzNSCTjmTRfsHS3GluwTHIBh9SpzxAksA,15902
38
38
  webviz_subsurface/_datainput/well.py,sha256=9_Hi66TMqy4tkwYXugYV_lSyZFQ9SY5rQZvkpPxxnp8,6916
39
- webviz_subsurface/_datainput/well_completions.py,sha256=ckZug0bwoJmIBZC-h8ADnw2Ss68oKj4-DezCbDuPCr0,6269
39
+ webviz_subsurface/_datainput/well_completions.py,sha256=f_VPGoaarXBuJ7Pwjf8RTY-mJHxL21fJgbzvYVQT3VA,6289
40
40
  webviz_subsurface/_datainput/xsection.py,sha256=X3B88ufAANzKOeHelVGIulj3cwRgMMrl6lbAq90QD4U,19126
41
41
  webviz_subsurface/_datainput/eclipse_init_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  webviz_subsurface/_datainput/eclipse_init_io/pvt_common.py,sha256=iH94cMbifEJjGC7Pj4HA8kYMPH4uXLoIlXtWy2oKo7E,30857
@@ -52,7 +52,7 @@ webviz_subsurface/_models/__init__.py,sha256=N2vfEx6bChJu9w_Vax_FslPBhNxbdWBqL6V
52
52
  webviz_subsurface/_models/caching_ensemble_set_model_factory.py,sha256=Jt7lCEpPPBhLB36V-QRyc2cvp2hF85zmiXODqKTza_I,1201
53
53
  webviz_subsurface/_models/ensemble_model.py,sha256=qic5LtPHeWRG3yzITvAihkiIxDZOuKYUFLbzc9peQcM,6288
54
54
  webviz_subsurface/_models/ensemble_set_model.py,sha256=elS5eLpktTJeeSU_44hL9SBHufDQB3SyBllUJZzdSKM,4231
55
- webviz_subsurface/_models/gruptree_model.py,sha256=TkPBTre3Srs7n2SJSVGbj6oWAUEaJJ811XTxCIcHjPQ,8369
55
+ webviz_subsurface/_models/gruptree_model.py,sha256=yrYW-6FwCSJ4ClwJjqP3UeWV7ka6LcPza-Qyfp-O3Qw,9439
56
56
  webviz_subsurface/_models/inplace_volumes_model.py,sha256=AxVJzEeYgDgKfbP6ePpxqwX9I1ybVpho9PSzpzfWzEY,15877
57
57
  webviz_subsurface/_models/observation_model.py,sha256=Z9wO6KfO6FcJ99x8kq1Y2m_2bCsAiWexYjhVoJkqxAY,1629
58
58
  webviz_subsurface/_models/parameter_model.py,sha256=IZOQvEM0zjzFQUsW0MzYfbo8kRVqZNJxzbe_uDW-GJE,7284
@@ -81,7 +81,7 @@ webviz_subsurface/_providers/ensemble_grid_provider/provider_impl_egrid.py,sha25
81
81
  webviz_subsurface/_providers/ensemble_grid_provider/provider_impl_roff.py,sha256=FUsBpUroAHAPuKZ-sB1aAFwy4An4QDPYyGQ7WDzvCN0,12509
82
82
  webviz_subsurface/_providers/ensemble_polygon_provider/__init__.py,sha256=kiBWm45NNnfX0bxigftDx60VT6aejFw40L40eYAfMUY,226
83
83
  webviz_subsurface/_providers/ensemble_polygon_provider/_polygon_discovery.py,sha256=-c1k2GKee77yExf_IM56HitY10-5rbeqHC39biP1X9E,3049
84
- webviz_subsurface/_providers/ensemble_polygon_provider/_provider_impl_file.py,sha256=FETSTKzPHbTJCQq9gH7CQ42JNUK48Aj2iHwZ4CynlKs,7416
84
+ webviz_subsurface/_providers/ensemble_polygon_provider/_provider_impl_file.py,sha256=-cTpldlxjSwfge7P5WzZJ7E8BU9wEz1f_wOkeqtBkSA,7485
85
85
  webviz_subsurface/_providers/ensemble_polygon_provider/ensemble_polygon_provider.py,sha256=QACC3qF-bmIYd5sQB-tnSFcoYszQTT5WGWqkwm_hNZQ,1623
86
86
  webviz_subsurface/_providers/ensemble_polygon_provider/ensemble_polygon_provider_factory.py,sha256=GvVSpkj2V9DhbJGRWwbuZRjoVnXGKdHMQea1p8tfVWw,3618
87
87
  webviz_subsurface/_providers/ensemble_polygon_provider/polygon_server.py,sha256=yIJ1yv9Ngb203yANTppRDK2TBNt7FgF2JJRFbbOO3oU,4137
@@ -181,28 +181,28 @@ webviz_subsurface/plugins/_bhp_qc/views/_line_chart.py,sha256=dUF4H8H4i1yRg-m2Gs
181
181
  webviz_subsurface/plugins/_bhp_qc/views/_view_functions.py,sha256=FdSaCWCnsGdIj2ET6K1r9DZS5rPTalt1SXdm2Hrpgr4,3024
182
182
  webviz_subsurface/plugins/_co2_migration/__init__.py,sha256=SPo2gxFgYmDmEeAfZmHJn6x4vNh7215YYesWSL86yEk,34
183
183
  webviz_subsurface/plugins/_co2_migration/_error.py,sha256=iZiTIa5qlUA4hy3cmjDrZio2bPAtIAOXoA6eTgkQ1dI,135
184
- webviz_subsurface/plugins/_co2_migration/_plugin.py,sha256=ZrKYK08uW2-ONCpE7RPhzpylSpgf49C7d_k_hD_O-y4,40725
184
+ webviz_subsurface/plugins/_co2_migration/_plugin.py,sha256=kcwh0No0Hke4RgYd-xGHoUXfNt1yHkB6SQkmrlo1vew,41773
185
185
  webviz_subsurface/plugins/_co2_migration/_types.py,sha256=RbS3WtAjoobXTRXk7S8Gk4Ci0xVty3nJxUPGL8L6q3o,199
186
186
  webviz_subsurface/plugins/_co2_migration/_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
187
  webviz_subsurface/plugins/_co2_migration/_utilities/_misc.py,sha256=0E-m_Ior6Kb5cbgfQpzC9mHI6FT2xj1Ihk0jtc6Mk6E,307
188
- webviz_subsurface/plugins/_co2_migration/_utilities/callbacks.py,sha256=HAjvXUYT8nOMJouFM7hfUuy0TpAV6bUndu7dTyfWz4A,21557
189
- webviz_subsurface/plugins/_co2_migration/_utilities/co2volume.py,sha256=02FXWQC1ieN_YSHBqFaFNzPMCUCSBA2ZLJMSZy2pwPI,47028
188
+ webviz_subsurface/plugins/_co2_migration/_utilities/callbacks.py,sha256=OgMVmuM6mHxJ1OmYSn0370gbI4q87_Ru-rpaTdnJOYM,27285
189
+ webviz_subsurface/plugins/_co2_migration/_utilities/co2volume.py,sha256=vHgEtQwBKoTsh-GGgnR8NBNqcUKvuxQUjil_Q5x0CpM,48038
190
190
  webviz_subsurface/plugins/_co2_migration/_utilities/color_tables.py,sha256=NrQf72s7Oeq9rE0TGaHQ0PDfIpg9e0dx7dNtwo6-2ZA,2439
191
- webviz_subsurface/plugins/_co2_migration/_utilities/containment_data_provider.py,sha256=P1h0c9EIZ6U6IjkUcKoxzv7bcsxi9LWRxTuJLIURpl0,5488
191
+ webviz_subsurface/plugins/_co2_migration/_utilities/containment_data_provider.py,sha256=chXhYjeKBCNWsseju-toVaKmxsGl-c6E86BlawTzxHE,5718
192
192
  webviz_subsurface/plugins/_co2_migration/_utilities/containment_info.py,sha256=9vUTTIXO4vyCxEmvt_n38YPV2JWenzYuqutrB1KP1ko,972
193
193
  webviz_subsurface/plugins/_co2_migration/_utilities/ensemble_well_picks.py,sha256=9Gx5FLiS5NeHY-8iaV8HBi_dBEldb9A5t5OUfNuAu-Q,3940
194
194
  webviz_subsurface/plugins/_co2_migration/_utilities/fault_polygons_handler.py,sha256=w74r0DPZGKRCtChtLn4eXO5dOGPWcvMjt9udZFfasI4,1658
195
- webviz_subsurface/plugins/_co2_migration/_utilities/generic.py,sha256=b53tr3Q2_rB9B_1PAiSLJiJEYB-g21phpxqLcKTHxSk,8430
196
- webviz_subsurface/plugins/_co2_migration/_utilities/initialization.py,sha256=HgoGSrTFYv1WT6RBR3nC8Olp5Jl1ApCm7Bj9PsCDsRg,11911
195
+ webviz_subsurface/plugins/_co2_migration/_utilities/generic.py,sha256=p2_fFcNMKxpz73-vk138Kr0GdKwTRmkO8CDaz0PapG0,9792
196
+ webviz_subsurface/plugins/_co2_migration/_utilities/initialization.py,sha256=BJRnldWHKd1lChEzVAmCJTkQPUUZFA4KNQWl3mvxOgI,12000
197
197
  webviz_subsurface/plugins/_co2_migration/_utilities/plume_extent.py,sha256=VsQr6DzJLvfbmwMj34cTa56woS_W8V0S08XQVtVTbu4,3390
198
- webviz_subsurface/plugins/_co2_migration/_utilities/polygon_handler.py,sha256=-GA5GsQ-Yc1mwfjb4RZr0DibObAmymV8YrHNfJB7KGw,2092
198
+ webviz_subsurface/plugins/_co2_migration/_utilities/polygon_handler.py,sha256=MOc4c3zbG3DSaTm6R_Gx2V9C7tq0q0PftMYQocekLZs,2315
199
199
  webviz_subsurface/plugins/_co2_migration/_utilities/summary_graphs.py,sha256=kWwzGUC2WQBgioPUt6RvXa4kAv6SDdbXJngLFrorCSg,5279
200
200
  webviz_subsurface/plugins/_co2_migration/_utilities/surface_publishing.py,sha256=YfY8lOvJkb0oQLTb8EY6Fp_JWykAsItp68iGCpXJdFU,8498
201
201
  webviz_subsurface/plugins/_co2_migration/_utilities/unsmry_data_provider.py,sha256=k-J2EkNeEvon64LZdo2mB1BQ4Iz25M1JAoyfCyvQOwc,3292
202
202
  webviz_subsurface/plugins/_co2_migration/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
203
  webviz_subsurface/plugins/_co2_migration/views/mainview/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
204
  webviz_subsurface/plugins/_co2_migration/views/mainview/mainview.py,sha256=4uj6d46znDPDfjpm3nh2iAeQavdqdMr623MQ2k1oXgw,10649
205
- webviz_subsurface/plugins/_co2_migration/views/mainview/settings.py,sha256=22icRI9j21cWmAGJvleTvL2lELT_QQgS22nR06xKMk8,66154
205
+ webviz_subsurface/plugins/_co2_migration/views/mainview/settings.py,sha256=jSpAsOkLPYsr5DLOajc-Xm4jSm_p1vcySfwdFgZWKWY,67791
206
206
  webviz_subsurface/plugins/_grid_viewer_fmu/__init__.py,sha256=ZlS_MintakVLD0tEjrCySI4BWcxzR7wLP-smYZoAcE4,47
207
207
  webviz_subsurface/plugins/_grid_viewer_fmu/_layout_elements.py,sha256=RHJUFVx17LvpsDOa8Y8gwNoRHoodcaXXQGRGwjqbeB0,124
208
208
  webviz_subsurface/plugins/_grid_viewer_fmu/_plugin.py,sha256=-BFEoSRUxZUaMxJCOrzGdQ5-HYFgvYRLoph_4kmbYA8,5373
@@ -377,7 +377,7 @@ webviz_subsurface/plugins/_simulation_time_series/_views/__init__.py,sha256=47DE
377
377
  webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/__init__.py,sha256=Yt6Piyp2IkXxdlj-alqIKd6TFZjpmOWqSwjnuQxZSmI,31
378
378
  webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_view.py,sha256=HeWZyFM77MSdHCDUhWwXORidxjlqhkD_9u9CVniRdX0,42176
379
379
  webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/__init__.py,sha256=E6_uX-47qAv2qVvtue08xhv4uDhZLLImH4s3WsE-ssw,180
380
- webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/ensemble_subplot_builder.py,sha256=kPInKLVH7i9LoWw0dTB0xaK_etlZA4Jp57JjL_oNcTM,14232
380
+ webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/ensemble_subplot_builder.py,sha256=yrd96RMk2kJlM5CdzQkiazEzXEgDoTglR8_LfOTDMpY,14272
381
381
  webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/graph_figure_builder_base.py,sha256=Ys9_XDUR0fQ-rR_LGEGW8jgp-DGwukec21Mj6VJHchw,5732
382
382
  webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/vector_subplot_builder.py,sha256=d7phNUn2ILx6_3TwfBsL2_1ossTi4-Lfcj_5IXjKXA8,14980
383
383
  webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_settings/__init__.py,sha256=hDqljNMPXr18Dir-7aBnXAiCPlyHB9jLtytq8kAWXT4,298
@@ -471,7 +471,7 @@ webviz_subsurface/plugins/_vfp_analysis/__init__.py,sha256=CF23TDvv2GOK1yhW-gBvU
471
471
  webviz_subsurface/plugins/_vfp_analysis/_plugin.py,sha256=Ni2GxLCFQFpD7VcqWQzy1Oa7sOm45VuLbnM81bYUrBY,1690
472
472
  webviz_subsurface/plugins/_vfp_analysis/_types.py,sha256=t2yKFHT7Y0UL6HJ3Zv0tHdHPtZRRuXo3mUM_YLoqrJU,210
473
473
  webviz_subsurface/plugins/_vfp_analysis/_utils/__init__.py,sha256=2CzWadhrnNQGdrpGSUrvqoTCMYvp3YnXvLPWB-egk8k,52
474
- webviz_subsurface/plugins/_vfp_analysis/_utils/_vfp_data_model.py,sha256=l1F9jlH9ESmXM877fqgrst7A4BPXBpbP1E5e72llXPI,9658
474
+ webviz_subsurface/plugins/_vfp_analysis/_utils/_vfp_data_model.py,sha256=b9w_E4QsEaNyxQgkhq0UZx0i8YpVH7dM3dyEwfbCZVI,9664
475
475
  webviz_subsurface/plugins/_vfp_analysis/_views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
476
476
  webviz_subsurface/plugins/_vfp_analysis/_views/_vfp_view/__init__.py,sha256=S6q3vFDQe98gEuO0Ku1PPjSj_He1GVz6hbuTaPalcZQ,27
477
477
  webviz_subsurface/plugins/_vfp_analysis/_views/_vfp_view/_view.py,sha256=qHkiQMfZDwkUKchM2G1sJVUgKqERCUIujCj-ly-aY1c,10035
@@ -550,10 +550,9 @@ webviz_subsurface/plugins/_well_log_viewer/controllers/_well_controller.py,sha25
550
550
  webviz_subsurface/plugins/_well_log_viewer/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
551
551
  webviz_subsurface/plugins/_well_log_viewer/utils/default_color_tables.py,sha256=0UgrvygPGEAuC15vn73NCXJUQLt9Dpn5QZqqq1IJkfw,4872
552
552
  webviz_subsurface/plugins/_well_log_viewer/utils/xtgeo_well_log_to_json.py,sha256=T44-vFwvvjyo376yoL1QWDc98exG8N1cLTEzrGp-I7A,1608
553
- webviz_subsurface-0.2.43.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
554
- webviz_subsurface-0.2.43.dist-info/licenses/LICENSE.chromedriver,sha256=H5UWVvf6Y7Ul6i35mriz7071dWR01cR9G-5ypnZHnpM,326542
555
- webviz_subsurface-0.2.43.dist-info/METADATA,sha256=qnrO7JsE6b0T_R4AVoeQJry37uayjpE61igtRKkEFoQ,46825
556
- webviz_subsurface-0.2.43.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
557
- webviz_subsurface-0.2.43.dist-info/entry_points.txt,sha256=Xdu_x9E_hJBueKfSYBFAAVFzKeUrenikc8lydm9C-6A,4135
558
- webviz_subsurface-0.2.43.dist-info/top_level.txt,sha256=ivY5svyqFD5YI8wdJHATxBrkxfcdU2Q6fDh5E_tDrl4,18
559
- webviz_subsurface-0.2.43.dist-info/RECORD,,
553
+ webviz_subsurface-0.2.46.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
554
+ webviz_subsurface-0.2.46.dist-info/METADATA,sha256=v_UNy8wVvDzDkbAyDmjl94_v8ke_byRQ_hjIrsZfSak,46790
555
+ webviz_subsurface-0.2.46.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
556
+ webviz_subsurface-0.2.46.dist-info/entry_points.txt,sha256=Xdu_x9E_hJBueKfSYBFAAVFzKeUrenikc8lydm9C-6A,4135
557
+ webviz_subsurface-0.2.46.dist-info/top_level.txt,sha256=ivY5svyqFD5YI8wdJHATxBrkxfcdU2Q6fDh5E_tDrl4,18
558
+ webviz_subsurface-0.2.46.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5