private ClusterPair findByClusters(Cluster c1, Cluster c2) { return distances.findByCodePair(c1, c2); }
Item(ClusterPair p) { pair = p; hash = hashCodePair(p); }
public void agglomerate(LinkageStrategy linkageStrategy) { ClusterPair minDistLink = distances.removeFirst(); if (minDistLink != null) { clusters.remove(minDistLink.getrCluster()); Double weightVal = link1.getOtherCluster(iClust).getWeightValue(); distanceValues.add(new Distance(distVal, weightVal)); distances.remove(link1); Double weightVal = link2.getOtherCluster(iClust).getWeightValue(); distanceValues.add(new Distance(distVal, weightVal)); distances.remove(link2); distances.add(newLinkage);
private DistanceMap createLinkages(double[][] distances, List<Cluster> clusters) { DistanceMap linkages = new DistanceMap(); for (int col = 0; col < clusters.size(); col++) { Cluster cluster_col = clusters.get(col); for (int row = col + 1; row < clusters.size(); row++) { ClusterPair link = new ClusterPair(); Double d = distances[0][accessFunction(row, col, clusters.size())]; link.setLinkageDistance(d); link.setlCluster(cluster_col); link.setrCluster(clusters.get(row)); linkages.add(link); } } return linkages; }
String hashCodePair(Cluster lCluster, Cluster rCluster) { return hashCodePairNames(lCluster.getName(), rCluster.getName()); }
/** * Returns Flattened clusters, i.e. clusters that are at least apart by a given threshold * @param linkageStrategy * @param threshold * @return */ public List<Cluster> flatAgg(LinkageStrategy linkageStrategy, Double threshold) { while((!isTreeComplete()) && (distances.minDist() != null) && (distances.minDist() <= threshold)) { //System.out.println("Cluster Distances: " + distances.toString()); //System.out.println("Cluster Size: " + clusters.size()); agglomerate(linkageStrategy); } //System.out.println("Final MinDistance: " + distances.minDist()); //System.out.println("Tree complete: " + isTreeComplete()); return clusters; }
public void agglomerate(LinkageStrategy linkageStrategy) { ClusterPair minDistLink = distances.removeFirst(); if (minDistLink != null) { clusters.remove(minDistLink.getrCluster()); Double weightVal = link1.getOtherCluster(iClust).getWeightValue(); distanceValues.add(new Distance(distVal, weightVal)); distances.remove(link1); Double weightVal = link2.getOtherCluster(iClust).getWeightValue(); distanceValues.add(new Distance(distVal, weightVal)); distances.remove(link2); distances.add(newLinkage);
private DistanceMap createLinkages(double[][] distances, List<Cluster> clusters) { DistanceMap linkages = new DistanceMap(); for (int col = 0; col < clusters.size(); col++) { for (int row = col + 1; row < clusters.size(); row++) { ClusterPair link = new ClusterPair(); Cluster lCluster = clusters.get(col); Cluster rCluster = clusters.get(row); link.setLinkageDistance(distances[col][row]); link.setlCluster(lCluster); link.setrCluster(rCluster); linkages.add(link); } } return linkages; }
String hashCodePair(Cluster lCluster, Cluster rCluster) { return hashCodePairNames(lCluster.getName(), rCluster.getName()); }
/** * Returns Flattened clusters, i.e. clusters that are at least apart by a given threshold * @param linkageStrategy * @param threshold * @return */ public List<Cluster> flatAgg(LinkageStrategy linkageStrategy, Double threshold) { while((!isTreeComplete()) && (distances.minDist() != null) && (distances.minDist() <= threshold)) { //System.out.println("Cluster Distances: " + distances.toString()); //System.out.println("Cluster Size: " + clusters.size()); agglomerate(linkageStrategy); } //System.out.println("Final MinDistance: " + distances.minDist()); //System.out.println("Tree complete: " + isTreeComplete()); return clusters; }
private DistanceMap createLinkages(double[][] distances, List<Cluster> clusters) { DistanceMap linkages = new DistanceMap(); for (int col = 0; col < clusters.size(); col++) { for (int row = col + 1; row < clusters.size(); row++) { ClusterPair link = new ClusterPair(); Cluster lCluster = clusters.get(col); Cluster rCluster = clusters.get(row); link.setLinkageDistance(distances[col][row]); link.setlCluster(lCluster); link.setrCluster(rCluster); linkages.add(link); } } return linkages; }
Item(ClusterPair p) { pair = p; hash = hashCodePair(p); }
private ClusterPair findByClusters(Cluster c1, Cluster c2) { return distances.findByCodePair(c1, c2); }
private DistanceMap createLinkages(double[][] distances, List<Cluster> clusters) { DistanceMap linkages = new DistanceMap(); for (int col = 0; col < clusters.size(); col++) { Cluster cluster_col = clusters.get(col); for (int row = col + 1; row < clusters.size(); row++) { ClusterPair link = new ClusterPair(); Double d = distances[0][accessFunction(row, col, clusters.size())]; link.setLinkageDistance(d); link.setlCluster(cluster_col); link.setrCluster(clusters.get(row)); linkages.add(link); } } return linkages; }
public ClusterPair findByCodePair(Cluster c1, Cluster c2) { String inCode = hashCodePair(c1, c2); return pairHash.get(inCode).pair; }
public ClusterPair findByCodePair(Cluster c1, Cluster c2) { String inCode = hashCodePair(c1, c2); return pairHash.get(inCode).pair; }
public boolean remove(ClusterPair link) { Item remove = pairHash.remove(hashCodePair(link)); if (remove == null) { return false; } remove.removed = true; data.remove(remove); return true; }
public boolean remove(ClusterPair link) { Item remove = pairHash.remove(hashCodePair(link)); if (remove == null) { return false; } remove.removed = true; data.remove(remove); return true; }
/** * Compute some kind of unique ID for a given cluster pair. * @return The ID */ String hashCodePair(ClusterPair link) { return hashCodePair(link.getlCluster(), link.getrCluster()); }
/** * Compute some kind of unique ID for a given cluster pair. * @return The ID */ String hashCodePair(ClusterPair link) { return hashCodePair(link.getlCluster(), link.getrCluster()); }