Skip to content

Commit 57ee1f2

Browse files
committed
Add temporal splitter, fixes #45
1 parent a35f662 commit 57ee1f2

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

mobiml/preprocessing/traj_splitter.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from movingpandas import ObservationGapSplitter
1+
from movingpandas import ObservationGapSplitter, TemporalSplitter
22
from mobiml.datasets import Dataset
33
from .utils import trajectorycollection_to_df
44

@@ -8,12 +8,33 @@ def __init__(self, data: Dataset) -> None:
88
self.data = data
99

1010
def split(self, **kwargs) -> Dataset:
11-
observation_gap = kwargs.pop("observation_gap", None)
11+
"""
12+
Split trajectories by different rules.
13+
14+
Parameters
15+
----------
16+
observation_gap : datetime.timedelta
17+
Time gap threshold.
18+
temporal_split_mode : string
19+
Split mode. ('hour', 'day', 'month' or 'year')
20+
21+
Examples
22+
--------
23+
24+
>>> TrajectorySlitter(dataset).split(observation_gap=timedelta(hours=1))
25+
26+
>>> TrajectorySlitter(dataset).split(temporal_split_mode='day')
27+
"""
28+
29+
split_by_observation_gap = kwargs.pop("observation_gap", None)
30+
split_temporally = kwargs.pop("temporal_split_mode", None)
1231

1332
trajs = self.data.to_trajs()
1433

15-
if observation_gap:
16-
trajs = ObservationGapSplitter(trajs).split(gap=observation_gap)
34+
if split_by_observation_gap:
35+
trajs = ObservationGapSplitter(trajs).split(gap=split_by_observation_gap)
36+
if split_temporally:
37+
trajs = TemporalSplitter(trajs).split(mode=split_temporally)
1738

1839
df = trajectorycollection_to_df(trajs)
1940
self.data.df = df

0 commit comments

Comments
 (0)