From 5c61236047e0b238fd0bf395e27cf4184a54efbd Mon Sep 17 00:00:00 2001 From: goktugsina Date: Tue, 31 Mar 2026 13:14:45 +0300 Subject: [PATCH 1/2] feat: add basic trajectory metrics --- movement/kinematics/__init__.py | 1 + movement/kinematics/trajectory_metrics.py | 7 +++++++ tests/test_trajectory_metrics.py | 6 ++++++ 3 files changed, 14 insertions(+) create mode 100644 movement/kinematics/trajectory_metrics.py create mode 100644 tests/test_trajectory_metrics.py diff --git a/movement/kinematics/__init__.py b/movement/kinematics/__init__.py index 7216a367d..bdcaaa8f7 100644 --- a/movement/kinematics/__init__.py +++ b/movement/kinematics/__init__.py @@ -33,3 +33,4 @@ "compute_forward_vector_angle", "compute_kinetic_energy", ] +from .trajectory_metrics import trajectory_length, trajectory_variance \ No newline at end of file diff --git a/movement/kinematics/trajectory_metrics.py b/movement/kinematics/trajectory_metrics.py new file mode 100644 index 000000000..1fb0f2d59 --- /dev/null +++ b/movement/kinematics/trajectory_metrics.py @@ -0,0 +1,7 @@ +import numpy as np + +def trajectory_length(traj): + return np.sum(np.linalg.norm(np.diff(traj, axis=0), axis=1)) + +def trajectory_variance(traj): + return np.var(traj, axis=0).sum() \ No newline at end of file diff --git a/tests/test_trajectory_metrics.py b/tests/test_trajectory_metrics.py new file mode 100644 index 000000000..ac2afcf74 --- /dev/null +++ b/tests/test_trajectory_metrics.py @@ -0,0 +1,6 @@ +import numpy as np +from movement.kinematics.trajectory_metrics import trajectory_length + +def test_trajectory_length(): + traj = np.array([[0, 0], [3, 4]]) + assert trajectory_length(traj) == 5.0 \ No newline at end of file From f4b0853d588bedf3d606aefac51dae72d2744f5f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 10:22:04 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- movement/kinematics/__init__.py | 2 +- movement/kinematics/trajectory_metrics.py | 4 +++- tests/test_trajectory_metrics.py | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/movement/kinematics/__init__.py b/movement/kinematics/__init__.py index bdcaaa8f7..415d45d44 100644 --- a/movement/kinematics/__init__.py +++ b/movement/kinematics/__init__.py @@ -33,4 +33,4 @@ "compute_forward_vector_angle", "compute_kinetic_energy", ] -from .trajectory_metrics import trajectory_length, trajectory_variance \ No newline at end of file +from .trajectory_metrics import trajectory_length, trajectory_variance diff --git a/movement/kinematics/trajectory_metrics.py b/movement/kinematics/trajectory_metrics.py index 1fb0f2d59..6b016dad7 100644 --- a/movement/kinematics/trajectory_metrics.py +++ b/movement/kinematics/trajectory_metrics.py @@ -1,7 +1,9 @@ import numpy as np + def trajectory_length(traj): return np.sum(np.linalg.norm(np.diff(traj, axis=0), axis=1)) + def trajectory_variance(traj): - return np.var(traj, axis=0).sum() \ No newline at end of file + return np.var(traj, axis=0).sum() diff --git a/tests/test_trajectory_metrics.py b/tests/test_trajectory_metrics.py index ac2afcf74..801052d65 100644 --- a/tests/test_trajectory_metrics.py +++ b/tests/test_trajectory_metrics.py @@ -1,6 +1,8 @@ import numpy as np + from movement.kinematics.trajectory_metrics import trajectory_length + def test_trajectory_length(): traj = np.array([[0, 0], [3, 4]]) - assert trajectory_length(traj) == 5.0 \ No newline at end of file + assert trajectory_length(traj) == 5.0