Why TreePPL?
Flexible modeling
Express any model of interest using a powerful programming language
Easy-to-use interfaces
Import data and analyze results using R or Python interfaces with Jupyter support
Powerful inference
Select from a range of built-in strategies or develop your own
Extensive libraries
Develop models faster using the code and model libraries
function walk(node: Tree, time:Real, lambda: Real) {
observe 0 ~ Poisson(lambda * (time - node.age));
if node is Node {
observe 0.0 ~ Exponential(lambda);
walk(node.left, node.age, lambda);
walk(node.right, node.age, lambda);
}
}
model function crb(tree: Tree) => Real {
assume lambda ~ Gamma(1.0, 1.0);
walk(tree.left, tree.age, lambda);
walk(tree.right, tree.age, lambda);
return lambda;
}Funding
