🐍 Welcome to RESPOND for Python! 🐍 This repository acts as a set of python bindings for the Syndemics Lab's RESPOND model. As such, it is simply a set of wrappers and helper functions for ease of use in various lab projects. Our project can be installed from PyPI or built locally.
RESPOND is a simulation model developed by the Syndemics Lab at Boston Medical Center to study the various cost-effectiveness impacts of different treatment options for substance use disorders (SUD). While originally built to study opioid use disorder (OUD), RESPOND is a Markov model with the ability to scale to encompass various drug use behaviors and treatment approaches or venues. This repository adds bindings and helper functions to easily work with SQLite. The original RESPOND model is written in R and C++ and can be found on GitHub.
This tool makes use of the popular tool Pybind11. From here, we expose bindings for users to connect to via Python.
We make use of Scikit-build-core along with CMake to build the library.
git clone git@github.com:SyndemicsLab/respondpy.git
uv sync
uv buildThis results in a wheel and tar.gz being placed in a dist/ directory. From here, we use uv to include it in other projects. Future work would be to allow for building device independent wheels and publishing to PyPI where we could install anywhere.
We are currently working on supporting a ManyLinux build of the project. This can be tested via the cibuildwheel tool.
uvx cibuildwheelCurrently, we deploy using the following commands:
uv build
uvx cibuildwheelAfter building into a folder called wheelhouse we remove the *.whl file in the dist/ directory (only leaving the .tar.gz) and run the command:
uv publish --index testpypi dist/* wheelhouse/*To testpypi we use the username __token__ and our API key generated from our account.