/*
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.facade.util;
import java.util.Collection;
import es.uvigo.darwin.prottest.model.Model;
import es.uvigo.darwin.prottest.selection.InformationCriterion;
import es.uvigo.darwin.prottest.selection.model.SelectionModel;
/**
* A value object to calculate information criteria. It works as
* a wrapper for the information criteria class.
*
* @author Diego Darriba
*
* @since 3.0
*/
public class SelectionChunk {
/**
* Akaike Information Criteiron constant.
*/
public static final int AIC = 1;
/**
* Bayesian Information Criteiron constant.
*/
public static final int BIC = 2;
/**
* Corrected Akaike Information Criteiron constant.
*/
public static final int AICC = 3;
/**
* Decision Theory Criteiron constant.
*/
public static final int DT = 4;
/**
* log Likelihood Criterion constant.
*/
public static final int LNL = 5;
/**
* The inner information criterion
*/
private InformationCriterion informationCriterion;
/**
* Gets the inner information criterion
*
* @return the information criterion
*/
public InformationCriterion getInformationCriterion() {
return informationCriterion;
}
/**
* Instantiates a new Selection Chunk.
*
* @param informationCriterion the inner information criterion
*/
public SelectionChunk(InformationCriterion informationCriterion) {
this.informationCriterion = informationCriterion;
}
public boolean existGammaModels() {
return informationCriterion.isExistGammaModels();
}
public boolean existInvModels() {
return informationCriterion.isExistInvModels();
}
public boolean existGammaInvModels() {
return informationCriterion.isExistGammaInvModels();
}
public boolean existFModels() {
return informationCriterion.isExistFModels();
}
/**
* Gets the criterion value of a specific substitution model.
*
* @param model the substitution model
*
* @return the criterion value
*/
public double getValue(Model model) {
return informationCriterion.get(model).getValue();
}
/**
* Gets the incremental criterion value of a specific substitution model.
*
* @param model the substitution model
*
* @return the incremental criterion value
*/
public double getDeltaValue(Model model) {
return informationCriterion.get(model).getDeltaValue();
}
/**
* Gets the relative weight of a specific substitution model.
*
* @param model the substitution model
*
* @return the relative weight
*/
public double getWeightValue(Model model) {
return informationCriterion.get(model).getWeightValue();
}
/**
* Gets the overall importance of the alpha parameter.
*
* @return the overall importance of the +G models.
*/
public double getOverallAlpha() {
return informationCriterion.getOverallAlpha();
}
/**
* Gets the overall importance of the alpha parameter on +I+G models..
*
* @return the overall importance.
*/
public double getOverallAlphaInv() {
return informationCriterion.getOverallAlphaInv();
}
/**
* Gets the overall importance of the proportion of invariant sites
* parameter.
*
* @return the overall importance of the +I models.
*/
public double getOverallInv() {
return informationCriterion.getOverallInv();
}
/**
* Gets the overall importance of the proportion of invariant sites
* parameter on +I+G models.
*
* @return the overall importance
*/
public double getOverallInvAlpha() {
return informationCriterion.getOverallInvAlpha();
}
/**
* Gets the relative importance of +G parameter.
*
* @return the relative importance
*/
public double getAlphaImportance() {
return informationCriterion.getAlphaImportance();
}
/**
* Gets the relative importance of +I parameter.
*
* @return the relative importance
*/
public double getInvImportance() {
return informationCriterion.getInvImportance();
}
/**
* Gets the relative importance of +I+G parameter.
*
* @return the relative importance
*/
public double getAlphaInvImportance() {
return informationCriterion.getAlphaInvImportance();
}
/**
* Gets the relative importance of empirical frequencies parameter.
*
* @return the relative importance
*/
public double getFImportance() {
return informationCriterion.getFImportance();
}
/**
* Gets the models which belong to the confidence interval.
*
* @return the models in the confidence interval.
*/
public Collection<SelectionModel> getConfidenceModels() {
return informationCriterion.getConfidenceModels();
}
}