diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/evaluation/paircounting/generator/PairGeneratorSingleCluster.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/evaluation/paircounting/generator/PairGeneratorSingleCluster.java | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/evaluation/paircounting/generator/PairGeneratorSingleCluster.java b/src/de/lmu/ifi/dbs/elki/evaluation/paircounting/generator/PairGeneratorSingleCluster.java deleted file mode 100644 index da769837..00000000 --- a/src/de/lmu/ifi/dbs/elki/evaluation/paircounting/generator/PairGeneratorSingleCluster.java +++ /dev/null @@ -1,136 +0,0 @@ -package de.lmu.ifi.dbs.elki.evaluation.paircounting.generator; - -/* - This file is part of ELKI: - Environment for Developing KDD-Applications Supported by Index-Structures - - Copyright (C) 2011 - Ludwig-Maximilians-Universität München - Lehr- und Forschungseinheit für Datenbanksysteme - ELKI Development Team - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import java.util.Arrays; - -import de.lmu.ifi.dbs.elki.data.Cluster; -import de.lmu.ifi.dbs.elki.database.ids.DBID; -import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; -import de.lmu.ifi.dbs.elki.database.ids.DBIDs; -import de.lmu.ifi.dbs.elki.database.ids.ModifiableDBIDs; -import de.lmu.ifi.dbs.elki.utilities.pairs.IntIntPair; - -/** - * Generate sorted ID pairs for a {@link Cluster}. - * - * @author Erich Schubert - */ -public class PairGeneratorSingleCluster extends PairSortedGenerator { - /** - * Ids in parent clusters - */ - private int[] parentids; - - /** - * ids in this cluster - */ - private int[] thisids; - - /** - * Position in first set - */ - private int pos1; - - /** - * Position in second set - */ - private int pos2; - - /** - * Generate pairs for a hierarchical cluster. - * - * @param cluster Cluster - * @param useHierarchical Use hierarchical mode - */ - public PairGeneratorSingleCluster(Cluster<?> cluster, boolean useHierarchical) { - // collect all parent clusters into a flat list. - java.util.Vector<Cluster<?>> allparents = new java.util.Vector<Cluster<?>>(); - if(useHierarchical && cluster.isHierarchical()) { - allparents.addAll(cluster.getParents()); - for(int i = 0; i < allparents.size(); i++) { - for(Cluster<?> newc : allparents.get(i).getParents()) { - if(!allparents.contains(newc)) { - allparents.add(newc); - } - } - } - } - - // build int array for the cluster - DBIDs cids = cluster.getIDs(); - thisids = new int[cids.size()]; - { - int j = 0; - for(DBID id : cids) { - thisids[j] = id.getIntegerID(); - j++; - } - Arrays.sort(thisids); - } - // TODO: ensure there are no duplicate IDs? - - ModifiableDBIDs idsset = DBIDUtil.newHashSet(cids); - for(Cluster<?> parent : allparents) { - idsset.addAll(parent.getIDs().asCollection()); - } - parentids = new int[idsset.size()]; - { - int j = 0; - for(DBID in : idsset) { - parentids[j] = in.getIntegerID(); - j++; - } - Arrays.sort(parentids); - } - - // initialize iterator. - pos1 = 0; - pos2 = 0; - if(thisids.length > 0) { - setCurrent(new IntIntPair(parentids[pos1], thisids[pos2])); - } - } - - /** - * Advance iterator - */ - @Override - protected IntIntPair advance() { - if(current() == null) { - return null; - } - pos2++; - if(pos2 >= thisids.length) { - pos2 = 0; - pos1++; - } - if(pos1 >= parentids.length) { - return null; - } - else { - return new IntIntPair(parentids[pos1], thisids[pos2]); - } - } -}
\ No newline at end of file |