Search in sources :

Example 1 with ExponentialGrowthModel

use of dr.evomodel.coalescent.demographicmodel.ExponentialGrowthModel in project beast-mcmc by beast-dev.

the class ExponentialGrowthModelParser method parseXMLObject.

public Object parseXMLObject(XMLObject xo) throws XMLParseException {
    Units.Type units = XMLUnits.Utils.getUnitsAttr(xo);
    XMLObject cxo = xo.getChild(POPULATION_SIZE);
    boolean logSpace = cxo.getAttribute(LOG_SPACE, false);
    Parameter N0Param = (Parameter) cxo.getChild(Parameter.class);
    Parameter rParam;
    boolean usingGrowthRate = true;
    if (xo.getChild(GROWTH_RATE) != null) {
        cxo = xo.getChild(GROWTH_RATE);
        rParam = (Parameter) cxo.getChild(Parameter.class);
    } else {
        cxo = xo.getChild(DOUBLING_TIME);
        rParam = (Parameter) cxo.getChild(Parameter.class);
        usingGrowthRate = false;
    }
    if (logSpace) {
        if (!usingGrowthRate) {
            throw new XMLParseException("Doubling time parameterization is not compatible with log population size");
        }
        // ExponentialPopulationSizeModel provides a model with N0 in log space
        return new ExponentialPopulationSizeModel(N0Param, rParam, units);
    } else {
        return new ExponentialGrowthModel(N0Param, rParam, units, usingGrowthRate);
    }
}
Also used : ExponentialGrowthModel(dr.evomodel.coalescent.demographicmodel.ExponentialGrowthModel) Parameter(dr.inference.model.Parameter) Units(dr.evolution.util.Units) XMLUnits(dr.evoxml.util.XMLUnits) ExponentialPopulationSizeModel(dr.evomodel.coalescent.ExponentialPopulationSizeModel)

Aggregations

Units (dr.evolution.util.Units)1 ExponentialPopulationSizeModel (dr.evomodel.coalescent.ExponentialPopulationSizeModel)1 ExponentialGrowthModel (dr.evomodel.coalescent.demographicmodel.ExponentialGrowthModel)1 XMLUnits (dr.evoxml.util.XMLUnits)1 Parameter (dr.inference.model.Parameter)1