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);
}
}
Aggregations