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.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, somax|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_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.