Skip to content

Commit

Permalink
[DEP] Remove Split mixin (#1613)
Browse files Browse the repository at this point in the history
* deprecate Split mixin

* remove legacy

* remove legacy
  • Loading branch information
TonyBagnall authored Jul 16, 2024
1 parent f1b7b9b commit 7419537
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 41 deletions.
30 changes: 0 additions & 30 deletions aeon/transformations/_split.py

This file was deleted.

6 changes: 3 additions & 3 deletions aeon/transformations/collection/hog1d.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

import numpy as np

from aeon.transformations._split import SplitsTimeSeries
from aeon.transformations.collection import BaseCollectionTransformer
from aeon.utils import split_series


class HOG1DTransformer(BaseCollectionTransformer, SplitsTimeSeries):
class HOG1DTransformer(BaseCollectionTransformer):
"""HOG1D transform.
This transformer calculates the HOG1D transform [1] of a collection of time series.
Expand Down Expand Up @@ -89,7 +89,7 @@ def _calculate_hog1ds(self, X):
"""
# Firstly, split the time series into approx equal
# length intervals
splitTimeSeries = self._split(X)
splitTimeSeries = split_series(X, self.n_intervals)
HOG1Ds = []

for x in range(len(splitTimeSeries)):
Expand Down
7 changes: 4 additions & 3 deletions aeon/transformations/collection/slope.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

import numpy as np

from aeon.transformations._split import SplitsTimeSeries
from aeon.transformations.collection import BaseCollectionTransformer
from aeon.utils import split_series


class SlopeTransformer(BaseCollectionTransformer, SplitsTimeSeries):
class SlopeTransformer(BaseCollectionTransformer):
"""Piecewise slope transformation.
Class to perform a slope transformation on a collection of time series.
Expand Down Expand Up @@ -67,8 +67,9 @@ def _transform(self, X, y=None):
for i in range(n_cases):
case_data = []
for j in range(n_channels):
splits = split_series(X[i][j], self.n_intervals)
# Calculate gradients
res = [self._get_gradient(x) for x in self._split(X[i][j])]
res = [self._get_gradient(x) for x in splits]
case_data.append(res)
full_data.append(np.asarray(case_data))

Expand Down
2 changes: 2 additions & 0 deletions aeon/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"get_cutoff",
"update_data",
"get_window",
"split_series",
"ALL_TIME_SERIES_TYPES",
"COLLECTIONS_DATA_TYPES",
"SERIES_DATA_TYPES",
Expand All @@ -16,4 +17,5 @@
HIERARCHICAL_DATA_TYPES,
SERIES_DATA_TYPES,
)
from aeon.utils._split import split_series
from aeon.utils.index_functions import get_cutoff, get_window, update_data
27 changes: 27 additions & 0 deletions aeon/utils/_split.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""Split function."""


def split_series(X, n_intervals):
"""Split a time series into approximately equal intervals.
Adopted from = https://stackoverflow.com/questions/2130016/
splitting-a-list-into-n-parts-of-approximately
-equal-length
Parameters
----------
X : a numpy array of shape = [n_timepoints]
Returns
-------
output : a numpy array of shape = [self.n_intervals,interval_size]
"""
avg = len(X) / float(n_intervals)
output = []
beginning = 0.0

while beginning < len(X):
output.append(X[int(beginning) : int(beginning + avg)])
beginning += avg

return output
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import numpy as np
import pytest

from aeon.transformations._split import SplitsTimeSeries
from aeon.utils import split_series

X = np.arange(10)
testdata = [
Expand All @@ -13,11 +13,9 @@


@pytest.mark.parametrize("X,n_intervals,expected", testdata)
def test_split_(X, n_intervals, expected):
def test_split_series(X, n_intervals, expected):
"""Test the splitting of a time series into multiple intervals."""
splitter = SplitsTimeSeries()
splitter.n_intervals = n_intervals
res = splitter._split(X)
res = split_series(X, n_intervals)

assert len(res) == n_intervals
for x, y in zip(res, expected):
Expand Down

0 comments on commit 7419537

Please sign in to comment.