package dr.evomodelxml.tree; import dr.evomodel.tree.TipHeightLikelihood; import dr.inference.distribution.ParametricDistributionModel; import dr.inference.model.Parameter; import dr.xml.*; /** * Reads a distribution likelihood from a DOM Document element. */ public class TipHeightLikelihoodParser extends AbstractXMLObjectParser { public static final String TIP_HEIGHT_LIKELIHOOD = "tipHeightLikelihood"; public static final String DISTRIBUTION = "distribution"; public static final String TIP_HEIGHTS = "tipHeights"; public String getParserName() { return TIP_HEIGHT_LIKELIHOOD; } public Object parseXMLObject(XMLObject xo) throws XMLParseException { ParametricDistributionModel model = (ParametricDistributionModel) xo.getElementFirstChild(DISTRIBUTION); Parameter tipHeights = (Parameter) xo.getElementFirstChild(TIP_HEIGHTS); return new TipHeightLikelihood(model, tipHeights); } //************************************************************************ // AbstractXMLObjectParser implementation //************************************************************************ public XMLSyntaxRule[] getSyntaxRules() { return rules; } private XMLSyntaxRule[] rules = new XMLSyntaxRule[]{ new ElementRule(DISTRIBUTION, new XMLSyntaxRule[]{new ElementRule(ParametricDistributionModel.class)}), new ElementRule(TIP_HEIGHTS, new XMLSyntaxRule[]{new ElementRule(Parameter.class)}), }; public String getParserDescription() { return "Calculates the likelihood of the tipHeights given some parametric or empirical distribution."; } public Class getReturnType() { return TipHeightLikelihood.class; } }