/* * #%L * org.gitools.analysis * %% * Copyright (C) 2013 - 2014 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.analysis.clustering.kmeans; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * Cluster holding a set of {@link org.apache.commons.math3.ml.clustering.Clusterable} points. * @param <T> the type of points that can be clustered * @version $Id: Cluster.java 1461862 2013-03-27 21:48:10Z tn $ * @since 3.2 */ public class Cluster<T extends Clusterable> implements Serializable, Comparable<Cluster> { /** Serializable version identifier. */ private static final long serialVersionUID = -3442297081515880464L; /** The points contained in this cluster. */ private final List<T> points; private double weight; /** * Build a cluster centered at a specified point. */ public Cluster() { points = new ArrayList<T>(); } /** * Add a point to this cluster. * @param point point to add */ public void addPoint(final T point) { points.add(point); } /** * Get the points contained in the cluster. * @return points contained in the cluster */ public List<T> getPoints() { return points; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } @Override public int compareTo(Cluster o) { if (o == null) { return 1; } return -1 * Double.compare(weight, o.getWeight()); } }