unipept-visualizations
Version:
The Unipept visualisation library
31 lines (24 loc) • 895 B
text/typescript
import Metric from "./Metric";
export default class EuclidianDistanceMetric implements Metric {
getDistance(matrix: number[][]): number[][] {
let output: number[][] = [];
for (let i = 0; i < matrix.length; i++) {
let row: number[] = [];
for (let j = 0; j <= i; j++) {
row.push(this.calculateEuclideanDistance(matrix[i], matrix[j]))
}
output.push(row);
}
return output;
}
private calculateEuclideanDistance(value1: number[], value2: number[]) {
if (value1.length != value2.length) {
throw "Euclidean distance can only be calculated for 2 equally sized input arrays!";
}
let powers = 0;
for (let i = 0; i < value1.length; i++) {
powers += Math.pow(value2[i] - value1[i], 2);
}
return Math.sqrt(powers);
}
}