Skip to content

Commit 3f355b1

Browse files
authored
Merge pull request #818 from DHI/move/rename_utils
Renaming utils/common to more descriptive name
2 parents b6806ae + 317b9a7 commit 3f355b1

18 files changed

+170
-185
lines changed

docs/examples/dfsu/spatial_interpolation.qmd

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,8 @@ We want to interpolate scatter data onto an existing mesh and create a new dfsu
135135

136136
**This uses lower level private utility methods not part of the public API**.
137137

138-
Interpolating from scatter data will soon be possible in a simpler way.
139-
140138
```{python}
141-
from mikeio.spatial._utils import dist_in_meters
139+
from mikeio.spatial._distance import dist_in_meters
142140
from mikeio._interpolation import get_idw_interpolant
143141
```
144142

mikeio/_time.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,31 @@
22
from datetime import datetime
33
from dataclasses import dataclass
44
from collections.abc import Iterable
5+
from typing import Sized
56

67
import pandas as pd
78

89

10+
def _n_selected_timesteps(x: Sized, k: slice | Sized) -> int:
11+
if isinstance(k, slice):
12+
k = list(range(*k.indices(len(x))))
13+
return len(k)
14+
15+
16+
def _get_time_idx_list(
17+
time: pd.DatetimeIndex,
18+
steps: int | Iterable[int] | str | datetime | pd.DatetimeIndex | slice,
19+
) -> list[int] | slice:
20+
"""Find list of idx in DatetimeIndex."""
21+
# indexing with a slice needs to be handled differently, since slicing returns a view
22+
23+
if isinstance(steps, slice):
24+
if isinstance(steps.start, int) and isinstance(steps.stop, int):
25+
return steps
26+
27+
dts = DateTimeSelector(time)
28+
return dts.isel(steps)
29+
930
@dataclass
1031
class DateTimeSelector:
1132
"""Helper class for selecting time steps from a pandas DatetimeIndex."""

mikeio/dataset/_data_plot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import matplotlib.pyplot as plt
77
from matplotlib.axes import Axes
88

9-
from ..spatial._FM_utils import _plot_map, _plot_vertical_profile
9+
from ..spatial._FM_plot import _plot_map, _plot_vertical_profile
1010

1111
from .._spectral import plot_2dspectrum
1212

mikeio/dataset/_data_utils.py

Lines changed: 0 additions & 34 deletions
This file was deleted.

mikeio/dataset/_dataarray.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from mikecore.DfsuFile import DfsuFileType
2727

2828
from ..eum import EUMType, EUMUnit, ItemInfo
29-
from ._data_utils import _get_time_idx_list, _n_selected_timesteps
29+
from .._time import _get_time_idx_list, _n_selected_timesteps
3030

3131
if TYPE_CHECKING:
3232
from ._dataset import Dataset
@@ -620,8 +620,8 @@ def __getitem__(self, key: Any) -> "DataArray":
620620
if isinstance(k, Iterable) or k != slice(None):
621621
if dims[j] == "time":
622622
# getitem accepts fancy indexing only for time
623-
k = self._get_time_idx_list(self.time, k)
624-
if self._n_selected_timesteps(self.time, k) == 0:
623+
k = _get_time_idx_list(self.time, k)
624+
if _n_selected_timesteps(self.time, k) == 0:
625625
raise IndexError("No timesteps found!")
626626
da = da.isel(**{dims[j]: k})
627627
return da
@@ -2088,17 +2088,6 @@ def _time_by_agg_axis(
20882088

20892089
return time
20902090

2091-
@staticmethod
2092-
def _get_time_idx_list(
2093-
time: pd.DatetimeIndex,
2094-
steps: int | Iterable[int] | str | datetime | pd.DatetimeIndex | slice,
2095-
) -> list[int] | slice:
2096-
"""Find list of idx in DatetimeIndex."""
2097-
return _get_time_idx_list(time, steps)
2098-
2099-
@staticmethod
2100-
def _n_selected_timesteps(time: Sized, k: slice | Sized) -> int:
2101-
return _n_selected_timesteps(time, k)
21022091

21032092
@staticmethod
21042093
def _is_boolean_mask(x: Any) -> bool:

mikeio/dataset/_dataset.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from pathlib import Path
33
from datetime import datetime
44
from copy import deepcopy
5+
import re
56
from typing import (
67
Iterable,
78
Iterator,
@@ -30,7 +31,7 @@
3031
import polars as pl
3132

3233
from ._dataarray import DataArray
33-
from ._data_utils import _to_safe_name, _get_time_idx_list, _n_selected_timesteps
34+
from .._time import _get_time_idx_list, _n_selected_timesteps
3435
from ..eum import EUMType, EUMUnit, ItemInfo
3536
from ..spatial import (
3637
GeometryFM2D,
@@ -48,6 +49,10 @@
4849

4950
from ._dataarray import IndexType
5051

52+
def _to_safe_name(name: str) -> str:
53+
tmp = re.sub("[^0-9a-zA-Z]", "_", name)
54+
return re.sub("_+", "_", tmp) # Collapse multiple underscores
55+
5156

5257
class Dataset:
5358
"""Dataset containing one or more DataArrays with common geometry and time.

mikeio/dfsu/_dfsu.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from mikecore.eum import eumQuantity, eumUnit
1717
from tqdm import trange
1818

19-
from mikeio.spatial._utils import xy_to_bbox
19+
from mikeio.spatial._distance import xy_to_bbox
2020

2121
from .. import __dfs_version__
2222
from ..dataset import Dataset
@@ -31,7 +31,7 @@
3131
)
3232
from ..spatial import Grid2D
3333
from .._track import _extract_track
34-
from ._common import get_elements_from_source, get_nodes_from_source
34+
from ._topology import get_elements_from_source, get_nodes_from_source
3535
from ..eum import ItemInfo, TimeStepUnit
3636

3737

mikeio/dfsu/_layered.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
GeometryPoint3D,
2626
GeometryFM2D,
2727
)
28-
from ..spatial._FM_utils import _plot_vertical_profile
28+
from ..spatial._FM_plot import _plot_vertical_profile
2929
from ._dfsu import (
3030
_get_dfsu_info,
3131
get_nodes_from_source,

mikeio/dfsu/_mesh.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
from ..spatial import GeometryFM2D
13-
from ._common import (
13+
from ._topology import (
1414
get_elements_from_source,
1515
get_nodes_from_source,
1616
)
File renamed without changes.

0 commit comments

Comments
 (0)