From e85f05c5470daef912853a47dca559b924d84514 Mon Sep 17 00:00:00 2001 From: Joost van Griethuysen Date: Fri, 28 Sep 2018 16:28:18 +0200 Subject: [PATCH] v2.1.0 Release --- CHANGES.rst | 62 ++++++++++++++++++++++++++++++++++++++++ README.md | 2 +- docs/customization.rst | 2 ++ radiomics/generalinfo.py | 1 + 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index d5b6bdcd..de690f4a 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,68 @@ Release Notes Next Release ------------ +----------------- +PyRadiomics 2.1.0 +----------------- + +Feature Calculation Changes +########################### + +- Switch Shape - Volume calculation to a mesh-based instead of a voxel-based one. This also affects all features derived + from Volume. Original Volume calculation is retained as ``VoxelVolume``. Also switch calculation of maximum diameter + to mesh based. Only PCA-derived are not affected. (`#427 `_) + +New Features +############ + +- Add GLCM - Maximal Correlation Coefficient. (`#411 `_) + +New Parameters +############## + +- Update resegmentation function, add support for single (lower) threshold and new modes ``relative`` and ``sigma``, + customizable in parameter ``resegmentMode``. (`#420 `_) +- Add ``resegmentShape``. Default ``False``, if set to ``True``, the resegmented mask (intensity mask) will also be used + for shape calculation. Otherwise, the non-resegmented mask (morphological mask) is used for shape. + (`#428 `_) + +Bug fixes +######### + +- Fix bug in dimension checking in ``checkMask``. (`623b836 `_) +- Fix some errors in the testUtils and baseline generation script. + (`c285c15 `_) +- Prevent division by 0 in NGTDM - Coarseness. Return 0 instead. + (`a59861e `_) +- Remove duplicate key in settings file example. (`828a7ac `_) +- Prevent duplicate log entries in parallel batch extraction. + (`8cedd8f `_) +- Build PyWavelets from source for AppVeyor (Windows) python 3.4 testing. Requires pre-installation of numpy and cython. + (`6223d35 `_) + +Tests +##### + +- Integrate automatic distribution to conda upon release. (`#422 `_) + +Documentation +############# + +- Update README and Setup.py with additional classifiers, urls. Update section in README on Docker usage. + (`0fe737e `_) + +Internal API +############ + +- Use ``ValueError`` exceptions when feature extraction pipeline fails (exceptions of individual features) + (`#420 `_) +- Update generation and names of general info features (provenance information) + (`#420 `_, + `#426 `_) +- Rewrite signatures of pre-processing functions to accept all customization arguments in 1 ``**kwargs`` dict. + Necessary parameters are obtained using ``kwargs.get`` inside the function. Full settings are passed to the function. + (`#425 `_) + ----------------- PyRadiomics 2.0.1 ----------------- diff --git a/README.md b/README.md index acf3fd4a..dad0b700 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# pyradiomics v2.0.1 +# pyradiomics v2.1.0 ## Build Status diff --git a/docs/customization.rst b/docs/customization.rst index 7a9f4afb..069a82cd 100644 --- a/docs/customization.rst +++ b/docs/customization.rst @@ -195,12 +195,14 @@ Feature Extractor Level value is None (default), no resegmentation is performed. Resegemented size is checked (using parameter ``minimumROISize``, default 1) and upon fail, an error is logged and extraction is skipped for this case. - ``resegmentMode`` ['absolute']: string, specifying the method to use for defining the resegmentation thresholds: + - 'absolute': The resegmentRange values are treated as absolute values, i.e. used directly to perform resegmentation. - 'relative': The resegmentRange values are treated as relative to the maximum in the ROI, i.e. the actual threshold used is defined as :math:`\text{threshold} = \text{value} * X_{max}`. - 'sigma': The resegmentRange values indicate a distance from the mean of the ROI in standard deviations. E.g. to exclude outliers farther from the mean than 3 sigma, specify mode 'sigma' and range [-3, 3]. Threshold is defined as :math:`\text{threshold} = \mu + \text{value} * \sigma`. + - ``resegmentShape`` [False]: Boolean, if set to True, the resegmented mask is also used for shape calculation. If set to False (default), only first order and texture classes are calculated using the resegmented mask (known in IBSI as the intensity mask). Shape is then calculated using the mask after any optional resampling and corrections (known in diff --git a/radiomics/generalinfo.py b/radiomics/generalinfo.py index ea5b8bcc..d356bf40 100644 --- a/radiomics/generalinfo.py +++ b/radiomics/generalinfo.py @@ -48,6 +48,7 @@ def addImageElements(self, image, prefix='original'): Calculates provenance info for the image Adds the following: + - ImageHash: sha1 hash of the mask, which can be used to check if the same mask was used during reproducibility tests. (Only added when prefix is "original") - Spacing: Pixel spacing (x, y, z) in mm.