package edu.harvard.mcb.leschziner.analyze; import com.googlecode.javacv.cpp.opencv_core; import com.googlecode.javacv.cpp.opencv_core.CvMat; public class Clusters { private final CvMat clusterLabels; private final CvMat clusterCenters; private final double[] compactness; public Clusters(CvMat clusterLabels, CvMat clusterCenters, double[] compactness) { super(); this.clusterLabels = clusterLabels; this.clusterCenters = clusterCenters; this.compactness = compactness; } public CvMat getClusterLabels() { return clusterLabels; } public CvMat getClusterCenters() { return clusterCenters; } public double[] getCompactness() { return compactness; } public int clusterCount() { return clusterCenters.rows(); } public int sampleCount() { return clusterLabels.size(); } /** * Gets the cluster label for a particular row * * @param index * @return */ public int getClusterForSample(int index) { return (int) clusterLabels.get(index, 0); } public CvMat getClusterCenter(int clusterIndex) { CvMat center = CvMat.createHeader(1, clusterCenters.cols(), opencv_core.CV_32FC1); opencv_core.cvGetRow(clusterCenters, center, clusterIndex); return center; } public double getClusterCompactness(int clusterIndex) { return compactness[clusterIndex]; } }