User guide or manuals

Hi Simon,

I see PyMedPhys has many modules (not sure if it’s the right word) such as dicom, mosaiq, gamma etc. I’ve been trying to find on your website to see if there’re any descriptions of what these functions do or how to use them. Is there any user manual I didn’t find? Or is there a way to find out more in python? I used to type in ‘?’ and got some descriptions such as variables but doesn’t seem to work here. Thanks in advance!

Hi @nancyyu,

In reality, the PyMedPhys team is in dire need for someone to dive in who has a passion for helping others use PyMedPhys and build out the documentation. See the following talk on YouTube for what the vision for the PyMedPhys documentation is:

There are a range of functions that are documented, and they can be found within the library section of the docs:

For example, here is the documentation for gamma:

However, there is a massive need to flesh these documents out in such a way that new users are given wings instead of weights when trying to use PyMedPhys.

Just recently at the bottom of each documentation page I have added discussion links, for example https://docs.pymedphys.com/ref/lib/gamma.html#comments looks like the following:

The idea being, by augmenting the docs with this forum there might be a way to begin building a community who can help each other out, and ultimately, someone might be in a position to begin fleshing out a few documents here and there as they begin using the tools.

As you can imagine, given this is mostly a volunteer gig, most of my time tends to go into getting dirty in the nitty gritty of getting things to work, like what was described over at “How to upgrade Pymedphys”.

At the end of the day, for new users though, a software library is only as good as its documentation. And to that end, at the end of the day, the PyMedPhys community needs to grow, and I am hoping that someone with a passion for community communication and open source software is able to jump in and take that whole part of the project by the horns, find a group of people to help them, and make it so that Medical Physicists and new TEAP registrars can truly be equipped to use Python to do amazing things. :slight_smile:

Hi @SimonBiggs ,

I have an identical request. First, please let me introduce me briefly. I work in French hospital (Centre Oscar Lambret) as IT project manager dedicated to Physics teams in radiotherapy. I am also in charge of some part of the development.
One of the internal project I have in charge is to do an internal library. I have to merge all work already done by the team, refactoring it, but also I have to think “plug and play” for news features. And, as developer, I do not want to recreate something already existing. Your library seems really promising. After discussion with the teams, we would participate on it. However first step is to understand it and some documentation is missing…
Your approached for the documentation (the video) is great. The only things I have no idea to put on it is a developer part, like class diagram, dOxygen or equivalent documentation. I will do some work on it, and if you are okay, I would like to share it, maybe on a git branch ? If you have any advise about it (like branches to check in git, class to begin ect), I would be thankful :wink:

1 Like

Hi @Maeva,

Thank you for reaching out. Welcome to the PyMedPhys Discourse forum :slightly_smiling_face:.

The best place to start would be to first set up a contributor environment using one of the following links:

Then follow the docs contribution guide:

A great start, a sort of documentation “hello world” if you like, would be to add yourself to the Active Contributors list:

To begin the contribution you can opt to go the forking route described within Git and GitHub — Don't be afraid to commit 0.3 documentation if you wish. Otherwise, I’d be more than happy to give you commit access if you ping me on the GitHub issue tracker.


The default branch is main, and that’s the branch you’ll want to branch from for development :slightly_smiling_face:.


We do happen to use a tool like dOxygen we use Sphinx. Think of dOxygen as the “C world auto doc generator”, Sphinx is the “Python equivalent”. Sphinx is the tool we use to create docs like the following:

Within the documentation we use tools like autofunction that pull in the docstrings from those functions and write them into the docs. For example, see the section of code for the Anonymisation code documented above:

The actual contents of those documents given above is then pulled from that functions docstring:

(Having a read of those docs, I really should remove the words “simple”).


Regarding building out an internal dependency tree using a tool like https://graphviz.org/, I did used to have something like that within the documentation.

It can be seen within the git history over at:

It has also been spun out into another package:

In the theme of not reinventing the wheel, I can pull that code back into PyMedPhys and get it up and running, and then potentially you can pick it up from there and tweak it to your preferences?


Feel free to get me to expand on anything here, or enquire further :slightly_smiling_face:.

Cheers,
Simon

Hi @SimonBiggs ,

Thank you for all.

I have installed all before and the goal is to test it within a Docker (most of my application are in various Docker for simplicity).

I will see quickly all of your advice to continue the documentation. I am not such familiar with Sphinx (I have work mostly in C/C++), but this seems not complicated at all.

Regarding the dependency tree, if you have time to integrate the package, it will be a big plus, if not I will see it :wink:

Thank you and see you soon :wink:
Cheers,
Maëva