- 0.9.0 – 2019/06/06
- 0.8.4 – 2019/06/04
- 0.8.3 – 2019/06/04
- 0.8.2 – 2019/06/01
- 0.8.1 – 2019/06/01
- 0.8.0 – 2019/06/01
- 0.7.2 – 2019/04/05
- 0.7.1 – 2019/04/05
- 0.7.0 – 2019/04/05
- 0.6.0 – 2019/03/15
- 0.5.1 – 2019/01/05
All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
appsub commands from the CLI.
- Removed the
jupyteroptional extra installation commands.
- In order to support Python 3.8, the
pymssqldependency needed to be removed for that Python version. All tools that make SQL calls to Mosaiq will not currently work on Python 3.8.
- Fixed issue where the following header adjustment DICOM CLI tools may not
pydicom==1.4.2. See https://github.com/pymedphys/pymedphys/pull/747 and https://github.com/pymedphys/pymedphys/pull/748.
pymedphys dicom adjust-machine-name
pymedphys dicom adjust-RED
pymedphys dicom adjust-RED-by-structure-name
- Once again made
shapelya default dependency with the aim to make installation be “batteries included”.
Shapelynow ships wheels for Windows. This means
shapelywill install normally with pip. See https://github.com/Toblerity/Shapely/issues/815#issuecomment-579945334
pydicomdue to a currently unknown issue with a new version breaking a
- Removed the optional extras tags of
difficult. All of these now install by default. For example PyMedPhys can no longer be installed with
pip install pymedphys[library].
- Installation of PyMedPhys has been reverted to including all of its primary
dependencies. This was done to make the default install less confusing.
Nevertheless, these dependencies are mostly optional and if you wish you can
pip install pymedphys --no-depsto have a minimal installation.
- Made a
shapely-helperspackage which automatically handles installation of
shapelyon Windows. PyMedPhys now depends on
reshapeparameter has been removed.
- Removed the following functions:
- Added functions
- Exposed the
DeliveryDatahas been renamed to
Deliveryand is now importable by running
from pymedphys import Delivery
- A range of functions that used to use
DeliveryDataare now instead accessible as methods on the
- A range of functions that used to use
- A large number of functions that were previously exposed have now been made
private in preparation for eventually stabilising the API. No function that
was within the documentation has been removed. If there is a function that
you were using that you would like to be exposed via
importagain, please let us know by opening an issue on GitHub and we will happily re-expose it! However, please bear in mind that the entire API that is currently exposed will likely change before a 1.0.0 release.
anonymise_dicom_dataset()has been renamed to
anonymise_dataset()to remove redundant labelling.
mu_density_from_delivery_datamoved from the
msqmodule to the
compare_mosaiq_fieldsmoved from the
msqmodule into the
pymedphys.dicom.get_structure_aligned_cubehas had its
x0parameter changed from required to optional. It is no longer the first parameter passed to the function. By default
x0is now determined using the min/max bounds of the structure.
- The DICOM coordinate extraction functions -
extract_iec_fixed_xyz()- have been combined into a single function called
xyz_from_dataset(). The x, y, z axes can still be returned in either the DICOM, IEC fixed or IEC patient coordinate systems by passing the following case-insensitive strings to the
- IEC fixed:
- IEC patient:
gamma_dicomnow take datasets as opposed to filenames
- A DICOM anonymisation CLI! See the DICOM Files CLI docs.
- two new DICOM anonymisation wrapper functions that take a DICOM file and a directory as respective arguments.
- three new functions that check whether a pydicom dataset, a DICOM file or all files within a directory have been anonymised, respectively.
coords_from_xyz_axes()is a previously internal function that has now been exposed in the API. It converts x, y, z axes returned by
xyz_from_dataset()into a full grid of coordinate triplets that correspond to the original grid (pixel array or dose grid).
anonymise_dicomhas been renamed to
- The CLI interface
trf2csvhas been replaced with
pymedphys trf to-csv. This has the same usage, just a changed name to come in line with the rest of the CLI interfaces exposed by PyMedPhys.
- Implementing a suite of Dicom objects, currently a work in progress:
DicomBase, a base DICOM class that wraps
Datasetobject. This class includes additions such as an anonymisation method.
DicomImage, designed to hold a single DICOM image slice. Might someday contain methods such as
resampleand the like.
DicomSeries, a series of
DicomImageobjects creating a CT dataset.
DicomStructure, designed to house DICOM structure datasets.
DicomPlan, a class that holds RT plan DICOM datasets.
DicomDose, a class that to hold RT DICOM dose datasets. It has helper functions and parameters such as coordinate transforms built into it.
DicomStudy, a class designed to hold an interrelated set of
DicomSeries. Not every type is required to create a
DicomStudy. Certain methods will be available on
DicomStudydepending what is housed within it. For example having both
DicomStructureshould enable DVH based methods.
DicomCollection, a class that can hold multiple studies, interrelated or not. A common use case that will likely be implemented is
DicomCollection.from_directory(directory_path)which would pull all DICOM files nested within a directory and sort them into
DicomStudyobjects based on their header UIDs.
- Added CLI commands for a WIP docker server, logfile orchestration, and DICOM editor tools.
- Added a range of xlwings tools that allow the use of PyMedPhys functions within Excel
- Added rudimentary code to pull profiles from Mephysto files.
- The previously separate
decodetrflibrary is now distributed within PyMedPhys. You can now simply install PyMedPhys and run
pymedphys trf to-csvwithin the command line to convert
- All uses of “dcm” in directory names, module names, function names, etc.
have been converted to “dicom”. Anything that makes use of this code will
need to be adjusted accordingly. Required changes include:
- MU Density related functions are no longer available under the
pymedphys.collpackage, instead they are found within
- The DICOM coordinate extraction functions now return simple tuples rather
- DICOM anonymisation now permits replacing deidentified values with suitable “dummy” values. This helps to maintain compatibility with DICOM software that includes checks (beyond those specified in the DICOM Standard) of valid DICOM tag values. Replacing tags with dummy values upon anonymisation is now the default behaviour.
- A set of 3D coordinate transformation functions, including rotations (passive
or active) and translations. Transformations may be applied to a single
coordinate triplet (an
ndarray) or a list of arbitrarily many coordinate triplets (a 3 x n
ndarray). NB: Documentation forthcoming.