package dr.evomodelxml.operators; import dr.evomodel.operators.PopsIOTreeNodeSlide; import dr.evomodel.speciation.PopsIOSpeciesBindings; import dr.evomodel.speciation.PopsIOSpeciesTreeModel; import dr.inference.operators.MCMCOperator; import dr.xml.*; /** * User: Graham Jones * Date: 11/05/12 */ public class PopsIOTreeNodeSlideParser extends AbstractXMLObjectParser { public static final String PIOTREE_NODESLIDE = "pioTreeNodeSlide"; @Override public Object parseXMLObject(XMLObject xo) throws XMLParseException { PopsIOSpeciesBindings piosb = (PopsIOSpeciesBindings) xo.getChild(PopsIOSpeciesBindings.class); PopsIOSpeciesTreeModel piostm = (PopsIOSpeciesTreeModel) xo.getChild(PopsIOSpeciesTreeModel.class); final double weight = xo.getDoubleAttribute(MCMCOperator.WEIGHT); return new PopsIOTreeNodeSlide(piostm, piosb, weight); } @Override public XMLSyntaxRule[] getSyntaxRules() { return new XMLSyntaxRule[]{ AttributeRule.newDoubleRule(MCMCOperator.WEIGHT), new ElementRule(PopsIOSpeciesBindings.class), new ElementRule(PopsIOSpeciesTreeModel.class) }; } @Override public String getParserDescription() { return "Operator for species tree: changes tree without breaking embedding of gene trees."; } @Override public Class getReturnType() { return PopsIOTreeNodeSlide.class; //To change body of implemented methods use File | Settings | File Templates. } public String getParserName() { return PIOTREE_NODESLIDE; //To change body of implemented methods use File | Settings | File Templates. } }