  We present an efficient and flexible method for computing likelihoods of
phenotypic traits on a phylogeny. The method does not resort to Monte-Carlo
computation but instead blends Felsenstein's discrete character pruning
algorithm with methods for numerical quadrature. It is not limited to Gaussian
models and adapts readily to model uncertainty in the observed trait values. We
demonstrate the framework by developing efficient algorithms for likelihood
calculation and ancestral state reconstruction under Wright's threshold model,
applying our methods to a dataset of trait data for extrafloral nectaries
(EFNs) across a phylogeny of 839 Labales species.
