@Override protected ExtractFlatClusteringFromHierarchy makeInstance() { switch(thresholdmode){ case NO_THRESHOLD: case BY_MINCLUSTERS: return new ExtractFlatClusteringFromHierarchy(algorithm, minclusters, hierarchical, nosingletons); case BY_THRESHOLD: return new ExtractFlatClusteringFromHierarchy(algorithm, threshold, hierarchical, nosingletons); default: throw new AbortException("Unknown extraction mode."); } } }
final int split = findSplit(order, it, lambda); for(DBIDIter it2 = cluster_leads.iter(); it2.valid(); it2.advance(), i++) { double depth = cluster_dist.get(i); clusters.add(makeCluster(it2, depth, cluster_dbids.get(i))); clus = makeCluster(it, Double.NaN, DBIDUtil.deref(it)); cids.add(it); Cluster<DendrogramModel> npclus = makeCluster(succ, depth, cids); if(clus != null) { dendrogram.addChildCluster(npclus, clus); pclus = makeCluster(succ, depth, cids); pclus = makeCluster(succ, depth, DBIDUtil.EMPTYDBIDS); dendrogram.addChildCluster(pclus, makeCluster(succ, Double.NaN, DBIDUtil.deref(succ))); for(DBIDIter it2 = cluster_leads.iter(); it2.valid(); it2.advance(), i++) { double depth = cluster_dist.get(i); dendrogram.addToplevelCluster(makeCluster(it2, depth, cluster_dbids.get(i))); int clusterid = cluster_map.intValue(it); if(clusterid < 0) { dendrogram.addToplevelCluster(makeCluster(it, Double.NaN, DBIDUtil.deref(it)));
@Override public void processNewResult(ResultHierarchy hier, Result newResult) { ArrayList<PointerHierarchyRepresentationResult> hrs = ResultUtil.filterResults(hier, newResult, PointerHierarchyRepresentationResult.class); for(PointerHierarchyRepresentationResult pointerresult : hrs) { DBIDs ids = pointerresult.getDBIDs(); DBIDDataStore pi = pointerresult.getParentStore(); DoubleDataStore lambda = pointerresult.getParentDistanceStore(); Clustering<DendrogramModel> result = inner.extractClusters(ids, pi, lambda); pointerresult.addChildResult(result); } }
@Override public Clustering<DendrogramModel> run(Database database) { PointerHierarchyRepresentationResult pointerresult = algorithm.run(database); DBIDs ids = pointerresult.getDBIDs(); DBIDDataStore pi = pointerresult.getParentStore(); DoubleDataStore lambda = pointerresult.getParentDistanceStore(); Clustering<DendrogramModel> result = extractClusters(ids, pi, lambda); result.addChildResult(pointerresult); return result; }