Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/testing_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
branches: [ "alpha" ]
paths:
- 'geoprob_pipe/**'
- 'test_system.py'
- 'tests/**'
workflow_dispatch:


Expand All @@ -30,5 +30,5 @@ jobs:

- name: Run tests with coverage
run: |
coverage run --source=geoprob_pipe -m pytest --ignore=_deprecated/tests
coverage run --source=geoprob_pipe -m pytest --durations=10 --ignore=_deprecated/tests
coverage report -m
3 changes: 1 addition & 2 deletions geoprob_pipe/calculations/systems/build_and_run.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from __future__ import annotations
from typing import TYPE_CHECKING, List, Optional
from geoprob_pipe.calculations.systems.mappers.calculations import (
CALCULATION_MAPPER)
from geoprob_pipe.calculations.systems.mappers.calculations import CALCULATION_MAPPER
from multiprocessing import Pool, cpu_count
from io import StringIO
import sqlite3
Expand Down
4 changes: 4 additions & 0 deletions geoprob_pipe/calculations/systems/mappers/calculations.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from geoprob_pipe.calculations.systems.wbi.system_builder import WBISystemBuilder
from geoprob_pipe.calculations.limit_states.piping_lm import limit_state_moria
from geoprob_pipe.calculations.systems.model4a.limit_state_functions import limit_state_model4a
from geoprob_pipe.calculations.limit_states.piping_lm import limit_state_wbi
# TODO: Dynamisch maken? Forceren dat naamgeving overeenkomt en
# we dynamisch importeren?

Expand All @@ -20,6 +21,9 @@
"wbi": {
"label": "WBI",
"system_builder": WBISystemBuilder,
"system_return_parameter_keys": [
"z_u", "z_h", "z_p", "z_combin", "h_exit", "phi_exit", "dphi_c_u", "i_exit", "dh_c", "dh_red"],
"limit_state_function": limit_state_wbi,
},
"moria": {
"label": "MORIA",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from geoprob_pipe.calculations.limit_states.piping_lm import (
limit_state_model4a)
from geoprob_pipe.calculations.limit_states.piping_lm import limit_state_model4a


# noinspection PyPep8Naming
Expand Down
13 changes: 3 additions & 10 deletions geoprob_pipe/calculations/systems/moria/system_builder.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
from __future__ import annotations
from geoprob_pipe.calculations.systems.moria.reliability_calculation import \
MORIACalculation
from geoprob_pipe.calculations.systems.moria.reliability_calculation import MORIACalculation
from geoprob_pipe.calculations.systems.base_objects.base_system_build import BaseSystemBuilder
# from typing import TYPE_CHECKING
# if TYPE_CHECKING:
# from geoprob_pipe import GeoProbPipe


class MoriaSystemBuilder(BaseSystemBuilder):

def __init__(self,
geopackage_filepath: str,
to_run_vakken_ids: list[int]):
super().__init__(geopackage_filepath=geopackage_filepath,
to_run_vakken_ids=to_run_vakken_ids)
def __init__(self, geopackage_filepath: str, to_run_vakken_ids: list[int]):
super().__init__(geopackage_filepath=geopackage_filepath, to_run_vakken_ids=to_run_vakken_ids)
self.system_class = MORIACalculation
209 changes: 1 addition & 208 deletions geoprob_pipe/cmd_app/comparisons/__init__.py
Original file line number Diff line number Diff line change
@@ -1,208 +1 @@
from __future__ import annotations
import sqlite3
import os
from datetime import datetime
import pandas as pd
import geopandas as gpd
from plotly.graph_objects import Figure as PlotlyFigure
from geoprob_pipe.cmd_app.comparisons.beta_dumbbell import (
dumbbell_beta, dumbbell_uplift, dumbbell_heave, dumbbell_piping)
from geoprob_pipe.cmd_app.comparisons.beta_map import (
map_delta_beta_comparison, map_ratio_beta_comparison)


class ComparisonCollector:
def __init__(self,
geopackage_filepath_1: str,
geopackage_filepath_2: str,
export_dir: str
):
""" Class voor het verzamelen van de gegevens voor het uitvoeren van de vergelijking.

:param geopackage_filepath_1: Locatie van het eerste pakket.
:param geopackage_filepath_2: Locatie van het tweede pakket.
:param export_dir: Uitvoer map.
"""
self.geopackage_filepath_1 = geopackage_filepath_1
self.geopackage_filepath_2 = geopackage_filepath_2
self.name_1 = os.path.basename(self.geopackage_filepath_1).replace(".geoprob_pipe.gpkg", "")
self.name_2 = os.path.basename(self.geopackage_filepath_2).replace(".geoprob_pipe.gpkg", "")

timestamp = datetime.now().strftime("%Y-%m-%d_%H%M")
self.export_dir = os.path.join(
export_dir, f"comparisons/{self.name_1}_{self.name_2}_{timestamp}"
)
os.makedirs(export_dir, exist_ok=True)

# Placeholders
self.df1_beta_scenarios: pd.DataFrame
self.df1_beta_limit_states: pd.DataFrame
self.df1_beta_uittredepunten: pd.DataFrame

self.df2_beta_scenarios: pd.DataFrame
self.df2_beta_limit_states: pd.DataFrame
self.df2_beta_uittredepunten: pd.DataFrame

self.gdf1_uittredepunten: gpd.GeoDataFrame
self.gdf2_uittredepunten: gpd.GeoDataFrame

# logic
self._load_result_data_from_geopackage()
self._load_uittredepunten_gdf()

def _load_result_data_from_geopackage(self):
"""Method om de data te verzamelen uit de opgegeven pakketten.

Raises:
ValueError: Als de `beta_limit_states` tabellen niet hetzelfde
formaat hebben.
ValueError: Als de `beta_scenario` tabellen niet hetzelfde
formaat hebben.
ValueError: Als de `beta_uitredepunten` tabellen niet hetzelfde
formaat hebben.
"""
conn_1 = sqlite3.connect(self.geopackage_filepath_1)
conn_2 = sqlite3.connect(self.geopackage_filepath_2)

self.df1_beta_limit_states = pd.read_sql(
"SELECT * FROM beta_limit_states;", conn_1
)
self.df2_beta_limit_states = pd.read_sql(
"SELECT * FROM beta_limit_states;", conn_2
)
if len(self.df1_beta_limit_states) != len(self.df2_beta_limit_states):
raise ValueError("De beta_limit_states tables hebben niet "
"hetzelfde formaat")

self.df1_beta_scenarios = pd.read_sql(
"SELECT * FROM beta_scenarios_final;", conn_1
)
self.df2_beta_scenarios = pd.read_sql(
"SELECT * FROM beta_scenarios_final;", conn_2
)
if len(self.df1_beta_scenarios) != len(self.df2_beta_scenarios):
raise ValueError("De beta_scenario tables hebben niet hetzelfde "
"formaat")

self.df1_beta_uittredepunten = pd.read_sql(
"SELECT * FROM beta_uittredepunten;", conn_1
)
self.df2_beta_uittredepunten = pd.read_sql(
"SELECT * FROM beta_uittredepunten;", conn_2
)
if len(self.df1_beta_uittredepunten) != len(self.df2_beta_uittredepunten):
raise ValueError("De beta_uittredepunten tables hebben niet "
"hetzelfde formaat")

conn_1.close()
conn_2.close()

def _load_uittredepunten_gdf(self):
"""Method om de geolocaties te verzamelen uit de pakketten.

Raises:
ValueError: Als de `beta_uittredepunten` tabellen niet hetzelfde
formaat hebben.
ValueError: Als de geometry van de punten niet hetzelfde formaat
hebben.
"""
self.gdf1_uittredepunten = gpd.read_file(
self.geopackage_filepath_1,
layer="beta_uittredepunten"
)
self.gdf2_uittredepunten = gpd.read_file(
self.geopackage_filepath_2,
layer="beta_uittredepunten"
)
if len(self.gdf1_uittredepunten) != len(self.gdf2_uittredepunten):
raise ValueError("De beta_uittredepunten tables hebben niet "
"hetzelfde formaat")
if set(self.gdf1_uittredepunten.geometry) != set(self.gdf2_uittredepunten.geometry):
raise ValueError("De twee sets uittredepunten hebben afwijkende "
"geometry")

def dumbbell_beta(self, export: bool = False) -> PlotlyFigure:
"""Maak een dumbbell plot van de beta waardes van de twee pakketten om
te kunnen vergelijken. Dit is plot voor de gecombineerde beta voor de
uittredepunten.

Args:
export: Figuur exporteren. Defaults to False.

Returns:
PlotlyFigure
"""
return dumbbell_beta(self, export)

def dumbbell_uplift(self, export: bool = False) -> list[PlotlyFigure]:
"""Maak een dumbbell plot van de beta waardes van de twee pakketten om
te kunnen vergelijken. Dit is plot voor de uplift limit state beta voor de
uittredepunten.

Args:
export: Figuur exporteren. Defaults to False.

Returns:
PlotlyFigure
"""
return dumbbell_uplift(self, export)

def dumbbell_heave(self, export: bool = False) -> list[PlotlyFigure]:
"""Maak een dumbbell plot van de beta waardes van de twee pakketten om
te kunnen vergelijken. Dit is plot voor de heave limit state beta voor de
uittredepunten.

Args:
export: Figuur exporteren. Defaults to False.

Returns:
PlotlyFigure
"""
return dumbbell_heave(self, export)

def dumbbell_piping(self, export: bool = False) -> list[PlotlyFigure]:
"""Maak een dumbbell plot van de beta waardes van de twee pakketten om
te kunnen vergelijken. Dit is plot voor de piping limit state beta voor
de uittredepunten.

Args:
export: Figuur exporteren. Defaults to False.

Returns:
PlotlyFigure
"""
return dumbbell_piping(self, export)

def map_delta_beta_comparison(self, export: bool = False) -> PlotlyFigure:
"""Maak een overzichtskaart met het absolute verschil tussen de twee
beta waardes van alle uittredepunten.

Args:
export: Figuur exporteren. Defaults to False.

Returns:
PlotlyFigure
"""
return map_delta_beta_comparison(self, export)

def map_ratio_beta_comparison(self, export: bool = False) -> PlotlyFigure:
"""Maak een overzichtskaart met het relative verschil tussen de twee
beta waardes van alle uittredepunten.

Args:
export: Figuur exporteren. Defaults to False.

Returns:
PlotlyFigure
"""
return map_ratio_beta_comparison(self, export)

def create_and_export_figures(self):
"""Exporteer alle figuren die gemaakt kunnen worden.
"""
dumbbell_beta(self, export=True)
dumbbell_uplift(self, export=True)
dumbbell_heave(self, export=True)
dumbbell_piping(self, export=True)
map_delta_beta_comparison(self, export=True)
map_ratio_beta_comparison(self, export=True)
from geoprob_pipe.cmd_app.comparisons.collector import ComparisonCollector
2 changes: 1 addition & 1 deletion geoprob_pipe/cmd_app/comparisons/beta_dumbbell.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def _add_traces(comparison: ComparisonCollector,


def _add_vak_id(comparison: ComparisonCollector, fig: go.Figure) -> go.Figure:
"""Helper functie om de vakken in de dumbell plot te tekenen.
"""Helper functie om de vakken in de dumbbell plot te tekenen.

Args:
comparison: ComparisonCollecter object.
Expand Down
Loading