SurPyval is a Bayesian survival analysis library
* Models should be transparent about their assumptions and workings
* Models should allow tweaks and modifications
Implementing this philosophy has a number of positive effects on the library:
* The log-likihood and plate diagrams of models are exposed
* Models are created through composition of simple units
* SurPyval objects thinly wrap and expose well-know libraries (esp. scipy)
* There are no hand-offs to non-python objects
* Models allow for substitution of any of their composite blocks
The trade-off to get these goods is performance. Models provide in the library are designed to be tweakable, which limits performance optimizations. This manifests itself in a number of ways:
* Straight up crunching speed
* Memory useage
* Models often don't exploit conjugacy where it exists
For very large data sets or very complicated models, you might be better off using something like Stan.