cpm is a fundamental package for Computational Psychiatry. It is designed to provide a set of tools for researchers and clinicians to analyze and model data in the field of Computational Psychiatry.
To install the package, run the following command:
pip install cpm-toolboxOnce the package is installed, you can import it in your Python code:
import cpmIn order to install the package from GitHub, run the following command:
pip install git+https://github.com/DevComPsy/cpm.gitThe documentation can be viewed here: link.
If you are using cpm, we recommend citing the titular software paper (Dome et al., 2026):
@article{dome2026cpm,
title = {cpm: {{A}} Python Library for Theory-Driven Modelling in Computational Psychiatry},
author = {Dome, Lenard and Hezemans, Frank H. and Kadri, Kenza and Wagner, Ben J. and Webb, Andrew and Hauser, Tobias U.},
year = 2026,
journal = {PLOS Computational Biology},
volume = {22},
number = {7},
pages = {1--31},
publisher = {Public Library of Science},
doi = {10.1371/journal.pcbi.1014481}
}
The documentation is built with Sphinx from the docstrings in cpm/ and the pages in docs/.
To build it locally, run the following commands in the root directory:
pip install -e ".[docs]"
python -m sphinx -b html docs docs/_build/htmlThen open docs/_build/html/index.html in a browser.
See CONTRIBUTING.md for how to write documentation and tutorials, and for a live preview while you write.
The documentation is published to GitHub Pages by the docs GitHub Actions workflow whenever main changes.
To work on the toolbox, create a new branch from the main branch. Then, create a pull request to merge the new feature into the main branch. Once the pull request is approved, merge the new feature into the main branch.
A git branch should start with a category. Pick one of these: feature, bugfix, hotfix, or test.
featureis for adding, refactoring or removing a featurebugfixis for fixing a bughotfixis for changing code with a temporary solution and/or without following the usual process (usually because of an emergency)testis for experimenting outside of an issue/ticket
See this link for some great description of the naming convention.
Please follow the Conventional Commits guidelines for commit messages. Feel free to use gitmoji for commit messages, but insert them at the end of the problem description. See this link for more information.
When creating a pull request, make sure to follow these conventions: link
To compile the package, run the following command in the root directory:
python setup.py sdist bdist_wheelTo upload the package to PyPi, run the following command in the root directory:
twine upload dist/*black linterfor python code formattingnumpy-style docstrings for documentationsphinxfor documentation generationpytestfor testing
