Source code for dipy.segment.metric

__all__ = [
    "MinimumAverageDirectFlipMetric",
    "Metric",
    "CosineMetric",
    "AveragePointwiseEuclideanMetric",
    "EuclideanMetric",
    "dist",
    "mdf",
    "mean_manhattan_distance",
    "mean_euclidean_distance",
]

import numpy as np

from dipy.segment.metricspeed import (
    AveragePointwiseEuclideanMetric,
    CosineMetric,
    Metric,
    MinimumAverageDirectFlipMetric,
    SumPointwiseEuclideanMetric,
    dist,
)

# Creates aliases
EuclideanMetric = SumPointwiseEuclideanMetric


[docs] def mdf(s1, s2): """Computes the MDF (Minimum average Direct-Flip) distance between two streamlines. Streamlines must have the same number of points. See :footcite:p:`Garyfallidis2012a` for a definition of the distance. Parameters ---------- s1 : 2D array A streamline (sequence of N-dimensional points). s2 : 2D array A streamline (sequence of N-dimensional points). Returns ------- double Distance between two streamlines. References ---------- .. footbibliography:: """ return dist(MinimumAverageDirectFlipMetric(), s1, s2)
[docs] def mean_manhattan_distance(a, b): """Compute the average Manhattan-L1 distance (MDF without flip) Arrays are representing a single streamline or a list of streamlines that have the same number of N-dimensional points (two last axis). Parameters ---------- a : 2D or 3D array A streamline or concatenated streamlines (array of S streamlines by P points in N dimension). b : 2D or 3D array A streamline or concatenated streamlines (array of S streamlines by P points in N dimension). Returns ------- 1D array Distance between each S streamlines """ return np.mean(np.sum(np.abs(a - b), axis=-1), axis=-1)
[docs] def mean_euclidean_distance(a, b): """Compute the average Euclidean-L2 distance (MDF without flip) Arrays are representing a single streamline or a list of streamlines that have the same number of N-dimensional points (two last axis). Parameters ---------- a : 2D or 3D array A streamline or concatenated streamlines (array of S streamlines by P points in N dimension). b : 2D or 3D array A streamline or concatenated streamlines (array of S streamlines by P points in N dimension). Returns ------- 1D array Distance between each S streamlines """ return np.mean(np.sqrt(np.sum(np.square(a - b), axis=-1)), axis=-1)