org.dulab.jsparcehc.SparseHierarchicalClusterer Maven / Gradle / Ivy
package org.dulab.jsparcehc;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public abstract class SparseHierarchicalClusterer {
final List vertices;
final Matrix matrix;
final Dendogram dendogram;
public SparseHierarchicalClusterer(Matrix m) {
if (m.getNumElements() == 0)
throw new IllegalStateException("Matrix is empty");
matrix = m;
vertices = IntStream.range(0, m.getDimension())
.mapToObj(BinaryTreeVertex::new)
.collect(Collectors.toList());
dendogram = new Dendogram(m.getDimension());
}
public BinaryTreeVertex getVertex(int id) {
return vertices.get(id);
}
public Map getLabels() {
Map labels = new HashMap<>();
matrix.init();
MatrixElement element;
while ((element = matrix.getNext()) != null) {
labels.put(element.row, vertices.get(element.row).ancestor.id);
labels.put(element.col, vertices.get(element.col).ancestor.id);
}
return labels;
}
public abstract Dendogram cluster(float threshold);
public void updateGraph(int id1, int id2, float distance) {
dendogram.add(id1, id2, distance);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy