/* Copyright (C) 2009 Diego Darriba 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 2 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package es.uvigo.darwin.prottest.selection.model; import es.uvigo.darwin.prottest.model.Model; import es.uvigo.darwin.prottest.selection.InformationCriterion; /** * This class provides a Model wrapper including information about a concrete * model selection criterion, like AIC, BIC or corrected AIC. * * @see Model * @see InformationCriterion */ public abstract class SelectionModel implements Comparable<SelectionModel> { /** The contained model. */ private Model model; /** The sample size. */ protected double sampleSize; /** The model selection absolute value. */ protected double value; /** The model selection relative weight value. */ private double weightValue; /** The model selection delta value. */ private double deltaValue; /** The cumulative weight value, in relationship to * the order of the models sorted by the model selection * criterion. */ private double cumulativeWeightValue; /** Model lays into the confidence interval */ private boolean inConfidenceInterval; /** * Gets the underlying model. * * @return the underlyingmodel */ public Model getModel() { return model; } /** * Gets the model selection criterion value. * * @return the model selection criterion value */ public double getValue() { return value; } /** * Gets the model selection relative weight value. * * @return the weight value */ public double getWeightValue() { return weightValue; } /** * Sets the model selection relative weight value. * * @param weightValue the new weight value */ public void setWeightValue(double weightValue) { this.weightValue = weightValue; } /** * Gets the model selection criterion delta value. * * @return the delta value */ public double getDeltaValue() { return deltaValue; } /** * Sets the model selection criterion delta value. * * @param deltaValue the new delta value */ public void setDeltaValue(double deltaValue) { this.deltaValue = deltaValue; } /** * Gets the cumulative weight value. * * @return the cumulative weight value */ public double getCumulativeWeightValue() { return cumulativeWeightValue; } /** * Sets the cumulative weight value. * * @param cumulateWeightValue the new cumulative weight value */ public void setCumulativeWeightValue(double cumulateWeightValue) { this.cumulativeWeightValue = cumulateWeightValue; } /** * Checks if model lays into the confidence interval. * * @return true, if is in confidence interval */ public boolean isInConfidenceInterval() { return inConfidenceInterval; } /** * Sets the in confidence interval. * * @param inConfidenceInterval the new in confidence interval */ public void setInConfidenceInterval(boolean inConfidenceInterval) { this.inConfidenceInterval = inConfidenceInterval; } /** * Instantiates a new selection model. * * @param model the underlying model * @param sampleSize the sample size */ public SelectionModel(Model model, double sampleSize) { this.model = model; this.sampleSize = sampleSize; } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ public int compareTo(SelectionModel other) { if (this.value > other.value) return 1; else if (this.value < other.value) return -1; else return 0; } }