package dr.app.beauti.components.continuous; import dr.app.beauti.options.*; import dr.app.beauti.types.PriorScaleType; import dr.evolution.datatype.ContinuousDataType; import java.util.List; /** * @author Andrew Rambaut * @version $Id$ */ public class ContinuousComponentOptions implements ComponentOptions { public final static String PRECISION_GIBBS_OPERATOR = "precisionGibbsOperator"; public final static String HALF_DF = "halfDF"; final private BeautiOptions options; public ContinuousComponentOptions(final BeautiOptions options) { this.options = options; } public void createParameters(ModelOptions modelOptions) { for (AbstractPartitionData partitionData : options.getDataPartitions(ContinuousDataType.INSTANCE)) { String prefix = partitionData.getName() + "."; if (!modelOptions.parameterExists(prefix + HALF_DF)) { modelOptions.createParameterGammaPrior(prefix + HALF_DF, "half DF of 1 parameter gamma distributed RRW", PriorScaleType.NONE, 0.5, 0.001, 1000.0, false); modelOptions.createScaleOperator(prefix + HALF_DF, modelOptions.demoTuning, 1.0); } } } public void selectOperators(ModelOptions modelOptions, List<Operator> ops) { for (AbstractPartitionData partitionData : options.getDataPartitions(ContinuousDataType.INSTANCE)) { if (partitionData.getPartitionSubstitutionModel().getContinuousSubstModelType() == ContinuousSubstModelType.GAMMA_RRW) { ops.add(modelOptions.getOperator(partitionData.getName() + "." + HALF_DF)); } } } public void selectParameters(ModelOptions modelOptions, List<Parameter> params) { for (AbstractPartitionData partitionData : options.getDataPartitions(ContinuousDataType.INSTANCE)) { if (partitionData.getPartitionSubstitutionModel().getContinuousSubstModelType() == ContinuousSubstModelType.GAMMA_RRW) { params.add(modelOptions.getParameter(partitionData.getName() + "." + HALF_DF)); } } } public void selectStatistics(ModelOptions modelOptions, List<Parameter> stats) { // Do nothing } public BeautiOptions getOptions() { return options; } }