/* * RandomLocalTreeVariable.java * * Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard * * This file is part of BEAST. * See the NOTICE file distributed with this work for additional * information regarding copyright ownership and licensing. * * BEAST is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * BEAST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with BEAST; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ package dr.evomodel.tree.randomlocalmodel; import dr.evolution.tree.NodeRef; import dr.evolution.tree.Tree; import dr.evomodel.tree.TreeModel; /** * This interface provides for a stochastic variable selection model on a tree. * The model has two values at each node in the tree: an indicator and a real-valued parameter. * The real-valued parameter is only used if the indicator is true. * * @author Alexei Drummond */ public interface RandomLocalTreeVariable { /** * @param tree the tree * @param node the node to retrieve the variable of * @return the raw real-valued variable at this node */ double getVariable(Tree tree, NodeRef node); /** * @param tree the tree * @param node the node * @return true of the variable at this node is included in function, thus representing a change in the * function looking down the tree. */ boolean isVariableSelected(Tree tree, NodeRef node); }