Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
113 changes: 22 additions & 91 deletions mikeio/dataset/_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
Callable,
)
import warnings
from typing_extensions import deprecated
# from warnings import deprecated


import numpy as np
Expand Down Expand Up @@ -62,23 +60,9 @@ class Dataset:
Parameters
----------
data:
a sequence or mapping of numpy arrays
By providing a mapping of data arrays, the remaining parameters are not needed
time:
a pandas.DatetimeIndex with the time instances of the data
items:
a list of ItemInfo with name, type and unit
geometry:
a geometry object e.g. Grid2D or GeometryFM2D
zn:
only relevant for Dfsu3d
dims:
named dimensions
Data arrays used to create a dataset.
validate:
Optional validation of consistency of data arrays.
dt:
placeholder timestep


Notes
---------------
Expand All @@ -99,66 +83,13 @@ class Dataset:

"""

@overload
@deprecated(
"Supplying data as a list of numpy arrays is deprecated. Use Dataset.from_numpy instead"
)
def __init__(
self,
data: (Sequence[NDArray[np.floating]]),
time: pd.DatetimeIndex | None = None,
items: Sequence[ItemInfo] | None = None,
geometry: Any = None,
zn: NDArray[np.floating] | None = None,
dims: tuple[str, ...] | None = None,
validate: bool = True,
dt: float = 1.0,
): ...

@overload
def __init__(
self,
data: (Mapping[str, DataArray] | Sequence[DataArray]),
time: pd.DatetimeIndex | None = None,
items: Sequence[ItemInfo] | None = None,
geometry: Any = None,
zn: NDArray[np.floating] | None = None,
dims: tuple[str, ...] | None = None,
validate: bool = True,
dt: float = 1.0,
): ...

def __init__(
self,
data: (
Mapping[str, DataArray]
| Sequence[DataArray]
| Sequence[NDArray[np.floating]]
),
time: pd.DatetimeIndex | None = None,
items: Sequence[ItemInfo] | None = None,
geometry: Any = None,
zn: NDArray[np.floating] | None = None,
dims: tuple[str, ...] | None = None,
validate: bool = True,
dt: float = 1.0,
):
if not self._is_DataArrays(data):
warnings.warn(
"Supplying data as a list of numpy arrays is deprecated. Use Dataset.from_numpy",
FutureWarning,
)
data = self._create_dataarrays(
data=data,
time=time,
items=items,
geometry=geometry,
zn=zn,
dims=dims,
dt=dt,
)
self._data_vars = self._init_from_DataArrays(
data, # type: ignore
data,
validate=validate,
)
self.plot = _DatasetPlotter(self)
Expand All @@ -172,9 +103,28 @@ def from_numpy(
geometry: Any | None = None,
zn: NDArray[np.floating] | None = None,
dims: tuple[str, ...] | None = None,
validate: bool = True,
dt: float = 1.0,
) -> Dataset:
"""Create Dataset from list of NumPy arrays.

Parameters
----------
data:
a sequence or mapping of numpy arrays
time:
a pandas.DatetimeIndex with the time instances of the data
items:
a list of ItemInfo with name, type and unit
geometry:
a geometry object e.g. Grid2D or GeometryFM2D
zn:
only relevant for Dfsu3d
dims:
named dimensions
dt:
placeholder timestep

"""
das = Dataset._create_dataarrays(
data=data,
time=time,
Expand All @@ -184,27 +134,8 @@ def from_numpy(
dims=dims,
dt=dt,
)

return Dataset(das)

@staticmethod
def _is_DataArrays(data: Any) -> bool:
"""Check if input is Sequence/Mapping of DataArrays."""
if isinstance(data, (Dataset, DataArray)):
return True
if isinstance(data, Mapping):
for da in data.values():
if not isinstance(da, DataArray):
raise TypeError("Please provide List/Mapping of DataArrays")
return True
if isinstance(data, Iterable):
for da in data:
if not isinstance(da, DataArray):
return False
# raise TypeError("Please provide List/Mapping of DataArrays")
return True
return False

@staticmethod
def _create_dataarrays(
data: Any,
Expand Down
2 changes: 1 addition & 1 deletion mikeio/dfs/_dfs0.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ def read(
fitems = [self.items[it] for it in item_numbers]
else:
fitems = self.items
ds = Dataset.from_numpy(fdata, time=ftime, items=fitems, validate=False)
ds = Dataset.from_numpy(fdata, time=ftime, items=fitems)

# select time steps
self._n_timesteps = dfs.FileInfo.TimeAxis.NumberOfTimeSteps
Expand Down
1 change: 0 additions & 1 deletion mikeio/dfs/_dfs1.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ def read(
items=items,
dims=tuple(dims),
geometry=self.geometry,
validate=False,
dt=self._timestep,
)

Expand Down
1 change: 0 additions & 1 deletion mikeio/dfs/_dfs2.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,6 @@ def read(
items=items,
geometry=geometry,
dims=dims,
validate=False,
)

def append(self, ds: Dataset, validate: bool = True) -> None:
Expand Down
1 change: 0 additions & 1 deletion mikeio/dfs/_dfs3.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,6 @@ def read(
items=items,
geometry=geometry,
dims=dims,
validate=False,
)

def append(self, ds: Dataset, validate: bool = True) -> None:
Expand Down
1 change: 0 additions & 1 deletion mikeio/dfsu/_dfsu.py
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,6 @@ def read(
items=item_infos,
geometry=geometry,
dims=dims,
validate=False,
dt=self.timestep,
)

Expand Down
2 changes: 0 additions & 2 deletions mikeio/dfsu/_layered.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,6 @@ def read(
geometry=geometry,
zn=data_list[0],
dims=dims,
validate=False,
dt=self.timestep,
)
else:
Expand All @@ -379,7 +378,6 @@ def read(
items=items,
geometry=geometry,
dims=dims,
validate=False,
dt=self.timestep,
)

Expand Down
1 change: 0 additions & 1 deletion mikeio/dfsu/_spectral.py
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,6 @@ def read(
items=items,
geometry=geometry,
dims=dims,
validate=False,
)

def _parse_geometry_sel(
Expand Down
5 changes: 0 additions & 5 deletions tests/test_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,6 @@ def ds3():
return mikeio.Dataset.from_numpy(data=data, time=time, items=items)


def test_list_of_numpy_deprecated() -> None:
with pytest.warns(FutureWarning, match="from_numpy"):
mikeio.Dataset([np.zeros(2)], pd.date_range("2000-1-2", freq="h", periods=2))


def test_create_wrong_data_type_error():
data = ["item 1", "item 2"]

Expand Down