API reference

Map

Classification

TemporalMap

TemporalAnalysis

FeatureExtractor

IterativeSOM

Visualization

Distances

Signal-space distance functions for AMBER.

Two families are provided:

Signal distances — compare weight vectors to an input pattern; used for BMU search. Grid distances — compare 2-D neuron positions on the map grid; used for neighbourhood update.

Each signal distance exposes:
  • a scalar function foo_distance(a, b) for single pairs

  • a matrix function foo_distance_matrix(W, p) that returns a (rows, cols) array over the

    whole weight grid W shaped (rows, cols, dim)

Vectorised matrix functions are provided for all distances except DTW and cross-correlation, which require a per-neuron loop due to their sequential nature.

AMBER.distances.chebyshev_distance(a, b)[source]

L∞ distance (maximum absolute component difference).

AMBER.distances.chebyshev_distance_matrix(weights, pattern)[source]

(rows, cols) L∞ distances.

AMBER.distances.correlation_distance(a, b)[source]

1 - abs(Pearson correlation). Pure shape similarity; ignores mean and amplitude. Ideal for comparing waveform morphology across subjects or sessions.

AMBER.distances.correlation_distance_matrix(weights, pattern)[source]

(rows, cols) correlation distances. Vectorised.

AMBER.distances.cosine_distance(a, b)[source]

1 - cosine similarity. Amplitude-invariant; suited to spectral feature vectors.

AMBER.distances.cosine_distance_matrix(weights, pattern)[source]

(rows, cols) cosine distances. Vectorised over the full grid.

AMBER.distances.cross_correlation_distance(a, b)[source]

1 - peak of normalised cross-correlation. Shift-invariant similarity.

Suitable for periodic biosignals (ECG beats, EEG oscillations) where the pattern of interest may appear at different phases across windows.

Both inputs are L2-normalised before correlation. By the Cauchy-Schwarz inequality every lag of np.correlate(a_n, b_n, 'full') is bounded by the product of the partial L2-norms of the two sub-vectors, which are each ≤ 1, so max|xcorr| [0, 1] and the returned distance is in [0, 1].

Parameters:
  • a – 1-D array

  • b – 1-D array

Returns:

distance in [0, 1]; 0 means perfect match at some lag

AMBER.distances.cross_correlation_distance_matrix(weights, pattern)[source]

(rows, cols) cross-correlation distances. Requires a per-neuron loop.

AMBER.distances.dtw_distance(a, b, band=None)[source]

Dynamic Time Warping distance with optional Sakoe-Chiba band constraint.

Handles temporal misalignment between signals — the standard choice for biosignals (ECG, EEG) and audio where patterns may be stretched or shifted in time.

Parameters:
  • a – 1-D array, first signal

  • b – 1-D array, second signal

  • band – Sakoe-Chiba half-width in samples (None = unconstrained). Constraining the band greatly reduces O(n²) cost; a value of 10–20 % of signal length is a good default for biosignals.

Returns:

DTW distance (scalar)

AMBER.distances.dtw_distance_matrix(weights, pattern, band=None)[source]

(rows, cols) DTW distances. Requires a per-neuron loop.

AMBER.distances.euclidean_distance(a, b)[source]

L2 distance between two 1-D arrays.

AMBER.distances.euclidean_distance_matrix(weights, pattern)[source]

(rows, cols) L2 distances from every neuron weight to pattern.

AMBER.distances.grid_chebyshev(ids_matrix, bmu)[source]

Chebyshev distance from every grid position to bmu. Returns (rows, cols) array.

AMBER.distances.grid_euclidean(ids_matrix, bmu)[source]

Euclidean distance from every grid position to bmu. Returns (rows, cols) array.

AMBER.distances.manhattan_distance(a, b)[source]

L1 distance. More robust to spike artefacts than L2.

AMBER.distances.manhattan_distance_matrix(weights, pattern)[source]

(rows, cols) L1 distances.