Transition Path Sampling (TPS) library Documentation
LibTPS is a software library that can be used to perform transition path sampling and related methods with an arbitrary molecular simulation code. Our primary goal is to bring path sampling techniques to a wider audience, for whom the time required to code a path sampling algorithm poses a significant barrier to using the methods. A secondary aim of LibTPS is to provide a collaborative development environment for researchers working on path sampling techniques to test and disseminate new path sampling algorithms. Currently, we have implemented Transition Path Sampling (TPS) and related methods, such as Transition Interface Sampling (TIS) and Aimless Shooting. Additionally, we have implemented several model systems to facilitate comparing results and testing new algorithms. We currently supply built-in support for LAMMPS and some prototype simulations for testing, although the library can be used with any molecular simulation code written in either C/C++, Java or python. The source code for the library is available at matforge.org.
Much of the infrastructure for the code is already in place (core API, cross-platform abilities, etc.) However, before we release a beta version, there are several fixes / additions that must be addressed:
- Interface sampling not yet added fully tested / added to the trunk
- Lattice/Molecular simulations not yet supported
- No minimal protein model (beta hairpin folding?)
- No minimal lattice mode (ising nucleation?)
- Future integration with Etomica API required for full functionality (see below)
The overall goal of our cyberinfrastructure project is to create several specialized simulation and analysis libraries like LibTPS that work together with a molecular simulation API called the "Etomica API." Etomica handles interfacing with the molecular simulations so that the libraries don't have to. Thus, a library such as LibTPS needs only to connect with Etomica to access all of the simulation codes contained within the API. This is good news, since it can be a bit difficult and time consuming to wrap complicated simulation codes into LibTPS simulation plugins (for an example, see our LAMMPS wrapper, which consists of ~500 lines of C++ code for an example).
With this in mind, a very important goal for the future of our LibTPS project is to make the library API-compliant. At the present time, the Etomica API is incomplete and has limited functionality, and therefore has not yet been implemented. We plan to implement a simulation plugin for the API as soon as the classes are finalized. Within the next few years, the API will provide an interface to every standard simulation code (LAMMPS, NAMD, HOOMD, Towhee, etc.). As more simulation codes and functionality are implemented in the future, the simulation capabilities of LibTPS will expand dramatically.
LibTPS currently works with C/C++, python and Java. For specific instructions regarding how to install LibTPS for your platform, see:
To get a feel for the capabilities of the library, how it is organized, and how to write a code using the library, see:
To get the current version of the code, or to become a developer, visit out track site:
Our path sampling API aims to encompass all of the various path sampling algorithms published to date. The style of the path sampling API is meant to be similar to the Molecular Simulation API that is currently under development as part of the larger project. For more detals, see Code Design.