Skip to content

v1.3.0

Compare
Choose a tag to compare
@JoostJM JoostJM released this 06 Oct 15:53
· 481 commits to master since this release

Feature Calculation Changes

  • Remove feature Sum Variance, as this is mathematically equal to Cluster Tendency. (#300)

New Features

  • Add a row by row customization of the extraction label in the batch processing command line script, as well as both batchprocessing examples. (#262)
  • Allow value 0 for a resampled pixel spacing (per dimension). Values of 0 are replaced by the spacing for that dimension as it is in the original (non-resampled) mask. This allows resampling over a subset of dimension (e.g. only in-plane resampling when out-of-plane spacing is set to 0). (#299)
  • Add optional resegmentation of mask based on customizable threshold. (#302)
  • Add Neighbouring Gray Tone Difference Matrix (NGTDM) (#296)
  • Add Add Gray Level Dependence Matrix (GLDM) (#295)
  • Add a docker file that exposes the PyRadiomics commandline tools. (#297, #301)

Bug fixes

  • In GLCM, the matrix is made symmetrical by adding the transposed matrix. However, numpy.transpose returns a view and not a copy of the array, causing erroneous results when adding it to the original array. use numpy.ndarray.copy to prevent this bug. N.B. This affects the feature values calculated by GLCM when symmetrical matrix is enabled (as is the default setting). (#261)
  • Use a python implementation to compute eigenvalues for shape.py instead of SimpleITK. The implementation in SimpleITK assumes segmented voxels to be consecutive on the x-axis lines. Furthermore, it also assumes that all voxels on a given line of x have the same values for y and z (which is not necessarily the case). (#264)
  • Removal of outliers was not applied to returned object in normalizeImage. (#277)
  • Fix python 3 incompatibility when using urllib. (#285)
  • Fix broken URL link in feature visualization notebooks.
  • Update docker manually install python2 support (since recently not supported by default in
    jupyter/datascience-notebook). (#287)
  • For GLRLM and GLSZM, force2D keyword is passed manually, but was incorrectly named and therefore ignored. Fix name to enable forced 2D extraction for GLRLM and GLSZM. (26b9ef3)

Tests

  • Update the C Matrices test, so that the C and python calculated matrices will have the same dimensions when compared (In the previous implementation, the _calculateCoefficients function was applied to the C calculated matrix, but not in the python calculated matrix, for some texture matrices, this function can change the dimension of the matrix). This update ensures that _calculateCoefficients is applied to neither matrix. (#265)
  • Add a test to check validity of parameter files included in examples/exampleSettings. (#294)

Documentation

version 1.3.0 docs

  • Update reference. (#271)
  • Move section "Customizing the Extraction" to the top level, to make it more visible. (#271)
  • Change License to 3-clause BSD (#272)
  • Document the extend of compliance between PyRadiomics and the IBSI feature definitions (#289)
  • Fix typos in documentation.
  • Expand documentation on customizing the extraction. (#291)
  • Include contributing guidelines in sphinx-generated documentation and add a section on sharing parameter files. (#294)
  • Insert missing line to enable all features in documentation on using the feature classes directly. (5ce9f48)

Examples

  • Add example settings for CT, MR (3 scenarios). (#273)

Internal API

  • Remove unnecessary rows and columns from texture matrices prior to feature calculation. This does not affect the value of the calculated features, as the i and j vectors are updated accordingly, but it does reduce both computation time and memory requirements. This is especially the case when calculating GLSZM on large segmentations, where there may be many 'empty' zone sizes (i.e. no zones of that size are present in the ROI). This reduces the size of the matrix, which therefore reduces the memory needed and the number of calculations performed in the vectorized operations. (#265)
  • Remove circular import statement in __init__.py (circular with radiomics.base). (#270)
  • Revise initialization of the feature class. (#274)
  • Rename parts of the customization variables and functions to better reflect their definition (#291)

License

  • Switch to 3-clause BSD license. (#272)