Source code for biobss.common.signal_hjorth

from typing import Tuple

import numpy as np
from numpy.typing import ArrayLike


[docs]def hjorth_activity(sig: ArrayLike) -> float: """Calculates Hjörth activity for the given signal. Activity parameter represents the signal power. Args: sig (ArrayLike): Signal to be analyzed. Returns: float: Activity """ return np.var(sig)
[docs]def hjorth_complexity_mobility(sig: ArrayLike) -> Tuple: """Calculates Hjörth complexity and mobility for the given signal. Mobility represents the mean frequency and complexity represents the change in frequency. Args: sig (arraylike): Signal to be analyzed. Returns: Tuple: complexity, mobility """ _mobility = _hjorth_mobility(sig) f_derivative = np.gradient(sig, edge_order=1) complexity = _hjorth_mobility(f_derivative) / _mobility return complexity, _mobility
def _hjorth_mobility(sig: ArrayLike) -> float: """Calculates Hjorth mobility.""" f_derivative = np.gradient(sig, edge_order=1) mobility = np.sqrt(np.var(f_derivative) / np.var(sig)) return mobility