dynsight.analysis.two_nn_estimator

dynsight.analysis.two_nn_estimator(data, metric)[source]

Computes the intrinsic dimension with Two-NN estimator.

See for reference: Facco, E., d’Errico, M., Rodriguez, A. et al., Sci Rep 7, 12140 (2017). https://doi.org/10.1038/s41598-017-11873-y

Parameters:
  • data (NDArray[np.float64]) – Has shape (n_atoms, n_frames, n_dims)

  • metric (Callable[[NDArray[np.float64], NDArray[np.float64]], float]) – Distance metric for scipy.spatial.distance.cdist.

Return type:

float

Example

from sklearn.datasets import make_swiss_roll
import numpy as np
from dynsight.analysis import two_nn_estimator
from scipy.spatial.distance import euclidean

# Swiss roll is intrinsically 2-dimensional
frame, _ = make_swiss_roll(
    n_samples=500,
    noise=0.05,
    random_state=42,
)

# Create artificial trajectory with 3 identical frames
data = np.stack([frame, frame, frame], axis=1)

intr_dim = two_nn_estimator(data, euclidean)