Overviews for Developers
OpenPathSampling is an open-source project, and as such, we encourage contributions from other developers.
Of course, OPS is also a rather large code, and getting into it can be daunting. The documentation here is designed to help you identify what kinds of objects you should be creating to make the improvements you want to make, and to tell you what functions you must implement to make your additions work in OPS.
If you’re adding significant new functionality, we suggest a workflow where you keep your additions in a new and separate repository, rather than in your fork of OPS. This is because some functionality might not be applicable to enough cases for us to include it in the core code. If your package is outside OPS, it can still be distributed to those who are interested, even if it isn’t interoperable enough to go into the main repository.
Our coding style is mostly PEP8, with allowances for better readability and matching standard scientific naming conventions (e.g., capitalization of variable names). Docstrings are formatted according to the numpydoc standard.
Tests and Examples
Additions to OPS should include thorough tests. We use pytest to run our
tests, although we require nose for some legacy portions of the tests.
Unit/integration tests are located in the
directory. Examples and integration tests should be written as Jupyter
notebooks and placed in the
examples/ directory. Pull requests to the
OPS GitHub repository will automatically run all unit tests with each push.
We also run a subset of the system tests on each push, using ipynbtest.
The sections linked below give details about extending OPS. The document on code structure gives an overview of the code, and the other documents describe specific aspects.
- General Advice for Developers
- Installing for developers and beta-testers
- Code Structure
- Path Simulators
- Hooks in Path Simulators
- PathMovers and MoveStrategies
- Collective Variables