Skip to content

Commit ee0b6bf

Browse files
authored
[ENH] Implement DTW with Global alignment (aeon-toolkit#2565)
* Implements Dynamic Time Warping with Global Invariances * Adds Numba JIT compilation support * Adds docs and numba support for dtw_gi and test_distance fixed * Fixes doctests * Automatic `pre-commit` fixes * Minor changes * Minor changes * Remove dtw_gi function and combine with private method _dtw_gi * Adds parameter tests * Fixes doctests * Minor changes
1 parent 5c1a5e9 commit ee0b6bf

File tree

7 files changed

+598
-0
lines changed

7 files changed

+598
-0
lines changed

aeon/distances/__init__.py

+8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
"dtw_pairwise_distance",
1919
"dtw_cost_matrix",
2020
"dtw_alignment_path",
21+
"dtw_gi_distance",
22+
"dtw_gi_pairwise_distance",
23+
"dtw_gi_cost_matrix",
24+
"dtw_gi_alignment_path",
2125
"ddtw_distance",
2226
"ddtw_pairwise_distance",
2327
"ddtw_alignment_path",
@@ -111,6 +115,10 @@
111115
dtw_alignment_path,
112116
dtw_cost_matrix,
113117
dtw_distance,
118+
dtw_gi_alignment_path,
119+
dtw_gi_cost_matrix,
120+
dtw_gi_distance,
121+
dtw_gi_pairwise_distance,
114122
dtw_pairwise_distance,
115123
edr_alignment_path,
116124
edr_cost_matrix,

aeon/distances/_distance.py

+15
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
dtw_alignment_path,
2525
dtw_cost_matrix,
2626
dtw_distance,
27+
dtw_gi_alignment_path,
28+
dtw_gi_cost_matrix,
29+
dtw_gi_distance,
30+
dtw_gi_pairwise_distance,
2731
dtw_pairwise_distance,
2832
edr_alignment_path,
2933
edr_cost_matrix,
@@ -447,6 +451,7 @@ def get_distance_function(method: Union[str, DistanceFunction]) -> DistanceFunct
447451
method Distance Function
448452
=============== ========================================
449453
'dtw' distances.dtw_distance
454+
'dtw_gi' distances.dtw_gi_distance
450455
'shape_dtw' distances.shape_dtw_distance
451456
'ddtw' distances.ddtw_distance
452457
'wdtw' distances.wdtw_distance
@@ -728,6 +733,16 @@ class DistanceType(Enum):
728733
"symmetric": True,
729734
"unequal_support": True,
730735
},
736+
{
737+
"name": "dtw_gi",
738+
"distance": dtw_gi_distance,
739+
"pairwise_distance": dtw_gi_pairwise_distance,
740+
"cost_matrix": dtw_gi_cost_matrix,
741+
"alignment_path": dtw_gi_alignment_path,
742+
"type": DistanceType.ELASTIC,
743+
"symmetric": False,
744+
"unequal_support": True,
745+
},
731746
{
732747
"name": "ddtw",
733748
"distance": ddtw_distance,

aeon/distances/elastic/__init__.py

+10
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
"dtw_pairwise_distance",
1111
"dtw_cost_matrix",
1212
"dtw_alignment_path",
13+
"dtw_gi_distance",
14+
"dtw_gi_pairwise_distance",
15+
"dtw_gi_cost_matrix",
16+
"dtw_gi_alignment_path",
1317
"ddtw_distance",
1418
"ddtw_pairwise_distance",
1519
"ddtw_alignment_path",
@@ -71,6 +75,12 @@
7175
dtw_distance,
7276
dtw_pairwise_distance,
7377
)
78+
from aeon.distances.elastic._dtw_gi import (
79+
dtw_gi_alignment_path,
80+
dtw_gi_cost_matrix,
81+
dtw_gi_distance,
82+
dtw_gi_pairwise_distance,
83+
)
7484
from aeon.distances.elastic._edr import (
7585
edr_alignment_path,
7686
edr_cost_matrix,

0 commit comments

Comments
 (0)