Project details for LHOTSE

Logo LHOTSE 0.14

by mseeger - November 26, 2007, 21:12:19 CET [ Project Homepage BibTeX ]

view (1 today), download ( 0 today ), 3 comments, 0 subscriptions


LHOTSE is a C++ class library designed for the implementation of large, efficient scientific applications in Machine Learning and Statistics. At present, LHOTSE can be used to create stand-alone executables, or as a class library within a larger project. Interfaces to Python and to MATLAB(R) are planned.

Some of the things in there:

  • Rigorously based on smart pointers and memory watchers, avoiding memory leaks and hard-to-track-down seg.faults

  • Function objects are used in order to achieve the MATLAB(R) vectorization feeling. You can use loops, but you don't have to

  • Powerful debugging tools to find those nasty numerical errors. For example, compare your code line by line with equivalent MATLAB(R) and see where they start to diverge

  • Matrix / vector classes, providing access to all of BLAS and some LAPACK methods (to be extended on demand). The handling is fairly natural, trying to emulate the MATLAB(R) way without the copying.

  • Optimizers: LHOTSE includes code for linear conjugate gradients, nonlinear Quasi-Newton, and certain double loop optimizers. It wraps the L-BFGS-B limited memory Quasi-Newton code of Zhu, Byrd, Lu-Chen, Nocedal. All optimizers communicate with the objective function through a generic criterion function interface.

  • Code for implementing Gaussian process techniques.

  • A hierarchy of covariance functions (kernels), which allows to implement new kernels quickly using generic code, and to run kernel machine code with arbitrary kernels.

  • Generic hierarchies for dataset representations, allowing for arbitrary data types being loaded, represented in memory or temporary files, and being accessed as variables by statistical methods.

  • Code for incomplete Cholesky factorization, used in Machine Learning to speed up kernel methods.

  • Code for stable low-rank Cholesky factorization updates.

  • Scientific functions from the GNU numerical library.

  • Code for uni- and multivariate quadrature, used for dealing with non-Gaussian likelihood or prior factors in statistical models.

Changes to previous version:

Initial Announcement on

BibTeX Entry: Download
Supported Operating Systems: Linux
Data Formats: None


Cheng Soon Ong (on October 12, 2007, 16:11:23)
This was presented at NIPS 2006 MLOSS workshop.
mseeger (on October 12, 2007, 16:42:34)
The source tarballs feature a complicated configure-make system, which is too clumsy for (my) day-to-day work. Also, a significant amount of code is not in there yet for various reasons, mostly because I am not happy with its stability. I use a simpler make system, which can easily be configured to a new system, but this does not happen automatically. If you are serious about using LHOTSE for your own development, please get in touch, and I can provide you with an extension containing the simpler make system, classes to make MEX file implementation easier, and other things. I can also hoffer limited help with setting it up (on Linux), as far as I find time. I will put such an extension up at some point anyway, but this may take some time if there is no real interest. If you have questions about the system and its design, please do not hesitate. Interest by other developers may also convince me that writing a general developers documentation is worth the effort. In the meantime, all the code is well documented, and there is a lengthy text file telling you about the most important issues. I would of course very happy about receiving constructive criticism, ports to other systems (say, WINDOWS), etc.
mseeger (on October 22, 2007, 17:00:56)
I have added the simpler LHOTSE standard make system to the distribution (version 0.14). It is in the subdirectory old. doc/simple-make-system.txt tells you how to set it up for your machine. Also check the comments in old/Makefile.

Leave a comment

You must be logged in to post comments.