Skip to content

Commit 3d21467

Browse files
Remove _SAME_AS_FIELDSET_TIME_INTERVAL
As not necessary anymore
1 parent a1e46d6 commit 3d21467

File tree

3 files changed

+7
-26
lines changed

3 files changed

+7
-26
lines changed

src/parcels/_core/particle.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import annotations
22

3-
import enum
43
import operator
54
from typing import Literal
65

@@ -15,8 +14,6 @@
1514
__all__ = ["KernelParticle", "Particle", "ParticleClass", "Variable"]
1615
_TO_WRITE_OPTIONS = [True, False, "once"]
1716

18-
_SAME_AS_FIELDSET_TIME_INTERVAL = enum.Enum("_SAME_AS_FIELDSET_TIME_INTERVAL", "VALUE")
19-
2017

2118
class Variable:
2219
"""Descriptor class that delegates data access to particle data.

src/parcels/_core/particlefile.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from zarr.storage import DirectoryStore
1515

1616
import parcels
17-
from parcels._core.particle import _SAME_AS_FIELDSET_TIME_INTERVAL, ParticleClass
17+
from parcels._core.particle import ParticleClass
1818
from parcels._core.utils.time import timedelta_to_float
1919

2020
if TYPE_CHECKING:
@@ -210,18 +210,17 @@ def _write_particle_data(self, *, particle_data, pclass, time_interval, time, in
210210
attrs = _create_variables_attribute_dict(pclass, time_interval)
211211
obs = np.zeros((self._maxids), dtype=np.int32)
212212
for var in vars_to_write:
213-
dtype = _maybe_convert_time_dtype(var.dtype)
214213
if var.name not in ["trajectory"]: # because 'trajectory' is written as coordinate
215214
if var.to_write == "once":
216215
data = np.full(
217216
(arrsize[0],),
218-
_DATATYPES_TO_FILL_VALUES[dtype],
219-
dtype=dtype,
217+
_DATATYPES_TO_FILL_VALUES[var.dtype],
218+
dtype=var.dtype,
220219
)
221220
data[ids_once] = particle_data[var.name][indices_to_write_once]
222221
dims = ["trajectory"]
223222
else:
224-
data = np.full(arrsize, _DATATYPES_TO_FILL_VALUES[dtype], dtype=dtype)
223+
data = np.full(arrsize, _DATATYPES_TO_FILL_VALUES[var.dtype], dtype=var.dtype)
225224
data[ids, 0] = particle_data[var.name][indices_to_write]
226225
dims = ["trajectory", "obs"]
227226
ds[var.name] = xr.DataArray(data=data, dims=dims, attrs=attrs[var.name])
@@ -232,15 +231,14 @@ def _write_particle_data(self, *, particle_data, pclass, time_interval, time, in
232231
Z = zarr.group(store=store, overwrite=False)
233232
obs = particle_data["obs_written"][indices_to_write]
234233
for var in vars_to_write:
235-
dtype = _maybe_convert_time_dtype(var.dtype)
236234
if self._maxids > Z[var.name].shape[0]:
237-
self._extend_zarr_dims(Z[var.name], store, dtype=dtype, axis=0)
235+
self._extend_zarr_dims(Z[var.name], store, dtype=var.dtype, axis=0)
238236
if var.to_write == "once":
239237
if len(once_ids) > 0:
240238
Z[var.name].vindex[ids_once] = particle_data[var.name][indices_to_write_once]
241239
else:
242240
if max(obs) >= Z[var.name].shape[1]: # type: ignore[type-var]
243-
self._extend_zarr_dims(Z[var.name], store, dtype=dtype, axis=1)
241+
self._extend_zarr_dims(Z[var.name], store, dtype=var.dtype, axis=1)
244242
Z[var.name].vindex[ids, obs] = particle_data[var.name][indices_to_write]
245243

246244
particle_data["obs_written"][indices_to_write] = obs + 1
@@ -270,9 +268,7 @@ def _create_variables_attribute_dict(particle: ParticleClass, time_interval: Tim
270268

271269
vars = [var for var in particle.variables if var.to_write is not False]
272270
for var in vars:
273-
fill_value = {}
274-
if var.dtype is not _SAME_AS_FIELDSET_TIME_INTERVAL.VALUE:
275-
fill_value = {"_FillValue": _DATATYPES_TO_FILL_VALUES[var.dtype]}
271+
fill_value = {"_FillValue": _DATATYPES_TO_FILL_VALUES[var.dtype]}
276272

277273
attrs[var.name] = {**var.attrs, **fill_value}
278274

@@ -305,15 +301,6 @@ def _to_write_particles(particle_data, time):
305301
)[0]
306302

307303

308-
def _maybe_convert_time_dtype(dtype: np.dtype | _SAME_AS_FIELDSET_TIME_INTERVAL) -> np.dtype:
309-
"""Convert the dtype of time to float64 if it is not already."""
310-
if dtype is _SAME_AS_FIELDSET_TIME_INTERVAL.VALUE:
311-
return np.dtype(
312-
np.int64
313-
) #! We need to have here some proper mechanism for converting particle data to the data that is to be output to zarr (namely the time needs to be converted to float seconds by subtracting the time_interval.left)
314-
return dtype
315-
316-
317304
def _get_calendar_and_units(time_interval: TimeInterval) -> dict[str, str]:
318305
calendar = None
319306
units = "seconds"

tests/test_particle.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import pytest
33

44
from parcels._core.particle import (
5-
_SAME_AS_FIELDSET_TIME_INTERVAL,
65
Particle,
76
ParticleClass,
87
Variable,
@@ -159,7 +158,5 @@ def test_create_particle_data(particle, nparticles):
159158
assert variable_array.shape[0] == nparticles
160159

161160
dtype = variable.dtype
162-
if dtype is _SAME_AS_FIELDSET_TIME_INTERVAL.VALUE:
163-
dtype = type(time_interval.left)
164161

165162
assert variable_array.dtype == dtype

0 commit comments

Comments
 (0)