webviz-subsurface 0.2.32__py3-none-any.whl → 0.2.34__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.
- webviz_subsurface/_models/parameter_model.py +1 -0
- webviz_subsurface/_providers/ensemble_grid_provider/grid_viz_service.py +3 -1
- webviz_subsurface/_utils/parameter_response.py +3 -1
- webviz_subsurface/plugins/_map_viewer_fmu/_tmp_well_pick_provider.py +3 -1
- webviz_subsurface/plugins/_map_viewer_fmu/_types.py +1 -0
- webviz_subsurface/plugins/_map_viewer_fmu/_utils.py +18 -1
- webviz_subsurface/plugins/_map_viewer_fmu/callbacks.py +38 -12
- webviz_subsurface/plugins/_map_viewer_fmu/layout.py +30 -16
- webviz_subsurface/plugins/_map_viewer_fmu/map_viewer_fmu.py +33 -5
- webviz_subsurface/plugins/_rft_plotter/_utils/_rft_plotter_data_model.py +3 -0
- webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_utils/_crossplot_figure.py +4 -1
- webviz_subsurface/plugins/_segy_viewer.py +6 -26
- webviz_subsurface/plugins/_surface_with_grid_cross_section.py +3 -16
- webviz_subsurface/plugins/_surface_with_seismic_cross_section.py +3 -16
- webviz_subsurface/plugins/_volumetric_analysis/controllers/distribution_controllers.py +33 -29
- webviz_subsurface/plugins/_volumetric_analysis/controllers/selections_controllers.py +8 -12
- webviz_subsurface/plugins/_volumetric_analysis/views/main_view.py +0 -3
- webviz_subsurface/plugins/_volumetric_analysis/views/selections_view.py +2 -12
- webviz_subsurface/plugins/_volumetric_analysis/volumetric_analysis.py +45 -3
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/METADATA +11 -1
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/RECORD +26 -26
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/WHEEL +1 -1
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/LICENSE +0 -0
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/LICENSE.chromedriver +0 -0
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/entry_points.txt +0 -0
- {webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/top_level.txt +0 -0
|
@@ -151,6 +151,7 @@ class ParametersModel:
|
|
|
151
151
|
# if mix of gen_kw and sensitivity ensembles add
|
|
152
152
|
# dummy sensitivvity columns to gen_kw ensembles
|
|
153
153
|
gen_kw_mask = self._dataframe["SENSNAME"].isnull()
|
|
154
|
+
self._dataframe["SENSNAME"] = self._dataframe["SENSNAME"].astype(str)
|
|
154
155
|
self._dataframe.loc[gen_kw_mask, "SENSNAME"] = "🎲"
|
|
155
156
|
self._dataframe.loc[gen_kw_mask, "SENSCASE"] = "p10_p90"
|
|
156
157
|
|
|
@@ -478,7 +478,9 @@ class GridVizService:
|
|
|
478
478
|
i_ref = reference(0)
|
|
479
479
|
j_ref = reference(0)
|
|
480
480
|
k_ref = reference(0)
|
|
481
|
-
grid.ComputeCellStructuredCoords(
|
|
481
|
+
grid.ComputeCellStructuredCoords(
|
|
482
|
+
cell_id, i_ref, j_ref, k_ref, True # type: ignore[arg-type]
|
|
483
|
+
)
|
|
482
484
|
|
|
483
485
|
cell_property_val: Optional[np.ndarray] = None
|
|
484
486
|
if property_spec:
|
|
@@ -37,7 +37,9 @@ def filter_and_sum_responses(
|
|
|
37
37
|
if aggregation == "sum":
|
|
38
38
|
return df.groupby("REAL").sum().reset_index()[["REAL", response]]
|
|
39
39
|
if aggregation == "mean":
|
|
40
|
-
return
|
|
40
|
+
return (
|
|
41
|
+
df.groupby("REAL").mean(numeric_only=True).reset_index()[["REAL", response]]
|
|
42
|
+
)
|
|
41
43
|
raise ValueError(f"Unknown aggregation '{aggregation}'.")
|
|
42
44
|
|
|
43
45
|
|
|
@@ -3,6 +3,7 @@ from typing import Dict, List, Optional
|
|
|
3
3
|
import geojson
|
|
4
4
|
import pandas as pd
|
|
5
5
|
|
|
6
|
+
from webviz_subsurface._utils.colors import hex_to_rgb
|
|
6
7
|
from webviz_subsurface._utils.enum_shim import StrEnum
|
|
7
8
|
|
|
8
9
|
|
|
@@ -64,10 +65,11 @@ class WellPickProvider:
|
|
|
64
65
|
point = geojson.Point(coordinates=coords, validate=validate_geometry)
|
|
65
66
|
|
|
66
67
|
geocoll = geojson.GeometryCollection(geometries=[point])
|
|
67
|
-
|
|
68
68
|
properties = {
|
|
69
69
|
"name": row[WellPickTableColumns.WELL],
|
|
70
70
|
"attribute": str(row[attribute]),
|
|
71
|
+
"point_color": hex_to_rgb(row.get("point_color", "#000")),
|
|
72
|
+
"text_color": hex_to_rgb(row.get("text_color", "#000")),
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
feature = geojson.Feature(
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import base64
|
|
2
2
|
import io
|
|
3
3
|
import math
|
|
4
|
-
from typing import List
|
|
4
|
+
from typing import Dict, List
|
|
5
5
|
|
|
6
|
+
import geojson
|
|
7
|
+
import xtgeo
|
|
6
8
|
from PIL import Image, ImageDraw
|
|
7
9
|
|
|
8
10
|
|
|
@@ -39,3 +41,18 @@ def create_colormap_image_string(
|
|
|
39
41
|
draw.rectangle([(x_0, 0), (x_1, height)], fill=rgb_to_hex(color))
|
|
40
42
|
|
|
41
43
|
return f"data:image/png;base64,{image_to_base64(img)}"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def xtgeo_polygons_to_geojson(polygons: xtgeo.Polygons) -> Dict:
|
|
47
|
+
feature_arr = []
|
|
48
|
+
for name, polygon in polygons.dataframe.groupby("POLY_ID"):
|
|
49
|
+
coords = [list(zip(polygon.X_UTME, polygon.Y_UTMN))]
|
|
50
|
+
feature = geojson.Feature(
|
|
51
|
+
geometry=geojson.Polygon(coords),
|
|
52
|
+
properties={
|
|
53
|
+
"name": f"id:{name}",
|
|
54
|
+
"color": [200, 200, 200],
|
|
55
|
+
},
|
|
56
|
+
)
|
|
57
|
+
feature_arr.append(feature)
|
|
58
|
+
return geojson.FeatureCollection(features=feature_arr)
|
|
@@ -9,6 +9,7 @@ from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
|
9
9
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
import webviz_subsurface_components as wsc
|
|
12
|
+
import xtgeo
|
|
12
13
|
from dash import ALL, MATCH, Input, Output, State, callback, callback_context, no_update
|
|
13
14
|
from dash.exceptions import PreventUpdate
|
|
14
15
|
from webviz_config import EncodedFile
|
|
@@ -32,7 +33,7 @@ from webviz_subsurface._providers import (
|
|
|
32
33
|
from ._layer_model import DeckGLMapLayersModel
|
|
33
34
|
from ._tmp_well_pick_provider import WellPickProvider
|
|
34
35
|
from ._types import LayerTypes, SurfaceMode
|
|
35
|
-
from ._utils import round_to_significant
|
|
36
|
+
from ._utils import round_to_significant, xtgeo_polygons_to_geojson
|
|
36
37
|
from .layout import (
|
|
37
38
|
DefaultSettings,
|
|
38
39
|
LayoutElements,
|
|
@@ -51,6 +52,8 @@ def plugin_callbacks(
|
|
|
51
52
|
surface_server: Union[SurfaceArrayServer, SurfaceImageServer],
|
|
52
53
|
ensemble_fault_polygons_providers: Dict[str, EnsembleFaultPolygonsProvider],
|
|
53
54
|
fault_polygons_server: FaultPolygonsServer,
|
|
55
|
+
field_outline_polygons: xtgeo.Polygons,
|
|
56
|
+
field_outline_color: Tuple[float, float, float],
|
|
54
57
|
map_surface_names_to_fault_polygons: Dict[str, str],
|
|
55
58
|
well_picks_provider: Optional[WellPickProvider],
|
|
56
59
|
fault_polygon_attribute: Optional[str],
|
|
@@ -518,9 +521,27 @@ def plugin_callbacks(
|
|
|
518
521
|
layer_data={
|
|
519
522
|
"data": well_picks_provider.get_geojson(
|
|
520
523
|
selected_wells, horizon_name
|
|
521
|
-
)
|
|
524
|
+
),
|
|
525
|
+
"getLineColor": "@@=properties.point_color",
|
|
526
|
+
"getFillColor": "@@=properties.point_color",
|
|
527
|
+
"getTextColor": "@@=properties.text_color",
|
|
528
|
+
},
|
|
529
|
+
)
|
|
530
|
+
if (
|
|
531
|
+
LayoutLabels.SHOW_FIELD_OUTLINE in options
|
|
532
|
+
and field_outline_polygons is not None
|
|
533
|
+
):
|
|
534
|
+
layer_model.update_layer_by_id(
|
|
535
|
+
layer_id=f"{LayoutElements.FIELD_OUTLINE_LAYER}-{idx}",
|
|
536
|
+
layer_data={
|
|
537
|
+
"data": xtgeo_polygons_to_geojson(field_outline_polygons),
|
|
538
|
+
"filled": False,
|
|
539
|
+
"depthTest": False,
|
|
540
|
+
"lineWidthMinPixels": 2,
|
|
541
|
+
"getLineColor": field_outline_color,
|
|
522
542
|
},
|
|
523
543
|
)
|
|
544
|
+
|
|
524
545
|
viewports = []
|
|
525
546
|
view_annotations = []
|
|
526
547
|
for idx, data in enumerate(surface_elements):
|
|
@@ -550,10 +571,13 @@ def plugin_callbacks(
|
|
|
550
571
|
"show3D": False,
|
|
551
572
|
"isSync": True,
|
|
552
573
|
"layerIds": [
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
574
|
+
(
|
|
575
|
+
f"{LayoutElements.MAP3D_LAYER}-{idx}"
|
|
576
|
+
if isinstance(surface_server, SurfaceArrayServer)
|
|
577
|
+
else f"{LayoutElements.COLORMAP_LAYER}-{idx}"
|
|
578
|
+
),
|
|
556
579
|
f"{LayoutElements.FAULTPOLYGONS_LAYER}-{idx}",
|
|
580
|
+
f"{LayoutElements.FIELD_OUTLINE_LAYER}-{idx}",
|
|
557
581
|
f"{LayoutElements.WELLS_LAYER}-{idx}",
|
|
558
582
|
],
|
|
559
583
|
"name": make_viewport_label(data, tab_name, multi),
|
|
@@ -851,13 +875,15 @@ def plugin_callbacks(
|
|
|
851
875
|
"colormap": {"value": colormap, "options": colormaps},
|
|
852
876
|
"color_range": {
|
|
853
877
|
"value": color_range,
|
|
854
|
-
"step":
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
878
|
+
"step": (
|
|
879
|
+
calculate_slider_step(
|
|
880
|
+
min_value=value_range[0],
|
|
881
|
+
max_value=value_range[1],
|
|
882
|
+
steps=100,
|
|
883
|
+
)
|
|
884
|
+
if value_range[0] != value_range[1]
|
|
885
|
+
else 0
|
|
886
|
+
),
|
|
861
887
|
"range": value_range,
|
|
862
888
|
},
|
|
863
889
|
}
|
|
@@ -37,15 +37,17 @@ class LayoutElements(StrEnum):
|
|
|
37
37
|
RANGE_RESET = "color-range-reset-button"
|
|
38
38
|
RESET_BUTTOM_CLICK = "color-range-reset-stored-state"
|
|
39
39
|
FAULTPOLYGONS = "fault-polygon-toggle"
|
|
40
|
+
FIELD_OUTLINE_TOGGLE = "field-outline-toggle"
|
|
40
41
|
WRAPPER = "wrapper-for-selector-component"
|
|
41
42
|
COLORWRAPPER = "wrapper-for-color-selector-component"
|
|
42
43
|
OPTIONS = "options"
|
|
43
44
|
|
|
44
45
|
COLORMAP_LAYER = "deckglcolormaplayer"
|
|
45
|
-
|
|
46
|
+
|
|
46
47
|
WELLS_LAYER = "deckglwelllayer"
|
|
47
48
|
MAP3D_LAYER = "deckglmap3dlayer"
|
|
48
49
|
FAULTPOLYGONS_LAYER = "deckglfaultpolygonslayer"
|
|
50
|
+
FIELD_OUTLINE_LAYER = "deckglfieldoutlinelayer"
|
|
49
51
|
REALIZATIONS_FILTER = "realization-filter-selector"
|
|
50
52
|
OPTIONS_DIALOG = "options-dialog"
|
|
51
53
|
|
|
@@ -69,8 +71,8 @@ class LayoutLabels(StrEnum):
|
|
|
69
71
|
LINK = "🔗 Link"
|
|
70
72
|
FAULTPOLYGONS = "Fault polygons"
|
|
71
73
|
SHOW_FAULTPOLYGONS = "Show fault polygons"
|
|
74
|
+
SHOW_FIELD_OUTLINE = "Show field outline"
|
|
72
75
|
SHOW_WELLS = "Show wells"
|
|
73
|
-
SHOW_HILLSHADING = "Hillshading"
|
|
74
76
|
COMMON_SELECTIONS = "Options and global filters"
|
|
75
77
|
REAL_FILTER = "Realization filter"
|
|
76
78
|
WELL_FILTER = "Well filter"
|
|
@@ -183,7 +185,7 @@ def main_layout(
|
|
|
183
185
|
realizations: List[int],
|
|
184
186
|
color_tables: List[Dict],
|
|
185
187
|
show_fault_polygons: bool = True,
|
|
186
|
-
|
|
188
|
+
show_field_outline: bool = False,
|
|
187
189
|
render_surfaces_as_images: bool = True,
|
|
188
190
|
) -> html.Div:
|
|
189
191
|
return html.Div(
|
|
@@ -240,9 +242,9 @@ def main_layout(
|
|
|
240
242
|
DialogLayout(
|
|
241
243
|
get_uuid,
|
|
242
244
|
show_fault_polygons,
|
|
245
|
+
show_field_outline,
|
|
243
246
|
well_names,
|
|
244
247
|
realizations,
|
|
245
|
-
hillshading_enabled,
|
|
246
248
|
),
|
|
247
249
|
]
|
|
248
250
|
)
|
|
@@ -304,18 +306,20 @@ class DialogLayout(wcc.Dialog):
|
|
|
304
306
|
self,
|
|
305
307
|
get_uuid: Callable,
|
|
306
308
|
show_fault_polygons: bool,
|
|
309
|
+
show_field_outline: bool,
|
|
307
310
|
well_names: List[str],
|
|
308
311
|
realizations: List[int],
|
|
309
|
-
hillshading_enabled: bool = True,
|
|
310
312
|
) -> None:
|
|
311
|
-
checklist_options = [
|
|
312
|
-
checklist_values =
|
|
313
|
-
[LayoutLabels.SHOW_HILLSHADING] if hillshading_enabled else []
|
|
314
|
-
)
|
|
313
|
+
checklist_options = []
|
|
314
|
+
checklist_values = []
|
|
315
315
|
if show_fault_polygons:
|
|
316
316
|
checklist_options.append(LayoutLabels.SHOW_FAULTPOLYGONS)
|
|
317
317
|
checklist_values.append(LayoutLabels.SHOW_FAULTPOLYGONS)
|
|
318
318
|
|
|
319
|
+
if show_field_outline:
|
|
320
|
+
checklist_options.append(LayoutLabels.SHOW_FIELD_OUTLINE)
|
|
321
|
+
checklist_values.append(LayoutLabels.SHOW_FIELD_OUTLINE)
|
|
322
|
+
|
|
319
323
|
if well_names:
|
|
320
324
|
checklist_options.append(LayoutLabels.SHOW_WELLS)
|
|
321
325
|
checklist_values.append(LayoutLabels.SHOW_FAULTPOLYGONS)
|
|
@@ -358,9 +362,11 @@ class LinkCheckBox(wcc.Checklist):
|
|
|
358
362
|
clicked = selector in DefaultSettings.LINKED_SELECTORS.get(tab, [])
|
|
359
363
|
super().__init__(
|
|
360
364
|
id={
|
|
361
|
-
"id":
|
|
362
|
-
|
|
363
|
-
|
|
365
|
+
"id": (
|
|
366
|
+
get_uuid(LayoutElements.LINK)
|
|
367
|
+
if selector not in ["color_range", "colormap"]
|
|
368
|
+
else get_uuid(LayoutElements.COLORLINK)
|
|
369
|
+
),
|
|
364
370
|
"tab": tab,
|
|
365
371
|
"selector": selector,
|
|
366
372
|
},
|
|
@@ -570,9 +576,11 @@ class MapSelectorLayout(html.Div):
|
|
|
570
576
|
) -> None:
|
|
571
577
|
super().__init__(
|
|
572
578
|
style={
|
|
573
|
-
"display":
|
|
574
|
-
|
|
575
|
-
|
|
579
|
+
"display": (
|
|
580
|
+
"none"
|
|
581
|
+
if tab == Tabs.STATS and selector == MapSelector.MODE
|
|
582
|
+
else "block"
|
|
583
|
+
)
|
|
576
584
|
},
|
|
577
585
|
children=wcc.Selectors(
|
|
578
586
|
label=label,
|
|
@@ -805,7 +813,13 @@ def update_map_layers(
|
|
|
805
813
|
"parameters": {"depthTest": False},
|
|
806
814
|
}
|
|
807
815
|
)
|
|
808
|
-
|
|
816
|
+
layers.append(
|
|
817
|
+
{
|
|
818
|
+
"@@type": LayerTypes.FIELD_OUTLINE,
|
|
819
|
+
"id": f"{LayoutElements.FIELD_OUTLINE_LAYER}-{idx}",
|
|
820
|
+
"data": {"type": "FeatureCollection", "features": []},
|
|
821
|
+
}
|
|
822
|
+
)
|
|
809
823
|
if include_well_layer:
|
|
810
824
|
layers.append(
|
|
811
825
|
{
|
|
@@ -2,6 +2,7 @@ import json
|
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
from typing import Callable, Dict, List, Optional, Tuple, Union
|
|
4
4
|
|
|
5
|
+
import xtgeo
|
|
5
6
|
from dash import Dash, html
|
|
6
7
|
from webviz_config import WebvizPluginABC, WebvizSettings
|
|
7
8
|
|
|
@@ -18,7 +19,8 @@ from webviz_subsurface._providers.ensemble_surface_provider.surface_array_server
|
|
|
18
19
|
from webviz_subsurface._providers.ensemble_surface_provider.surface_image_server import (
|
|
19
20
|
SurfaceImageServer,
|
|
20
21
|
)
|
|
21
|
-
from webviz_subsurface._utils.
|
|
22
|
+
from webviz_subsurface._utils.colors import hex_to_rgb
|
|
23
|
+
from webviz_subsurface._utils.webvizstore_functions import get_path, read_csv
|
|
22
24
|
|
|
23
25
|
from ._tmp_well_pick_provider import WellPickProvider
|
|
24
26
|
from .callbacks import plugin_callbacks
|
|
@@ -39,6 +41,8 @@ A dashboard to covisualize arbitrary surfaces generated by FMU.
|
|
|
39
41
|
Default value is 'share/results/maps'.
|
|
40
42
|
* **`well_pick_file`:** A csv file with well picks. See data input.
|
|
41
43
|
* **`fault_polygon_attribute`:** Which set of fault polygons to use.
|
|
44
|
+
* **`field_outline_polygons_file_path`:** Full filepath to a field outline polygons file.
|
|
45
|
+
* **`field_outline_color:** Color of the field outline polygons (hex).
|
|
42
46
|
* **`map_surface_names_to_well_pick_names`:** Allows mapping of file surface names
|
|
43
47
|
to the relevant well pick name
|
|
44
48
|
* **`map_surface_names_to_fault_polygons`:** Allows mapping of file surface names
|
|
@@ -69,7 +73,11 @@ See [this file](https://github.com/equinor/webviz-subsurface-testdata/blob/maste
|
|
|
69
73
|
01_drogon_ahm/realization-0/iter-0/share/results/polygons/\
|
|
70
74
|
toptherys--gl_faultlines_extract_postprocess.pol) for an example.
|
|
71
75
|
|
|
76
|
+
Field outline polygons have the same format as fault polygons.
|
|
77
|
+
|
|
72
78
|
Well picks are provided as a csv file with columns `X_UTME,Y_UTMN,Z_TVDSS,MD,WELL,HORIZON`.
|
|
79
|
+
Additionally the columns `point_color` and `text_color` can be used to specify the color of the
|
|
80
|
+
point and text respectively. Use hex color codes for this (e.g. #ffffff).<br>
|
|
73
81
|
See [wellpicks.csv](https://github.com/equinor/webviz-subsurface-testdata/tree/master/\
|
|
74
82
|
observed_data/drogon_well_picks/wellpicks.csv) for an example.<br>
|
|
75
83
|
Well picks can be exported from RMS using this script: [extract_well_picks_from_rms.py]\
|
|
@@ -91,6 +99,8 @@ color-tables.json for color_tables format.
|
|
|
91
99
|
attributes: list = None,
|
|
92
100
|
well_pick_file: Path = None,
|
|
93
101
|
fault_polygon_attribute: Optional[str] = None,
|
|
102
|
+
field_outline_polygons_file_path: Path = None,
|
|
103
|
+
field_outline_color: str = "#e51000",
|
|
94
104
|
map_surface_names_to_fault_polygons: Dict[str, str] = None,
|
|
95
105
|
map_surface_names_to_well_pick_names: Dict[str, str] = None,
|
|
96
106
|
rel_surface_folder: str = "share/results/maps",
|
|
@@ -155,7 +165,16 @@ color-tables.json for color_tables format.
|
|
|
155
165
|
self._fault_polygons_server = FaultPolygonsServer.instance(app)
|
|
156
166
|
for fault_polygons_provider in self._ensemble_fault_polygons_providers.values():
|
|
157
167
|
self._fault_polygons_server.add_provider(fault_polygons_provider)
|
|
158
|
-
|
|
168
|
+
self.field_outline_polygons = None
|
|
169
|
+
self.field_outline_polygons_file_path = field_outline_polygons_file_path
|
|
170
|
+
if self.field_outline_polygons_file_path is not None:
|
|
171
|
+
try:
|
|
172
|
+
self.field_outline_polygons = xtgeo.polygons_from_file(
|
|
173
|
+
get_path(self.field_outline_polygons_file_path)
|
|
174
|
+
)
|
|
175
|
+
except ValueError:
|
|
176
|
+
print("Error reading field outline polygons file")
|
|
177
|
+
self.field_outline_color = hex_to_rgb(field_outline_color)
|
|
159
178
|
self.map_surface_names_to_fault_polygons = (
|
|
160
179
|
map_surface_names_to_fault_polygons
|
|
161
180
|
if map_surface_names_to_fault_polygons is not None
|
|
@@ -175,10 +194,13 @@ color-tables.json for color_tables format.
|
|
|
175
194
|
reals.extend([x for x in provider.realizations() if x not in reals])
|
|
176
195
|
return main_layout(
|
|
177
196
|
get_uuid=self.uuid,
|
|
178
|
-
well_names=
|
|
179
|
-
|
|
180
|
-
|
|
197
|
+
well_names=(
|
|
198
|
+
self.well_pick_provider.well_names()
|
|
199
|
+
if self.well_pick_provider is not None
|
|
200
|
+
else []
|
|
201
|
+
),
|
|
181
202
|
realizations=reals,
|
|
203
|
+
show_field_outline=self.field_outline_polygons is not None,
|
|
182
204
|
color_tables=self.color_tables,
|
|
183
205
|
render_surfaces_as_images=self.render_surfaces_as_images,
|
|
184
206
|
)
|
|
@@ -191,6 +213,8 @@ color-tables.json for color_tables format.
|
|
|
191
213
|
ensemble_fault_polygons_providers=self._ensemble_fault_polygons_providers,
|
|
192
214
|
fault_polygon_attribute=self.fault_polygon_attribute,
|
|
193
215
|
fault_polygons_server=self._fault_polygons_server,
|
|
216
|
+
field_outline_polygons=self.field_outline_polygons,
|
|
217
|
+
field_outline_color=self.field_outline_color,
|
|
194
218
|
map_surface_names_to_fault_polygons=self.map_surface_names_to_fault_polygons,
|
|
195
219
|
well_picks_provider=self.well_pick_provider,
|
|
196
220
|
color_tables=self.color_tables,
|
|
@@ -202,4 +226,8 @@ color-tables.json for color_tables format.
|
|
|
202
226
|
store_functions = []
|
|
203
227
|
if self.well_pick_file is not None:
|
|
204
228
|
store_functions.append((read_csv, [{"csv_file": self.well_pick_file}]))
|
|
229
|
+
if self.field_outline_polygons_file_path is not None:
|
|
230
|
+
store_functions.append(
|
|
231
|
+
(get_path, [{"path": self.field_outline_polygons_file_path}])
|
|
232
|
+
)
|
|
205
233
|
return store_functions
|
|
@@ -116,6 +116,9 @@ class RftPlotterDataModel:
|
|
|
116
116
|
self.ertdatadf_inactive = filter_frame(self.ertdatadf, {"ACTIVE": 0})
|
|
117
117
|
self.ertdatadf = filter_frame(self.ertdatadf, {"ACTIVE": 1})
|
|
118
118
|
|
|
119
|
+
if self.ertdatadf.empty:
|
|
120
|
+
raise ValueError("There are no active RFT points in the input data.")
|
|
121
|
+
|
|
119
122
|
self.ertdatadf["STDDEV"] = self.ertdatadf.groupby(
|
|
120
123
|
["WELL", "DATE", "ZONE", "ENSEMBLE", "TVD"]
|
|
121
124
|
)["SIMULATED"].transform("std")
|
|
@@ -17,7 +17,10 @@ def update_crossplot(
|
|
|
17
17
|
|
|
18
18
|
for _ens, ensdf in df.groupby("ENSEMBLE"):
|
|
19
19
|
dframe = (
|
|
20
|
-
ensdf.groupby(["WELL", "DATE", "ZONE", "TVD"])
|
|
20
|
+
ensdf.groupby(["WELL", "DATE", "ZONE", "TVD"])
|
|
21
|
+
.mean(numeric_only=True)
|
|
22
|
+
.reset_index()
|
|
23
|
+
.copy()
|
|
21
24
|
)
|
|
22
25
|
trace = {
|
|
23
26
|
"x": dframe["OBSERVED"],
|
|
@@ -49,7 +49,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
49
49
|
|
|
50
50
|
self.zunit = zunit
|
|
51
51
|
self.segyfiles: List[str] = [str(segy) for segy in segyfiles]
|
|
52
|
-
self.
|
|
52
|
+
self.colors = (
|
|
53
53
|
colors
|
|
54
54
|
if colors
|
|
55
55
|
else [
|
|
@@ -68,7 +68,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
68
68
|
]
|
|
69
69
|
)
|
|
70
70
|
self.init_state = self.update_state(self.segyfiles[0])
|
|
71
|
-
self.init_state.get("colorscale", self.initial_colors)
|
|
72
71
|
self.init_state.get("uirevision", str(uuid4()))
|
|
73
72
|
|
|
74
73
|
self.plotly_theme = webviz_settings.theme.plotly_theme
|
|
@@ -86,7 +85,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
86
85
|
"color_min_value": float(f"{round(cube.values.min(), 2):2f}"),
|
|
87
86
|
"color_max_value": float(f"{round(cube.values.max(), 2):2f}"),
|
|
88
87
|
"uirevision": str(uuid4()),
|
|
89
|
-
"colorscale": self.initial_colors,
|
|
90
88
|
}
|
|
91
89
|
if kwargs:
|
|
92
90
|
for key, value in kwargs.items():
|
|
@@ -121,10 +119,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
121
119
|
"id": self.uuid("zslice"),
|
|
122
120
|
"content": "Selected zslice for the seismic cube.",
|
|
123
121
|
},
|
|
124
|
-
{
|
|
125
|
-
"id": self.uuid("color-scale"),
|
|
126
|
-
"content": "Click this button to change colorscale",
|
|
127
|
-
},
|
|
128
122
|
{
|
|
129
123
|
"id": self.uuid("color-values"),
|
|
130
124
|
"content": "Drag either node of slider to truncate color ranges.",
|
|
@@ -160,18 +154,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
160
154
|
clearable=False,
|
|
161
155
|
),
|
|
162
156
|
),
|
|
163
|
-
html.Div(
|
|
164
|
-
children=[
|
|
165
|
-
wcc.Label(
|
|
166
|
-
children="Set colorscale",
|
|
167
|
-
),
|
|
168
|
-
wcc.ColorScales(
|
|
169
|
-
id=self.uuid("color-scale"),
|
|
170
|
-
colorscale=self.initial_colors,
|
|
171
|
-
nSwatches=12,
|
|
172
|
-
),
|
|
173
|
-
],
|
|
174
|
-
),
|
|
175
157
|
html.Div(
|
|
176
158
|
children=[
|
|
177
159
|
wcc.RangeSlider(
|
|
@@ -183,7 +165,8 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
183
165
|
self.init_state["min_value"],
|
|
184
166
|
self.init_state["max_value"],
|
|
185
167
|
],
|
|
186
|
-
|
|
168
|
+
marks=None,
|
|
169
|
+
tooltip={"placement": "bottom", "always_visible": True},
|
|
187
170
|
step=calculate_slider_step(
|
|
188
171
|
min_value=self.init_state["min_value"],
|
|
189
172
|
max_value=self.init_state["max_value"],
|
|
@@ -257,7 +240,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
257
240
|
Input(self.uuid("xline"), "clickData"),
|
|
258
241
|
Input(self.uuid("zslice"), "clickData"),
|
|
259
242
|
Input(self.uuid("color-values"), "value"),
|
|
260
|
-
Input(self.uuid("color-scale"), "colorscale"),
|
|
261
243
|
Input(self.uuid("zoom"), "n_clicks"),
|
|
262
244
|
Input(self.uuid("color-reset"), "n_clicks"),
|
|
263
245
|
],
|
|
@@ -272,7 +254,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
272
254
|
xcd: Union[dict, None],
|
|
273
255
|
zcd: Union[dict, None],
|
|
274
256
|
color_values: List[float],
|
|
275
|
-
colorscale: List[float],
|
|
276
257
|
_zoom_btn: Union[int, None],
|
|
277
258
|
_reset_range_btn: Union[int, None],
|
|
278
259
|
zfig: Union[dict, None],
|
|
@@ -311,7 +292,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
311
292
|
else:
|
|
312
293
|
store["color_min_value"] = color_values[0]
|
|
313
294
|
store["color_max_value"] = color_values[1]
|
|
314
|
-
store["colorscale"] = colorscale
|
|
315
295
|
return json.dumps(store)
|
|
316
296
|
|
|
317
297
|
@app.callback(
|
|
@@ -358,7 +338,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
358
338
|
reverse_y=False,
|
|
359
339
|
zmin=state["color_min_value"],
|
|
360
340
|
zmax=state["color_max_value"],
|
|
361
|
-
colorscale=
|
|
341
|
+
colorscale=self.colors,
|
|
362
342
|
uirevision=state["uirevision"],
|
|
363
343
|
)
|
|
364
344
|
fig["layout"]["shapes"] = shapes
|
|
@@ -406,7 +386,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
406
386
|
yaxis_title=self.zunit,
|
|
407
387
|
zmin=state["color_min_value"],
|
|
408
388
|
zmax=state["color_max_value"],
|
|
409
|
-
colorscale=
|
|
389
|
+
colorscale=self.colors,
|
|
410
390
|
uirevision=state["uirevision"],
|
|
411
391
|
)
|
|
412
392
|
fig["layout"]["shapes"] = shapes
|
|
@@ -451,7 +431,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
451
431
|
yaxis_title=self.zunit,
|
|
452
432
|
zmin=state["color_min_value"],
|
|
453
433
|
zmax=state["color_max_value"],
|
|
454
|
-
colorscale=
|
|
434
|
+
colorscale=self.colors,
|
|
455
435
|
uirevision=state["uirevision"],
|
|
456
436
|
)
|
|
457
437
|
fig["layout"]["shapes"] = shapes
|
|
@@ -93,7 +93,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
93
93
|
Path(gridfile).stem for gridfile in gridparameterfiles
|
|
94
94
|
]
|
|
95
95
|
self.plotly_theme = webviz_settings.theme.plotly_theme
|
|
96
|
-
self.
|
|
96
|
+
self.colors = (
|
|
97
97
|
colors
|
|
98
98
|
if colors is not None
|
|
99
99
|
else [
|
|
@@ -154,10 +154,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
154
154
|
"id": self.ids("gridparameter"),
|
|
155
155
|
"content": "The visualized grid parameter.",
|
|
156
156
|
},
|
|
157
|
-
{
|
|
158
|
-
"id": self.ids("color-scale"),
|
|
159
|
-
"content": ("Click this button to change colorscale"),
|
|
160
|
-
},
|
|
161
157
|
{
|
|
162
158
|
"id": self.ids("color-values"),
|
|
163
159
|
"content": ("Drag either node of slider to truncate color ranges"),
|
|
@@ -224,14 +220,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
224
220
|
value=self.gridparafiles[0],
|
|
225
221
|
clearable=False,
|
|
226
222
|
),
|
|
227
|
-
wcc.Label(
|
|
228
|
-
children="Set colorscale",
|
|
229
|
-
),
|
|
230
|
-
wcc.ColorScales(
|
|
231
|
-
id=self.ids("color-scale"),
|
|
232
|
-
colorscale=self.initial_colors,
|
|
233
|
-
nSwatches=12,
|
|
234
|
-
),
|
|
235
223
|
wcc.RangeSlider(
|
|
236
224
|
label="Set color range",
|
|
237
225
|
id=self.ids("color-values"),
|
|
@@ -335,10 +323,9 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
335
323
|
Input(self.ids("gridparameter"), "value"),
|
|
336
324
|
Input(self.ids("surface"), "value"),
|
|
337
325
|
Input(self.ids("color-values"), "value"),
|
|
338
|
-
Input(self.ids("color-scale"), "colorscale"),
|
|
339
326
|
],
|
|
340
327
|
)
|
|
341
|
-
def _render_fence(coords, gridparameter, surfacepath, color_values
|
|
328
|
+
def _render_fence(coords, gridparameter, surfacepath, color_values):
|
|
342
329
|
if not coords:
|
|
343
330
|
raise PreventUpdate
|
|
344
331
|
grid = load_grid(get_path(self.gridfile))
|
|
@@ -369,7 +356,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
369
356
|
s_arr=s_arr,
|
|
370
357
|
theme=self.plotly_theme,
|
|
371
358
|
s_name=self.surfacenames[self.surfacefiles.index(surfacepath)],
|
|
372
|
-
colorscale=
|
|
359
|
+
colorscale=self.colors,
|
|
373
360
|
xmin=hmin,
|
|
374
361
|
xmax=hmax,
|
|
375
362
|
ymin=vmin,
|
|
@@ -85,7 +85,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
85
85
|
else:
|
|
86
86
|
self.segynames = [Path(segyfile).stem for segyfile in segyfiles]
|
|
87
87
|
self.plotly_theme = webviz_settings.theme.plotly_theme
|
|
88
|
-
self.
|
|
88
|
+
self.colors = (
|
|
89
89
|
colors
|
|
90
90
|
if colors is not None
|
|
91
91
|
else [
|
|
@@ -148,10 +148,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
148
148
|
"id": self.ids("cube"),
|
|
149
149
|
"content": "The visualized cube.",
|
|
150
150
|
},
|
|
151
|
-
{
|
|
152
|
-
"id": self.ids("color-scale"),
|
|
153
|
-
"content": ("Click this button to change colorscale"),
|
|
154
|
-
},
|
|
155
151
|
{
|
|
156
152
|
"id": self.ids("color-values"),
|
|
157
153
|
"content": ("Drag either node of slider to truncate color ranges"),
|
|
@@ -216,14 +212,6 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
216
212
|
value=self.segyfiles[0],
|
|
217
213
|
clearable=False,
|
|
218
214
|
),
|
|
219
|
-
wcc.Label(
|
|
220
|
-
children="Set colorscale",
|
|
221
|
-
),
|
|
222
|
-
wcc.ColorScales(
|
|
223
|
-
id=self.ids("color-scale"),
|
|
224
|
-
colorscale=self.initial_colors,
|
|
225
|
-
nSwatches=12,
|
|
226
|
-
),
|
|
227
215
|
wcc.RangeSlider(
|
|
228
216
|
label="Set color range",
|
|
229
217
|
id=self.ids("color-values"),
|
|
@@ -320,10 +308,9 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
320
308
|
Input(self.ids("cube"), "value"),
|
|
321
309
|
Input(self.ids("surface"), "value"),
|
|
322
310
|
Input(self.ids("color-values"), "value"),
|
|
323
|
-
Input(self.ids("color-scale"), "colorscale"),
|
|
324
311
|
],
|
|
325
312
|
)
|
|
326
|
-
def _render_fence(coords, cubepath, surfacepath, color_values
|
|
313
|
+
def _render_fence(coords, cubepath, surfacepath, color_values):
|
|
327
314
|
if not coords:
|
|
328
315
|
raise PreventUpdate
|
|
329
316
|
cube = load_cube_data(get_path(cubepath))
|
|
@@ -337,7 +324,7 @@ e.g. [xtgeo](https://xtgeo.readthedocs.io/en/latest/).
|
|
|
337
324
|
s_arr=s_arr,
|
|
338
325
|
theme=self.plotly_theme,
|
|
339
326
|
s_name=self.surfacenames[self.surfacefiles.index(surfacepath)],
|
|
340
|
-
colorscale=
|
|
327
|
+
colorscale=self.colors,
|
|
341
328
|
xmin=hmin,
|
|
342
329
|
xmax=hmax,
|
|
343
330
|
ymin=vmin,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Callable, Optional
|
|
1
|
+
from typing import Callable, List, Optional
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
import pandas as pd
|
|
@@ -32,7 +32,7 @@ from ..views.distribution_main_layout import (
|
|
|
32
32
|
|
|
33
33
|
# pylint: disable=too-many-statements
|
|
34
34
|
def distribution_controllers(
|
|
35
|
-
get_uuid: Callable, volumemodel: InplaceVolumesModel
|
|
35
|
+
get_uuid: Callable, volumemodel: InplaceVolumesModel, colors: List[str]
|
|
36
36
|
) -> None:
|
|
37
37
|
@callback(
|
|
38
38
|
Output({"id": get_uuid("main-voldist"), "page": "custom"}, "children"),
|
|
@@ -105,18 +105,18 @@ def distribution_controllers(
|
|
|
105
105
|
nbins=selections["hist_bins"],
|
|
106
106
|
facet_col=selections["Subplots"],
|
|
107
107
|
color=selections["Color by"],
|
|
108
|
-
color_discrete_sequence=
|
|
109
|
-
color_continuous_scale=
|
|
110
|
-
color_discrete_map=
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
color_discrete_sequence=colors,
|
|
109
|
+
color_continuous_scale=colors,
|
|
110
|
+
color_discrete_map=(
|
|
111
|
+
FLUID_COLORS if selections["Color by"] == "FLUID_ZONE" else None
|
|
112
|
+
),
|
|
113
113
|
barmode=selections["barmode"],
|
|
114
114
|
boxmode=selections["barmode"],
|
|
115
|
-
text_auto=
|
|
116
|
-
selected_data, selections, volumemodel
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
text_auto=(
|
|
116
|
+
get_text_format_bar_plot(selected_data, selections, volumemodel)
|
|
117
|
+
if selections["Plot type"] == "bar"
|
|
118
|
+
else False
|
|
119
|
+
),
|
|
120
120
|
layout={
|
|
121
121
|
"title": (
|
|
122
122
|
{
|
|
@@ -151,18 +151,22 @@ def distribution_controllers(
|
|
|
151
151
|
|
|
152
152
|
return custom_plotting_layout(
|
|
153
153
|
figure=figure,
|
|
154
|
-
tables=
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
154
|
+
tables=(
|
|
155
|
+
make_tables(
|
|
156
|
+
dframe=dframe,
|
|
157
|
+
responses=list(
|
|
158
|
+
{selections["X Response"], selections["Y Response"]}
|
|
159
|
+
),
|
|
160
|
+
groups=groups,
|
|
161
|
+
volumemodel=volumemodel,
|
|
162
|
+
page_selected=page_selected,
|
|
163
|
+
selections=selections,
|
|
164
|
+
table_type="Statistics table",
|
|
165
|
+
view_height=37,
|
|
166
|
+
)
|
|
167
|
+
if selections["bottom_viz"] == "table"
|
|
168
|
+
else None
|
|
169
|
+
),
|
|
166
170
|
)
|
|
167
171
|
|
|
168
172
|
@callback(
|
|
@@ -233,7 +237,7 @@ def distribution_controllers(
|
|
|
233
237
|
data_frame=dframe,
|
|
234
238
|
values=selections["X Response"],
|
|
235
239
|
names=selector,
|
|
236
|
-
color_discrete_sequence=
|
|
240
|
+
color_discrete_sequence=colors,
|
|
237
241
|
color=selector,
|
|
238
242
|
)
|
|
239
243
|
.update_traces(marker_line={"color": "#000000", "width": 1})
|
|
@@ -250,7 +254,7 @@ def distribution_controllers(
|
|
|
250
254
|
title=f"{selections['X Response']} per {selector}",
|
|
251
255
|
barmode="overlay" if selector == selections["Color by"] else "group",
|
|
252
256
|
layout={"bargap": 0.05},
|
|
253
|
-
color_discrete_sequence=
|
|
257
|
+
color_discrete_sequence=colors,
|
|
254
258
|
color=selections["Color by"],
|
|
255
259
|
xaxis={
|
|
256
260
|
"type": "category",
|
|
@@ -263,9 +267,9 @@ def distribution_controllers(
|
|
|
263
267
|
selections=selections,
|
|
264
268
|
volumemodel=volumemodel,
|
|
265
269
|
),
|
|
266
|
-
color_discrete_map=
|
|
267
|
-
|
|
268
|
-
|
|
270
|
+
color_discrete_map=(
|
|
271
|
+
FLUID_COLORS if selections["Color by"] == "FLUID_ZONE" else None
|
|
272
|
+
),
|
|
269
273
|
).update_layout(margin_t=35)
|
|
270
274
|
|
|
271
275
|
if selections["X Response"] not in volumemodel.hc_responses:
|
|
@@ -21,10 +21,6 @@ def selections_controllers(
|
|
|
21
21
|
{"id": get_uuid("filters"), "tab": ALL, "selector": ALL, "type": ALL},
|
|
22
22
|
"value",
|
|
23
23
|
),
|
|
24
|
-
Input(
|
|
25
|
-
{"id": get_uuid("selections"), "tab": ALL, "settings": "Colorscale"},
|
|
26
|
-
"colorscale",
|
|
27
|
-
),
|
|
28
24
|
Input(get_uuid("initial-load-info"), "data"),
|
|
29
25
|
State(get_uuid("page-selected"), "data"),
|
|
30
26
|
State(get_uuid("tabs"), "value"),
|
|
@@ -37,7 +33,6 @@ def selections_controllers(
|
|
|
37
33
|
def _update_selections(
|
|
38
34
|
selectors: list,
|
|
39
35
|
filters: list,
|
|
40
|
-
colorscale: str,
|
|
41
36
|
initial_load: dict,
|
|
42
37
|
selected_page: str,
|
|
43
38
|
selected_tab: str,
|
|
@@ -63,7 +58,6 @@ def selections_controllers(
|
|
|
63
58
|
if id_value["tab"] == selected_tab
|
|
64
59
|
}
|
|
65
60
|
|
|
66
|
-
page_selections.update(Colorscale=colorscale[0] if colorscale else None)
|
|
67
61
|
page_selections.update(ctx_clicked=ctx["prop_id"])
|
|
68
62
|
|
|
69
63
|
# check if a page needs to be updated due to page refresh or
|
|
@@ -240,9 +234,9 @@ def selections_controllers(
|
|
|
240
234
|
|
|
241
235
|
settings["bottom_viz"] = {
|
|
242
236
|
"options": visualization_options,
|
|
243
|
-
"value":
|
|
244
|
-
|
|
245
|
-
|
|
237
|
+
"value": (
|
|
238
|
+
"none" if selected_page != "custom" else selections.get("bottom_viz")
|
|
239
|
+
),
|
|
246
240
|
}
|
|
247
241
|
|
|
248
242
|
return tuple(
|
|
@@ -336,9 +330,11 @@ def selections_controllers(
|
|
|
336
330
|
selector_is_multi = page_filter_settings[selector]["multi"]
|
|
337
331
|
if not multi and selector_is_multi:
|
|
338
332
|
values = [
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
333
|
+
(
|
|
334
|
+
"rms_seed"
|
|
335
|
+
if selector == "SENSNAME_CASE" and "rms_seed" in options
|
|
336
|
+
else options[0]
|
|
337
|
+
)
|
|
342
338
|
]
|
|
343
339
|
elif multi and not selector_is_multi:
|
|
344
340
|
values = options
|
|
@@ -3,7 +3,6 @@ from typing import Callable, Optional
|
|
|
3
3
|
import pandas as pd
|
|
4
4
|
import webviz_core_components as wcc
|
|
5
5
|
from dash import dcc
|
|
6
|
-
from webviz_config import WebvizConfigTheme
|
|
7
6
|
|
|
8
7
|
from webviz_subsurface._models import InplaceVolumesModel
|
|
9
8
|
|
|
@@ -22,7 +21,6 @@ from .tornado_view import tornado_main_layout, tornado_selections_layout
|
|
|
22
21
|
def main_view(
|
|
23
22
|
get_uuid: Callable,
|
|
24
23
|
volumemodel: InplaceVolumesModel,
|
|
25
|
-
theme: WebvizConfigTheme,
|
|
26
24
|
disjoint_set_df: Optional[pd.DataFrame] = None,
|
|
27
25
|
) -> dcc.Tabs:
|
|
28
26
|
tabs = []
|
|
@@ -37,7 +35,6 @@ def main_view(
|
|
|
37
35
|
uuid=get_uuid("selections"),
|
|
38
36
|
tab="voldist",
|
|
39
37
|
volumemodel=volumemodel,
|
|
40
|
-
theme=theme,
|
|
41
38
|
),
|
|
42
39
|
filter_layout(
|
|
43
40
|
uuid=get_uuid("filters"), tab="voldist", volumemodel=volumemodel
|
|
@@ -2,7 +2,6 @@ from typing import List, Optional
|
|
|
2
2
|
|
|
3
3
|
import webviz_core_components as wcc
|
|
4
4
|
from dash import dcc, html
|
|
5
|
-
from webviz_config import WebvizConfigTheme
|
|
6
5
|
|
|
7
6
|
from webviz_subsurface._models import InplaceVolumesModel
|
|
8
7
|
|
|
@@ -10,7 +9,6 @@ from webviz_subsurface._models import InplaceVolumesModel
|
|
|
10
9
|
def selections_layout(
|
|
11
10
|
uuid: str,
|
|
12
11
|
volumemodel: InplaceVolumesModel,
|
|
13
|
-
theme: WebvizConfigTheme,
|
|
14
12
|
tab: str,
|
|
15
13
|
) -> html.Div:
|
|
16
14
|
selectors = "/".join(
|
|
@@ -33,7 +31,7 @@ def selections_layout(
|
|
|
33
31
|
],
|
|
34
32
|
),
|
|
35
33
|
plot_selections_layout(uuid, volumemodel, tab),
|
|
36
|
-
settings_layout(volumemodel, uuid,
|
|
34
|
+
settings_layout(volumemodel, uuid, tab),
|
|
37
35
|
]
|
|
38
36
|
)
|
|
39
37
|
|
|
@@ -157,9 +155,8 @@ def plot_selector_dropdowns(
|
|
|
157
155
|
|
|
158
156
|
|
|
159
157
|
def settings_layout(
|
|
160
|
-
volumemodel: InplaceVolumesModel, uuid: str,
|
|
158
|
+
volumemodel: InplaceVolumesModel, uuid: str, tab: str
|
|
161
159
|
) -> wcc.Selectors:
|
|
162
|
-
theme_colors = theme.plotly_theme.get("layout", {}).get("colorway", [])
|
|
163
160
|
return wcc.Selectors(
|
|
164
161
|
label="⚙️ SETTINGS",
|
|
165
162
|
open_details=False,
|
|
@@ -168,13 +165,6 @@ def settings_layout(
|
|
|
168
165
|
subplot_xaxis_range(uuid=uuid, tab=tab),
|
|
169
166
|
histogram_options(uuid=uuid, tab=tab),
|
|
170
167
|
bar_text_options(uuid=uuid, tab=tab),
|
|
171
|
-
html.Span("Colors", style={"font-weight": "bold"}),
|
|
172
|
-
wcc.ColorScales(
|
|
173
|
-
id={"id": uuid, "tab": tab, "settings": "Colorscale"},
|
|
174
|
-
colorscale=theme_colors,
|
|
175
|
-
fixSwatches=True,
|
|
176
|
-
nSwatches=12,
|
|
177
|
-
),
|
|
178
168
|
],
|
|
179
169
|
)
|
|
180
170
|
|
|
@@ -94,6 +94,7 @@ Only relevant if `ensembles` is defined. The key (e.g. `geogrid`) will be used a
|
|
|
94
94
|
* **`non_net_facies`:** List of facies which are non-net.
|
|
95
95
|
* **`fipfile`:** Path to a yaml-file that defines a match between FIPNUM regions
|
|
96
96
|
and human readable regions, zones and etc to be used as filters.
|
|
97
|
+
* **`colors`:** List of hex colors use.
|
|
97
98
|
---
|
|
98
99
|
|
|
99
100
|
?> The input files must follow FMU standards.
|
|
@@ -153,6 +154,7 @@ reek_test_data/aggregated_data/parameters.csv)
|
|
|
153
154
|
non_net_facies: Optional[List[str]] = None,
|
|
154
155
|
fipfile: Path = None,
|
|
155
156
|
drop_failed_realizations: bool = True,
|
|
157
|
+
colors: List[str] = None,
|
|
156
158
|
):
|
|
157
159
|
super().__init__()
|
|
158
160
|
WEBVIZ_ASSETS.add(
|
|
@@ -169,7 +171,46 @@ reek_test_data/aggregated_data/parameters.csv)
|
|
|
169
171
|
f" Plugin argument drop_failed_realizations is set to {drop_failed_realizations}. "
|
|
170
172
|
"An 'OK' file in the realization runpath is used as success criteria"
|
|
171
173
|
)
|
|
172
|
-
|
|
174
|
+
self.colors = (
|
|
175
|
+
colors
|
|
176
|
+
if colors is not None
|
|
177
|
+
else [
|
|
178
|
+
"#1F77B4",
|
|
179
|
+
"#FF7F0E",
|
|
180
|
+
"#2CA02C",
|
|
181
|
+
"#D62728",
|
|
182
|
+
"#9467BD",
|
|
183
|
+
"#8C564B",
|
|
184
|
+
"#E377C2",
|
|
185
|
+
"#7F7F7F",
|
|
186
|
+
"#BCBD22",
|
|
187
|
+
"#17BECF",
|
|
188
|
+
"#FD3216",
|
|
189
|
+
"#00FE35",
|
|
190
|
+
"#6A76FC",
|
|
191
|
+
"#FED4C4",
|
|
192
|
+
"#FE00CE",
|
|
193
|
+
"#0DF9FF",
|
|
194
|
+
"#F6F926",
|
|
195
|
+
"#FF9616",
|
|
196
|
+
"#479B55",
|
|
197
|
+
"#EEA6FB",
|
|
198
|
+
"#DC587D",
|
|
199
|
+
"#D626FF",
|
|
200
|
+
"#6E899C",
|
|
201
|
+
"#00B5F7",
|
|
202
|
+
"#B68E00",
|
|
203
|
+
"#C9FBE5",
|
|
204
|
+
"#FF0092",
|
|
205
|
+
"#22FFA7",
|
|
206
|
+
"#E3EE9E",
|
|
207
|
+
"#86CE00",
|
|
208
|
+
"#BC7196",
|
|
209
|
+
"#7E7DCD",
|
|
210
|
+
"#FC6955",
|
|
211
|
+
"#E48F72",
|
|
212
|
+
]
|
|
213
|
+
)
|
|
173
214
|
if csvfile_vol:
|
|
174
215
|
table_provider = EnsembleTableProviderFactory.instance()
|
|
175
216
|
volumes_table = table_provider.create_from_ensemble_csv_file(csvfile_vol)
|
|
@@ -221,7 +262,6 @@ reek_test_data/aggregated_data/parameters.csv)
|
|
|
221
262
|
main_view(
|
|
222
263
|
get_uuid=self.uuid,
|
|
223
264
|
volumemodel=self.volmodel,
|
|
224
|
-
theme=self.theme,
|
|
225
265
|
disjoint_set_df=self.disjoint_set_df,
|
|
226
266
|
),
|
|
227
267
|
],
|
|
@@ -229,7 +269,9 @@ reek_test_data/aggregated_data/parameters.csv)
|
|
|
229
269
|
|
|
230
270
|
def set_callbacks(self) -> None:
|
|
231
271
|
selections_controllers(get_uuid=self.uuid, volumemodel=self.volmodel)
|
|
232
|
-
distribution_controllers(
|
|
272
|
+
distribution_controllers(
|
|
273
|
+
get_uuid=self.uuid, volumemodel=self.volmodel, colors=self.colors
|
|
274
|
+
)
|
|
233
275
|
tornado_controllers(
|
|
234
276
|
get_uuid=self.uuid, volumemodel=self.volmodel, theme=self.theme
|
|
235
277
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: webviz-subsurface
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.34
|
|
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
|
|
@@ -59,6 +59,16 @@ Requires-Dist: selenium>=3.141; extra == "tests"
|
|
|
59
59
|
Requires-Dist: types-setuptools; extra == "tests"
|
|
60
60
|
Requires-Dist: types-pyyaml; extra == "tests"
|
|
61
61
|
|
|
62
|
+
<h4>This package will be deprecated - we move instead all collaboration focus to the reusable React and Dash components in:
|
|
63
|
+
<ul>
|
|
64
|
+
<li>https://github.com/equinor/webviz-subsurface-components</li>
|
|
65
|
+
<li>https://github.com/equinor/webviz-core-components</li>
|
|
66
|
+
</ul>
|
|
67
|
+
and the FMU use case to https://github.com/equinor/webviz
|
|
68
|
+
</h2>
|
|
69
|
+
|
|
70
|
+
<hr/>
|
|
71
|
+
|
|
62
72
|
[](https://badge.fury.io/py/webviz-subsurface)
|
|
63
73
|
[](https://github.com/equinor/webviz-subsurface/actions?query=branch%3Amaster)
|
|
64
74
|
[](https://www.python.org/)
|
|
@@ -132,7 +132,7 @@ webviz_subsurface/_models/ensemble_set_model.py,sha256=elS5eLpktTJeeSU_44hL9SBHu
|
|
|
132
132
|
webviz_subsurface/_models/gruptree_model.py,sha256=TkPBTre3Srs7n2SJSVGbj6oWAUEaJJ811XTxCIcHjPQ,8369
|
|
133
133
|
webviz_subsurface/_models/inplace_volumes_model.py,sha256=AxVJzEeYgDgKfbP6ePpxqwX9I1ybVpho9PSzpzfWzEY,15877
|
|
134
134
|
webviz_subsurface/_models/observation_model.py,sha256=Z9wO6KfO6FcJ99x8kq1Y2m_2bCsAiWexYjhVoJkqxAY,1629
|
|
135
|
-
webviz_subsurface/_models/parameter_model.py,sha256=
|
|
135
|
+
webviz_subsurface/_models/parameter_model.py,sha256=IZOQvEM0zjzFQUsW0MzYfbo8kRVqZNJxzbe_uDW-GJE,7284
|
|
136
136
|
webviz_subsurface/_models/stratigraphy_model.py,sha256=Izvnp8pPGYlkKnRzAD6IokkAsaNyJCTrCXZdtKTf9QA,2931
|
|
137
137
|
webviz_subsurface/_models/surface_leaflet_model.py,sha256=y9KL1l9JYS84G6XdmtRvG980MIDSfBFnVPvpd8Oki68,4051
|
|
138
138
|
webviz_subsurface/_models/surface_set_model.py,sha256=NiLRsoMRsvMXody9BIpEK6_J4Q-Oc_w2mFfsguLQl2Q,10343
|
|
@@ -153,7 +153,7 @@ webviz_subsurface/_providers/ensemble_grid_provider/_roff_file_discovery.py,sha2
|
|
|
153
153
|
webviz_subsurface/_providers/ensemble_grid_provider/_xtgeo_to_vtk_explicit_structured_grid.py,sha256=AYKH-ehLo7yV4BhQSRw8htTLtqJyzyAcBENMDgtK1VI,2904
|
|
154
154
|
webviz_subsurface/_providers/ensemble_grid_provider/ensemble_grid_provider.py,sha256=_qDB8kWL8cG6F6SFtKNvGTljH1uT3CZ778oME8cAzPA,1413
|
|
155
155
|
webviz_subsurface/_providers/ensemble_grid_provider/ensemble_grid_provider_factory.py,sha256=p8gdcUfBCIj7RcvewzHJ2GeYammy6WV8J6sxXxCoY5s,6507
|
|
156
|
-
webviz_subsurface/_providers/ensemble_grid_provider/grid_viz_service.py,sha256=
|
|
156
|
+
webviz_subsurface/_providers/ensemble_grid_provider/grid_viz_service.py,sha256=RfBhkHzYVdCZE44QRk0hQLcOvJV_EZ9iYssgMYiPDt0,27711
|
|
157
157
|
webviz_subsurface/_providers/ensemble_grid_provider/provider_impl_egrid.py,sha256=Pc9bIW49DCTz8nbz0ujwk7vjA_9Y6lVqp3etidPIk9k,6446
|
|
158
158
|
webviz_subsurface/_providers/ensemble_grid_provider/provider_impl_roff.py,sha256=FUsBpUroAHAPuKZ-sB1aAFwy4An4QDPYyGQ7WDzvCN0,12509
|
|
159
159
|
webviz_subsurface/_providers/ensemble_summary_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -206,7 +206,7 @@ webviz_subsurface/_utils/ensemble_table_provider_set_factory.py,sha256=D3iqRcZ9-
|
|
|
206
206
|
webviz_subsurface/_utils/enum_shim.py,sha256=W_ytZMrzRZzCfsz3UBORg-ue6-FXe0mhThHBLay-VnM,236
|
|
207
207
|
webviz_subsurface/_utils/fanchart_plotting.py,sha256=NCqYV7T8HnpIq9ZAv9vkHwawzGQXa5nVrL5TTwgF3Y4,8646
|
|
208
208
|
webviz_subsurface/_utils/formatting.py,sha256=SfYNqrJ914NwUhDHaZbtCcP5XUOzw576r9jBw4stpUo,1391
|
|
209
|
-
webviz_subsurface/_utils/parameter_response.py,sha256=
|
|
209
|
+
webviz_subsurface/_utils/parameter_response.py,sha256=ZTPWa-cx7-rrKSYhnDcgbpWRiRHCZeJWhlpOyQOqCpQ,3819
|
|
210
210
|
webviz_subsurface/_utils/perf_timer.py,sha256=4QNz69Anz2h2mKorzEOMwk0VCLM8k6L1Yh5PbY_KT8s,794
|
|
211
211
|
webviz_subsurface/_utils/simulation_timeseries.py,sha256=FmqHEjtMVkdKQcgZfJuLyF7I9B5ymGC1fU8ZC8eIHXQ,12342
|
|
212
212
|
webviz_subsurface/_utils/statistics_plotting.py,sha256=jrA34gQpDxmQYr7wz5YEHL-kvymJLo_I7bA1U4ZVpZE,8115
|
|
@@ -230,12 +230,12 @@ webviz_subsurface/plugins/_reservoir_simulation_timeseries.py,sha256=reG1FVTDhig
|
|
|
230
230
|
webviz_subsurface/plugins/_reservoir_simulation_timeseries_onebyone.py,sha256=6OrJe2lNOvwqnWhlZoHYADiOwp75IBKGt3YG1br5Z8U,27474
|
|
231
231
|
webviz_subsurface/plugins/_reservoir_simulation_timeseries_regional.py,sha256=p4nsaD3M9Q7Erqn31TNYkZIsChmOETX2essnqZmidOU,54595
|
|
232
232
|
webviz_subsurface/plugins/_running_time_analysis_fmu.py,sha256=AgJIw7FpUy0e7n9P84W93WHrHbwakX8dyKR20ESClwk,26296
|
|
233
|
-
webviz_subsurface/plugins/_segy_viewer.py,sha256=
|
|
233
|
+
webviz_subsurface/plugins/_segy_viewer.py,sha256=WGjrGWF_BynMMQo7bebYbgWWUa4DuHCTJ4yDHpwGFHg,19784
|
|
234
234
|
webviz_subsurface/plugins/_seismic_misfit.py,sha256=97INdJs0V6i2h-bTukWRxxliF-OlTzELoh99QSimO2w,146813
|
|
235
235
|
webviz_subsurface/plugins/_subsurface_map.py,sha256=8Ca-RgpvX3qpQ6Q0U3bZTPjLpgHxc8lBeP_-qLqXR6w,7550
|
|
236
236
|
webviz_subsurface/plugins/_surface_viewer_fmu.py,sha256=DONtMEesp8LOWUjZxrgamORaVUYNwILX4p2kS4K07FQ,31232
|
|
237
|
-
webviz_subsurface/plugins/_surface_with_grid_cross_section.py,sha256=
|
|
238
|
-
webviz_subsurface/plugins/_surface_with_seismic_cross_section.py,sha256=
|
|
237
|
+
webviz_subsurface/plugins/_surface_with_grid_cross_section.py,sha256=xDSVh9Sj_SdiluCDK5uOE5XJrUVsYwB7fI3efbqY274,18201
|
|
238
|
+
webviz_subsurface/plugins/_surface_with_seismic_cross_section.py,sha256=RoPI6vZj1TsDDXwGYhIDF-QDjUxDgdw1_AJWXe8s-4U,16266
|
|
239
239
|
webviz_subsurface/plugins/_well_cross_section.py,sha256=Qw2g5Q0teA37_VWqttLrWzokZdkF65snkwMBI8hNnCE,13243
|
|
240
240
|
webviz_subsurface/plugins/_well_cross_section_fmu.py,sha256=1ERqGOSgB2bNB33QN2pMqSUbgmDLeOpRgX8fKYuAb1U,26762
|
|
241
241
|
webviz_subsurface/plugins/_bhp_qc/__init__.py,sha256=q3RaYNycC0D2liZiRzaAVvCqkSsNfJ5OmfEAA1VSy4Y,62
|
|
@@ -307,13 +307,13 @@ webviz_subsurface/plugins/_line_plotter_fmu/views/plot_options_view.py,sha256=kj
|
|
|
307
307
|
webviz_subsurface/plugins/_line_plotter_fmu/views/plot_traces_view.py,sha256=2BOwf5-tffKQ9ACyuu43WtIPR4UvUgKAVHp_6S9V6Y8,1732
|
|
308
308
|
webviz_subsurface/plugins/_map_viewer_fmu/__init__.py,sha256=zoxtQJ4PZ-Xd2QI1J8jB_Q9T6gG6A00R34inI92idEI,41
|
|
309
309
|
webviz_subsurface/plugins/_map_viewer_fmu/_layer_model.py,sha256=EK--Jwoit8_r_syTs1iWWM3O8-F1gQpNveWwPH6q20Q,3352
|
|
310
|
-
webviz_subsurface/plugins/_map_viewer_fmu/_tmp_well_pick_provider.py,sha256=
|
|
311
|
-
webviz_subsurface/plugins/_map_viewer_fmu/_types.py,sha256=
|
|
312
|
-
webviz_subsurface/plugins/_map_viewer_fmu/_utils.py,sha256
|
|
313
|
-
webviz_subsurface/plugins/_map_viewer_fmu/callbacks.py,sha256=
|
|
310
|
+
webviz_subsurface/plugins/_map_viewer_fmu/_tmp_well_pick_provider.py,sha256=7hhFtEPHHx3WhhltTrbewfh-UsSRuQcJO5_vABJHvVk,2665
|
|
311
|
+
webviz_subsurface/plugins/_map_viewer_fmu/_types.py,sha256=RmFjdfVKBdNinz523Mn6D10RlI1GxS64LS-uNaLtKp8,852
|
|
312
|
+
webviz_subsurface/plugins/_map_viewer_fmu/_utils.py,sha256=-tDOg_aK2nKUj7ArilD2cUFoKHpU18BtVZXTzw_NQ-4,1827
|
|
313
|
+
webviz_subsurface/plugins/_map_viewer_fmu/callbacks.py,sha256=I__IVhAZjzyQ7nk3QALp1sHoaj3eplfVVqa5vl2M0sk,44581
|
|
314
314
|
webviz_subsurface/plugins/_map_viewer_fmu/color_tables.py,sha256=FaORW2BFvEud9o4exvoo5ta-AFQ4DZo4Rl1dWQ6oT5s,319690
|
|
315
|
-
webviz_subsurface/plugins/_map_viewer_fmu/layout.py,sha256=
|
|
316
|
-
webviz_subsurface/plugins/_map_viewer_fmu/map_viewer_fmu.py,sha256=
|
|
315
|
+
webviz_subsurface/plugins/_map_viewer_fmu/layout.py,sha256=P9IgpDIuXyPrXUthZu4haQDVwREJ5AtvrZ6dkeDbEcI,28184
|
|
316
|
+
webviz_subsurface/plugins/_map_viewer_fmu/map_viewer_fmu.py,sha256=SDJJoOOMgvbrQJmvqL8KpidXmmaWqfp6ECOlO-8d0XQ,10412
|
|
317
317
|
webviz_subsurface/plugins/_parameter_analysis/__init__.py,sha256=YIsJxDje9XN0Qyzk7wVrZ5GIfdqnwUnnbxAh1iHvoko,39
|
|
318
318
|
webviz_subsurface/plugins/_parameter_analysis/_plugin.py,sha256=zoXVsOcHIBR4sR5nu5lSf6iQXcRSh_ciY4eM30-rbyk,5593
|
|
319
319
|
webviz_subsurface/plugins/_parameter_analysis/_types.py,sha256=at_5vL34UHclHNFSxkqO694e35do87a_br_rpt9iud0,407
|
|
@@ -402,7 +402,7 @@ webviz_subsurface/plugins/_rft_plotter/_reusable_view_element.py,sha256=gNJ2zEaf
|
|
|
402
402
|
webviz_subsurface/plugins/_rft_plotter/_types.py,sha256=jDFnX3dZ_bRY_lJmwK_L8rLixnLFc5IUbt4QgphaDBw,378
|
|
403
403
|
webviz_subsurface/plugins/_rft_plotter/_utils/__init__.py,sha256=--tdLFTsZONWf9o-yD2zQ9zvDNPpF1oqlmMU6xUsXhU,169
|
|
404
404
|
webviz_subsurface/plugins/_rft_plotter/_utils/_formation_figure.py,sha256=paIevOdFZIXMakkRgtxw7VC5gGObz_lvBHZ91yIzoMA,12919
|
|
405
|
-
webviz_subsurface/plugins/_rft_plotter/_utils/_rft_plotter_data_model.py,sha256=
|
|
405
|
+
webviz_subsurface/plugins/_rft_plotter/_utils/_rft_plotter_data_model.py,sha256=uNZ1jRalYiOZlEoqEiv92_vR2e4mvnYrQd7fxwp3Wlg,11983
|
|
406
406
|
webviz_subsurface/plugins/_rft_plotter/_views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
407
407
|
webviz_subsurface/plugins/_rft_plotter/_views/_map_view/__init__.py,sha256=T1S-QMlOla_wMdziFt2obYssR_pLN-Ov0FXvgcHHTqw,27
|
|
408
408
|
webviz_subsurface/plugins/_rft_plotter/_views/_map_view/_view.py,sha256=HCECeZ-DRb2SOxjYdBtjkHnlaexxoA-Z3JsZK0453Tw,7897
|
|
@@ -433,7 +433,7 @@ webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_settings/_ensemb
|
|
|
433
433
|
webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_settings/_plot_type.py,sha256=ift_VyRREyLdo7mlo-n_AQEWjeCklwRtWAH6H3dKw0w,1055
|
|
434
434
|
webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_settings/_size_color_settings.py,sha256=PAbWJTa75XVkIwdLj4xQC5kJ-e97A1FjG52UIwJUesE,1766
|
|
435
435
|
webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_utils/__init__.py,sha256=mgwXq6owWnfGFG03Bn7b6U83bpjJ7UL-bjYIwz61qQU,96
|
|
436
|
-
webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_utils/_crossplot_figure.py,sha256=
|
|
436
|
+
webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_utils/_crossplot_figure.py,sha256=lnaHQNjopBIT5OmfblKBwJEVDMQ6GgSOT7zh7ol1mEE,3928
|
|
437
437
|
webviz_subsurface/plugins/_rft_plotter/_views/_sim_vs_obs_view/_utils/_errorplot_figure.py,sha256=tsEP6Q_nLnpWa7Ml4tlYwJc44zFsLtbPWg46ovL67vk,1229
|
|
438
438
|
webviz_subsurface/plugins/_simulation_time_series/__init__.py,sha256=iIeZTa6kyhVdqFVJSb0_m9ZpPsv8xATZiOhl30oYXX0,42
|
|
439
439
|
webviz_subsurface/plugins/_simulation_time_series/_plugin.py,sha256=XuSy5bvNaaXR_ex09I73whwam4OlkXxZyG5DxOoVRww,22235
|
|
@@ -550,14 +550,14 @@ webviz_subsurface/plugins/_vfp_analysis/_views/_vfp_view/_view_elements/__init__
|
|
|
550
550
|
webviz_subsurface/plugins/_vfp_analysis/_views/_vfp_view/_view_elements/_vfp_graph.py,sha256=arkgdQCjJE5o_R85MhI6qGp_LMSGLlPItViDk5trVe0,488
|
|
551
551
|
webviz_subsurface/plugins/_volumetric_analysis/__init__.py,sha256=NER08MsM_rghINQ5ca6lXtaYFQwf2Yh7VBRGE5v9Ar8,52
|
|
552
552
|
webviz_subsurface/plugins/_volumetric_analysis/volume_validator_and_combinator.py,sha256=wPSKWzsOAKFVDuIdxAQ6X-t9n2mnsWma6MRVUb5702A,9844
|
|
553
|
-
webviz_subsurface/plugins/_volumetric_analysis/volumetric_analysis.py,sha256
|
|
553
|
+
webviz_subsurface/plugins/_volumetric_analysis/volumetric_analysis.py,sha256=qb--YOyq9rnXWC66EgxASoJG3h1wFbdPn1W5qU1snyY,11318
|
|
554
554
|
webviz_subsurface/plugins/_volumetric_analysis/controllers/__init__.py,sha256=KNX_8-dZ8o5cFMpgdub33Rp5GuDMmoxSup_gpV_uvW0,403
|
|
555
555
|
webviz_subsurface/plugins/_volumetric_analysis/controllers/comparison_controllers.py,sha256=RBdV_NiuMYKdx5YBrhHyWFV24cjzHX3pqrSq4tY-fmw,20441
|
|
556
|
-
webviz_subsurface/plugins/_volumetric_analysis/controllers/distribution_controllers.py,sha256=
|
|
556
|
+
webviz_subsurface/plugins/_volumetric_analysis/controllers/distribution_controllers.py,sha256=AjL6Pt2nPAw87Lbt5NtHb3jeTczQKmwzL-Tp7qhNDxQ,18209
|
|
557
557
|
webviz_subsurface/plugins/_volumetric_analysis/controllers/export_data_controllers.py,sha256=h2OSlciXmtQkP-DjUz4_HQv7h3MSAJdjjuQrMXDiOe4,1550
|
|
558
558
|
webviz_subsurface/plugins/_volumetric_analysis/controllers/fipfile_qc_controller.py,sha256=ZB-ZytZuesc49a2pUdg-1qIlEIOH7rUuQV5Zq-EiQGc,4068
|
|
559
559
|
webviz_subsurface/plugins/_volumetric_analysis/controllers/layout_controllers.py,sha256=TBssGK-rJMKW9h5Uy5-53FA8E22sakiLAQLoyWGlGFw,4142
|
|
560
|
-
webviz_subsurface/plugins/_volumetric_analysis/controllers/selections_controllers.py,sha256=
|
|
560
|
+
webviz_subsurface/plugins/_volumetric_analysis/controllers/selections_controllers.py,sha256=WKYJ2YC2pvj9qYkthtBjmiR-waYCPhFZ9MTgU-k_Gug,22889
|
|
561
561
|
webviz_subsurface/plugins/_volumetric_analysis/controllers/tornado_controllers.py,sha256=Zu5L1LPff3uMkirllZ5twhfCqpY2NzK0wuoH656Wlfg,13986
|
|
562
562
|
webviz_subsurface/plugins/_volumetric_analysis/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
563
563
|
webviz_subsurface/plugins/_volumetric_analysis/utils/table_and_figure_utils.py,sha256=RU35NlxBOMd176RfoNFCAfDu3pWS4Z_bxK15pP_lTuY,11947
|
|
@@ -568,8 +568,8 @@ webviz_subsurface/plugins/_volumetric_analysis/views/comparison_layout.py,sha256
|
|
|
568
568
|
webviz_subsurface/plugins/_volumetric_analysis/views/distribution_main_layout.py,sha256=YwMpGei23r6PpLR-7NDuwcWFcmoSxG7BkS02RQLIRmM,2656
|
|
569
569
|
webviz_subsurface/plugins/_volumetric_analysis/views/filter_view.py,sha256=4DaL6O_7rZDRjP_Qhdwq3p96E7xWuMQAOPo8XbpfUHk,5308
|
|
570
570
|
webviz_subsurface/plugins/_volumetric_analysis/views/fipfile_qc_layout.py,sha256=IRvdSuxvfA44A42G2Z6FgJEk68MBO63ODg-K6L0aqPs,2354
|
|
571
|
-
webviz_subsurface/plugins/_volumetric_analysis/views/main_view.py,sha256=
|
|
572
|
-
webviz_subsurface/plugins/_volumetric_analysis/views/selections_view.py,sha256=
|
|
571
|
+
webviz_subsurface/plugins/_volumetric_analysis/views/main_view.py,sha256=BDkE9XyW1RtmrNXHXckDn8q_1gtZ_emfKK8R_iO8Mkc,6575
|
|
572
|
+
webviz_subsurface/plugins/_volumetric_analysis/views/selections_view.py,sha256=l0Zn8YMlv6Vbpgj_0IaKYlvPmF0XI8xz5eNsLqAvTo8,10037
|
|
573
573
|
webviz_subsurface/plugins/_volumetric_analysis/views/tornado_view.py,sha256=NQU7PzgySlg7fAsRC1VJVVwqnPMbgOezefaUjjrsC8E,7527
|
|
574
574
|
webviz_subsurface/plugins/_well_analysis/__init__.py,sha256=wQqkwwvnR67eqYh4Jnejkwb5UOXNNKCe8_3HFZwafOo,34
|
|
575
575
|
webviz_subsurface/plugins/_well_analysis/_plugin.py,sha256=NIGcrnetDloLT0S3p8nt4OPFUS6x8EUVlJxrQ8huqHY,7010
|
|
@@ -614,10 +614,10 @@ webviz_subsurface/plugins/_well_log_viewer/controllers/_well_controller.py,sha25
|
|
|
614
614
|
webviz_subsurface/plugins/_well_log_viewer/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
615
615
|
webviz_subsurface/plugins/_well_log_viewer/utils/default_color_tables.py,sha256=0UgrvygPGEAuC15vn73NCXJUQLt9Dpn5QZqqq1IJkfw,4872
|
|
616
616
|
webviz_subsurface/plugins/_well_log_viewer/utils/xtgeo_well_log_to_json.py,sha256=T44-vFwvvjyo376yoL1QWDc98exG8N1cLTEzrGp-I7A,1608
|
|
617
|
-
webviz_subsurface-0.2.
|
|
618
|
-
webviz_subsurface-0.2.
|
|
619
|
-
webviz_subsurface-0.2.
|
|
620
|
-
webviz_subsurface-0.2.
|
|
621
|
-
webviz_subsurface-0.2.
|
|
622
|
-
webviz_subsurface-0.2.
|
|
623
|
-
webviz_subsurface-0.2.
|
|
617
|
+
webviz_subsurface-0.2.34.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
618
|
+
webviz_subsurface-0.2.34.dist-info/LICENSE.chromedriver,sha256=H5UWVvf6Y7Ul6i35mriz7071dWR01cR9G-5ypnZHnpM,326542
|
|
619
|
+
webviz_subsurface-0.2.34.dist-info/METADATA,sha256=a9zJbOM0oiY158ifjHuaM5NFST_DU4s5k5HUbVa8wIw,6387
|
|
620
|
+
webviz_subsurface-0.2.34.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
621
|
+
webviz_subsurface-0.2.34.dist-info/entry_points.txt,sha256=aprJRZQ2dW0An59soobTCaWzw6nEtiZBGncBhWA_C5Y,4129
|
|
622
|
+
webviz_subsurface-0.2.34.dist-info/top_level.txt,sha256=NobeVsNfPINQgUSc9hlW3aqYHO5A0SNlhacg-2YDcf4,24
|
|
623
|
+
webviz_subsurface-0.2.34.dist-info/RECORD,,
|
|
File without changes
|
{webviz_subsurface-0.2.32.dist-info → webviz_subsurface-0.2.34.dist-info}/LICENSE.chromedriver
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|