Motion Database
database
Motion database: storage, similarity, retrieval.
Classes
MotionDatabase
Store trajectories as invariants; optional FAISS index for fast retrieval. add(trajectory, metadata) -> encode and store retrieve(query_trajectory, k) -> top-k similar (by L2 on invariants or DTW).
Source code in src/dhb_xr/database/motion_db.py
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | |
Functions
load
classmethod
Load a database from <path>.npz and <path>.json.
Source code in src/dhb_xr/database/motion_db.py
save
Persist the database to disk. Writes <path>.npz (invariants) and <path>.json (metadata).
Source code in src/dhb_xr/database/motion_db.py
Functions
invariant_distance
Aligned L2 distance between invariant sequences. U, V: (N, 2*k) or (N, k_lin + k_ang). If use_quat_geodesic, angular quaternion part uses geodesic.
Source code in src/dhb_xr/database/similarity.py
soft_dtw_distance
Soft-DTW (differentiable) between two sequences.
Uses dtaidistance if available, otherwise a pure-numpy soft-DTW implementation with the gamma smoothing parameter. As gamma -> 0 this converges to hard DTW.
Source code in src/dhb_xr/database/similarity.py
Overview
Store and retrieve trajectories using invariant-based similarity search.
Main Classes
MotionDatabase
MotionDatabase
Store trajectories as invariants; optional FAISS index for fast retrieval. add(trajectory, metadata) -> encode and store retrieve(query_trajectory, k) -> top-k similar (by L2 on invariants or DTW).
Source code in src/dhb_xr/database/motion_db.py
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | |
Functions
load
classmethod
Load a database from <path>.npz and <path>.json.
Source code in src/dhb_xr/database/motion_db.py
save
Persist the database to disk. Writes <path>.npz (invariants) and <path>.json (metadata).
Source code in src/dhb_xr/database/motion_db.py
Usage Example
from dhb_xr.database.motion_db import MotionDatabase
from dhb_xr.encoder.dhb_dr import encode_dhb_dr
# Create database
db = MotionDatabase()
# Add trajectories
for trajectory in trajectories:
invariants = encode_dhb_dr(trajectory['positions'], trajectory['quaternions'])
db.add_trajectory(invariants, metadata=trajectory['metadata'])
# Search similar trajectories
query_invariants = encode_dhb_dr(query_positions, query_quaternions)
similar = db.find_similar(query_invariants, k=5)