A community effort to develop an open standard library for Medical Physics in Python. We build high quality, transparent software together via peer review and open source distribution. Open code is better science.
PyMedPhys is an open-source Medical Physics python library built by an open community that values and prioritises code sharing, review, improvement, and learning from each other. It is inspired by the collaborative work of our physics peers in astronomy and the Astropy Project. PyMedPhys is available on PyPI and GitHub.
PyMedPhys first paper in the Journal of Open Source Software contains more background information, including a statement of need. You can access the paper here. When referencing PyMedPhys, please cite this paper as follows:
Biggs, S., Jennings, M., Swerdloff, S., Chlap, P., Lane, D., Rembish, J., McAloney, J., King, P., Ayala, R., Guan, F., Lambri, N., Crewson, C., Sobolewski, M. (2022). PyMedPhys: A community effort to develop an open, Python-based standard library for medical physics applications. Journal of Open Source Software, 7(78), 4555, https://doi.org/10.21105/joss.04555
PyMedPhys is currently within the beta stage of its life-cycle. It will
stay in this stage until the version number leaves 0.x.x and enters
1.x.x. While PyMedPhys is in beta stage, no API is guaranteed to be
stable from one release to the next. In fact, it is very likely that the
entire API will change multiple times before a 1.0.0 release. In practice,
this means that upgrading pymedphys to a new version will possibly break
any code that was using the old version of pymedphys. We try to be abreast of
this by providing details of any breaking changes from one release to the next
within the Release Notes.
PyMedPhys has a GitHub Discussions page to both help you find your feet using PyMedPhys and to facilitate collaboration and general discussion. Please reach out over there and we'd love to get to know you!
PyMedPhys can be installed with:
pip install pymedphys[user]Further user installation instructions can be found in the Quick Start Guide.
The PyMedPhys documentation contains two overarching guides:
- The Users Guide: where you can find instructions to get started with the library and the CLI, in-depth how-to guides (examples for users) on PyMedPhys' various tools, some background information on individual PyMedPhys projects as well as the Technical Reference.
- The Contributors Guide: for those who wish to make new contributions to the PyMedPhys library, CLI or app. Here you'll find detailed workstation setup guides to enable contributions, important repository information, and some tips & tricks to overcome common issues.
PyMedPhys uses uv for package and project management.
After cloning the repository, install the PyMedPhys dependencies and set up pre-commit by running:
uv sync --extra all --group dev
uv run -- pre-commit installRun automated tests with:
uv run -- pymedphys dev testsPyMedPhys is what it is today due to its maintainers and contributors, both past and present. Here is our team.
- Stuart Swerdloff
- SJS Targeted Solutions, LLP, New Zealand
- Matthew Jennings
- Icon Group, Australia
- Phillip Chlap
- Radformation Inc., USA
- University of New South Wales, Australia
- Derek Lane
- ELEKTA AB, Houston TX
- Marcelo Jordao
- ELEKTA AB, Hong Kong SAR
- Marcus Fisk
- Cancer Care Riverina, Australia



