Source code for movekit.utils

import pandas as pd
import numpy as np


[docs]def presence_3d(data): """ Check whether data is 3-dimensional. :param data: pandas Dataframe containing the movement records. :return: boolean whether column z in Dataframe. """ return 'z' in data.columns
[docs]def angle(vec1, vec2): """ Calculate angle between two vectors :param vec1: vector 1 :param vec2: vector 2 return: angle in degrees """ cos = vec1.dot(vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2)) # circumvent float precision errors. limit to [-1,1] with this check if cos > 1: cos = 1 elif cos < -1: cos = -1 return np.rad2deg(np.arccos(cos))
[docs]def cosine_similarity(vec1, vec2): vec1 = np.array(vec1) vec2 = np.array(vec2) cos = vec1.dot(vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2)) # circumvent float precision errors. limit to [-1,1] with this check if cos > 1: cos = 1 elif cos < -1: cos = -1 elif np.isnan(cos): # in case one of the given vectors is zero-vector cos = 0 return cos