Skip to content

Commit 61b2f9a

Browse files
committed
ragged: impl to_ragged()
1 parent ea7938a commit 61b2f9a

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

trajan/traj/__init__.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from ..animation import Animation
2525

2626
if TYPE_CHECKING:
27-
from . import Dataset
27+
from .. import Dataset
2828

2929
logger = logging.getLogger(__name__)
3030

@@ -114,15 +114,15 @@ class Traj:
114114

115115
__gcrs__: pyproj.CRS
116116

117-
def __init__(self, ds, trajectory_dim, obs_dim, time_varname):
117+
def __init__(self, ds: Dataset, trajectory_dim, obs_dim, time_varname):
118118
self.ds = ds
119119
self.__plot__ = None
120120
self.__animate__ = None
121121
self.__gcrs__ = pyproj.CRS.from_epsg(4326)
122122
#self.__gcrs__ = pyproj.CRS.from_epsg(32662)
123-
self.trajectory_dim = trajectory_dim # name of trajectory dimension
124-
self.obs_dim = obs_dim # dimension along which time increases
125-
self.time_varname = time_varname
123+
self.trajectory_dim: str = trajectory_dim # name of trajectory dimension
124+
self.obs_dim: str = obs_dim # dimension along which time increases
125+
self.time_varname: str = time_varname
126126

127127
def __repr__(self):
128128
output = '=======================\n'
@@ -814,7 +814,8 @@ def distance_to_next(self):
814814
distance = xr.DataArray(distance, coords=lonfrom.coords, dims=lon.dims)
815815
distance = xr.concat((distance, distance.isel({self.obs_dim: -1})),
816816
dim=self.obs_dim) # repeating last time step to
817-
distance = distance.assign_coords({self.obs_dim: self.ds[self.obs_dim]})
817+
distance = distance.assign_coords(
818+
{self.obs_dim: self.ds[self.obs_dim]})
818819
return distance
819820

820821
def azimuth_to_next(self):
@@ -1268,7 +1269,11 @@ def append(self, da, obs_dims=None) -> Dataset:
12681269
"""
12691270

12701271
@abstractmethod
1271-
def filter(self, method='speed', max_speed=10., nsigma=5.0, side_half_width=2) -> Dataset:
1272+
def filter(self,
1273+
method='speed',
1274+
max_speed=10.,
1275+
nsigma=5.0,
1276+
side_half_width=2) -> Dataset:
12721277
"""Filter outlier positions from trajectories.
12731278
12741279
Parameters
@@ -1649,5 +1654,6 @@ def trajectories(self):
16491654
16501655
"""
16511656
bins = np.arange(self.ds.sizes[self.trajectory_dim] + 1) - 1
1652-
tids = xr.DataArray(dims=(self.trajectory_dim,), data=np.arange(self.ds.sizes[self.trajectory_dim]))
1657+
tids = xr.DataArray(dims=(self.trajectory_dim, ),
1658+
data=np.arange(self.ds.sizes[self.trajectory_dim]))
16531659
return self.ds.groupby_bins(tids, bins)

trajan/traj/ragged.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ def from_contiguous(ds, trajectory_dim, obs_dim, time_varname,
144144
"this was initially a contiguous ragged Dataset, which was converted to a TrajRagged dataset by trajan"
145145
)
146146

147-
return TrajRagged(ds_converted_to_trajRagged, trajectory_dim, obs_dim, time_varname)
147+
return TrajRagged(ds_converted_to_trajRagged, trajectory_dim, obs_dim,
148+
time_varname)
148149

149150
def timestep(self, average=np.nanmedian):
150151
td = self.ds.time.diff(dim=self.obs_dim)
@@ -411,6 +412,12 @@ def to_orthogonal(self):
411412

412413
return ds
413414

415+
def to_ragged(self, obs_dim='obs'):
416+
if self.obs_dim != obs_dim:
417+
return self.ds.rename({self.obs_dim: obs_dim}).copy()
418+
else:
419+
return self.ds.copy()
420+
414421
@__require_obs_dim__
415422
def gridtime(self, *args, **kwargs):
416423
"""

0 commit comments

Comments
 (0)