From 27b814ecd415f02812591784f1fa6921ffa73219 Mon Sep 17 00:00:00 2001 From: Runar Ask Johannessen <ruaj@equinor.com> Date: Thu, 2 Nov 2023 09:51:55 +0100 Subject: [PATCH] update README and fix filtering on bool properties --- README.md | 19 ++++++++++--------- .../explorer/objects/_child_collection.py | 14 ++++++++++---- .../explorer/objects/surface_collection.py | 6 +++++- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index f4b27da4..eb80de1b 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,10 @@ cases.users cases.fields # Apply filters -cases = cases.filter(status=["keep", "offical"], user="peesv", field="Drogon") +cases = cases.filter(status=["keep", "offical"], user="peesv", field="DROGON") for case in cases: - print(case.id) + print(case.uuid) print(case.name) # select case @@ -44,7 +44,7 @@ Get objects within a case through `case.[CONTEXT].[OBJECT_TYPE]`. ##### Realized data ```python # All realized surface objects in case -surfs = case.realization.surfaces +surfs = case.surfaces # Get filter values surfs.names @@ -52,13 +52,13 @@ surfs.tagnames surfs.iterations # Apply filters -surfs = surfs.filter(name="surface_name", tagname="surface_tagname", iteration=0) +surfs = surfs.filter(name="surface_name", tagname="surface_tagname", iteration="iter-0") # Get surface surf = surfs[0] # Metadata -surf.id +surf.uuid surf.name surf.tagname surf.iteration @@ -68,6 +68,7 @@ surf.realization surf.blob # Get xtgeo.RegularSurface +%matplotlib inline reg = surf.to_regular_surface() reg.quickplot() ``` @@ -75,16 +76,16 @@ reg.quickplot() ##### Aggregated data ```python # All aggregated surfaces in case -surfs = case.aggregation.surfaces +surfs = case.surfaces.filter(aggregation=True) # Get filter values surfs.names surfs.tagnames surfs.iterations -surfs.operations +surfs.aggregations # Apply filters -surfs = surfs.filter(name="surface_name", tagname="surface_tagname", iteration=0, operation="mean") +surfs = surfs.filter(name="surface_name", tagname="surface_tagname", iteration="iter-0", aggregation="mean") # Get surface surf = surfs[0] @@ -94,7 +95,7 @@ surf = surfs[0] ##### Observed data ```python # All observed surfaces in case -surfs = case.observation.surfaces +surfs = case.surfaces.filter(is_observation=True) # Get filter values surfs.names diff --git a/src/fmu/sumo/explorer/objects/_child_collection.py b/src/fmu/sumo/explorer/objects/_child_collection.py index 16459102..d20f4c44 100644 --- a/src/fmu/sumo/explorer/objects/_child_collection.py +++ b/src/fmu/sumo/explorer/objects/_child_collection.py @@ -166,10 +166,7 @@ def _add_filter( "fmu.context.stage.keyword": stage, "data.spec.columns.keyword": column, "_id": uuid, - "data.stratigraphic.keyword": stratigraphic, - "data.vertical_domain.keyword": vertical_domain, - "data.is_observation.keyword": is_observation, - "data.is_prediction.keyword": is_prediction + "data.vertical_domain.keyword": vertical_domain } for prop, value in prop_map.items(): @@ -183,6 +180,15 @@ def _add_filter( term = "terms" if isinstance(value, list) else "term" must.append({term: {prop: value}}) + bool_prop_map = { + "data.stratigraphic": stratigraphic, + "data.is_observation": is_observation, + "data.is_prediction": is_prediction + } + for prop, value in bool_prop_map.items(): + if value is not None: + must.append({"term": {prop: value}}) + query = {"bool": {}} if len(must) > 0: diff --git a/src/fmu/sumo/explorer/objects/surface_collection.py b/src/fmu/sumo/explorer/objects/surface_collection.py index 0230bd1b..7a70ed6f 100644 --- a/src/fmu/sumo/explorer/objects/surface_collection.py +++ b/src/fmu/sumo/explorer/objects/surface_collection.py @@ -173,6 +173,8 @@ def filter( stage: Union[str, List[str], bool] = None, time: TimeFilter = None, uuid: Union[str, List[str], bool] = None, + is_observation: bool = None, + is_prediction: bool = None ) -> "SurfaceCollection": """Filter surfaces @@ -216,7 +218,7 @@ def filter( Get all aggregated surfaces:: - surfs = case.surfacse.filter( + surfs = case.surfaces.filter( aggregation=True ) @@ -239,6 +241,8 @@ def filter( uuid=uuid, stratigraphic=stratigraphic, vertical_domain=vertical_domain, + is_observation=is_observation, + is_prediction=is_prediction ) return SurfaceCollection(self._sumo, self._case_uuid, query, self._pit)