Release Notes¶
- 0.17.1
- 0.17.0
- 0.16.3
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.0
- 0.14.3
- 0.14.2
- 0.14.1
- 0.14.0
- 0.13.2
- 0.13.1
- 0.13.0
- 0.12.2
- 0.12.1
- 0.12.0
- 0.11.0
- 0.10.0
- 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.
0.17.1¶
Quality of life improvements¶
- Made wlutz determination less fussy.
0.17.0¶
New Features¶
- Initial alpha release of an experimental JupyterLab application bundler.
Run with
pymedphys bundlein a directory that contains anotebooksdir and arequirements.txtfile.
0.16.1¶
Aesthetic Changes¶
- Updated the badges reported within the README.
0.16.0¶
Package changes¶
- The license of the package has changed from
AGPL-3.0-or-latertoApache-2.0.
New Features¶
- Expose
pymedphys.electronfactors.plot_modelas part of the public API.
0.15.0¶
New Features¶
- Experimental support for Elekta Unity trf log file decoding.
0.14.3¶
Package changes¶
- Updated wheel to correctly handle optional dependencies.
0.14.1¶
Bug Fixes¶
- Given the input to
pymedphys.gammais unitless, removed the units from the logging output of gamma. See https://github.com/pymedphys/pymedphys/issues/611
0.14.0¶
Breaking Changes¶
- Moved
pymedphys pinnaclecli command to be nested underpymedphys labs pinnacle
Dependency Changes¶
- Made the greater majority of the pymedphys dependencies optional. Should a
dependency be required during usage an error is raised informing the user to
install the package. To install all pymedphys dependencies as before now run
pip install pymedphys[library,labs]==0.14.0.
0.13.0¶
New Feature¶
- Made
pymedphys.mosaiq.executea part of the API.
0.12.2¶
Package changes¶
- Fixed version number within package.
0.12.1¶
Package changes¶
- Re-added the license classifier to the PyPI upload.
0.12.0¶
Breaking Changes¶
- The API has undergone a complete redesign. Expect most code to be broken with this release.
0.11.0¶
Breaking Changes¶
- Within
dose_from_datasetthereshapeparameter has been removed. - Removed the following functions:
load_dicom_dataaxes_and_dose_from_dicomextract_depth_doseextract_profiles
New Features¶
- Added functions
pymedphys.dicom.depth_doseandpymedphys.dicom.profiles. - Exposed the
trf2pandasfunction viapymedphys.fileformats.trf2pandas.
Improvements¶
- Made the resolution detection of
pymedphys.plt.pcolormesh_gridmore robust.
0.10.0¶
New Features¶
- Re-exposed
convert2_ratio_perim_areaandcreate_transformed_meshfrompymedphys.electronfactors. - Pinnacle module providing a tool to export raw Pinnacle data to DICOM
objects.
- A CLI is provided: See the Pinnacle CLI docs.
- As well as an API: See the Pinnacle library docs.
0.9.0 – 2019/06/06¶
New Features¶
- Re-exposed
multi_mosaiq_connect,multi_fetch_and_verify_mosaiq,get_qcls_by_date, andget_staff_namefrompymedphys.msq.
0.8.4 – 2019/06/04¶
Package changes¶
- Made
xlwingsnot install by default if system isLinuxwithinsetup.py - Removed unreleased
jupyterbased GUI
0.8.3 – 2019/06/04¶
Package changes¶
- Updated MANIFEST file within
pymedphys_fileformatsto appropriately include LICENSE files.
0.8.2 – 2019/06/01¶
Package changes¶
- Included license files within the subpackage distributions
0.8.1 – 2019/06/01¶
Dependency changes¶
- Removed numpy version upper-limit
0.8.0 – 2019/06/01¶
Breaking Changes¶
DeliveryDatahas been renamed toDeliveryand is now importable by runningfrom pymedphys import Delivery- A range of functions that used to use
DeliveryDataare now instead accessible as methods on theDeliveryobject.
- 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 toanonymise_dataset()to remove redundant labelling.mu_density_from_delivery_datamoved from themsqmodule to themudensitymodule.compare_mosaiq_fieldsmoved from themsqmodule into theplancomparemodule.pymedphys.dicom.get_structure_aligned_cubehas had itsx0parameter changed from required to optional. It is no longer the first parameter passed to the function. By defaultx0is now determined using the min/max bounds of the structure.- The DICOM coordinate extraction functions -
extract_dicom_patient_xyz(),extract_iec_patient_xyz()andextract_iec_fixed_xyz()- have been combined into a single function calledxyz_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 thecoord_system=parameter ofxyz_from_dataset():- DICOM:
'd'or'DICOM' - IEC fixed:
'f','fixed'or'IEC fixed' - IEC patient:
'p','patient'or'IEC patient'
- DICOM:
gamma_dicomnow take datasets as opposed to filenames
New Features¶
- A DICOM anonymisation CLI! See the DICOM Files CLI docs.
anonymise_file()andanonymise_directory():- two new DICOM anonymisation wrapper functions that take a DICOM file and a directory as respective arguments.
is_anonymised_dataset(),is_anonymised_file()andis_anonymised_directory():- 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 byxyz_from_dataset()into a full grid of coordinate triplets that correspond to the original grid (pixel array or dose grid).
0.7.2 – 2019/04/05¶
Dependency changes¶
- Removed numpy version upper-limit
0.7.1 – 2019/04/05¶
Performance Improvements¶
- reduced PyPI package size by removing unnecessary development testing files.
0.7.0 – 2019/04/05¶
Breaking Changes¶
anonymise_dicomhas been renamed toanonymise_dicom_dataset- The CLI interface
trf2csvhas been replaced withpymedphys 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.
New Features¶
- Implementing a suite of Dicom objects, currently a work in progress:
DicomBase, a base DICOM class that wrapspydicom’sDatasetobject. This class includes additions such as an anonymisation method.DicomImage, designed to hold a single DICOM image slice. Might someday contain methods such asresampleand the like.DicomSeries, a series ofDicomImageobjects 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 ofDicomDose,DicomPlan,DicomStructure, andDicomSeries. Not every type is required to create aDicomStudy. Certain methods will be available onDicomStudydepending what is housed within it. For example having bothDicomDoseandDicomStructureshould enable DVH based methods.DicomCollection, a class that can hold multiple studies, interrelated or not. A common use case that will likely be implemented isDicomCollection.from_directory(directory_path)which would pull all DICOM files nested within a directory and sort them intoDicomStudyobjects 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 runpymedphys trf to-csvwithin the command line to convert.trffiles into.csvfiles.
0.6.0 – 2019/03/15¶
Breaking Changes¶
- 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:
pymedphys.dcm–>pymedphys.dicomcoords_and_dose_from_dcm()–>coords_and_dose_from_dicom()dcmfromdict()–>dicom_dataset_from_dict()gamma_dcm()–>gamma_dicom()
- MU Density related functions are no longer available under the
pymedphys.collpackage, instead they are found withinpymedphys.mudensitypackage. - The DICOM coordinate extraction functions now return simple tuples rather
than
Coordsnamedtuples:extract_dicom_patient_xyz()extract_iec_patient_xyz()extract_iec_fixed_xyz()
New Features¶
- 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 nndarray). NB: Documentation forthcoming.
Code Refactoring¶
- All uses of
dcmas a variable name for instances of PyDicom Datasets have been converted todsto match PyDicom convention.
0.5.1 – 2019/01/05¶
New Features¶
- Began keeping record of changes in
changelog.md