Open-source python package for the extraction of Radiomics features from 2D and 3D images and binary masks.
Clone or download
Latest commit e0fdbdc Jan 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci ENH: Only deploy from main repository Sep 10, 2018
bin ENH: Update Matrices test script Apr 11, 2018
conda ENH: Enable upload to conda Sep 7, 2018
data TEST: Add test baseline for shape2D Oct 19, 2018
docker/cli BUG: Fix missing requirements in docker CLI file Aug 13, 2018
docs ENH: update documentation Jan 7, 2019
examples STYL: Update shape documentation and feature names Sep 28, 2018
hooks Tests by building against the base Docker Apr 7, 2017
labs/pyradiomics-dcm BUG: uncomment algorithm details initialization Nov 17, 2018
notebooks ENH: Change signature of customizable functions to use `kwargs` Sep 20, 2018
radiomics Merge pull request #442 from JoostJM/shape-2D Jan 15, 2019
tests TEST: Add test baseline for shape2D Oct 19, 2018
.dockerignore Docker for PyRadiomics based on a Jupyter notebook Mar 10, 2017
.editorconfig STYL: Use space indentation for CMAKE and C code Nov 25, 2016
.flake8 STYL: Fix flake8 errors Nov 12, 2018
.gitattributes setup: Simplify release process using "versioneer" Nov 2, 2016
.gitignore gitignore: Exclude PyCharm directory Feb 13, 2017
.travis.yml ENH: Only deploy from main repository Sep 10, 2018
CHANGES.rst v2.1.2 Release Dec 5, 2018
CONTRIBUTING.rst Fix 2 broken links in contrib file. Jan 2, 2019
Dockerfile BUG: Fix missing python 2 environment Aug 16, 2017
LICENSE.txt LICENSE: Update license to 3-clause BSD Jul 14, 2017
MANIFEST.in ENH: Add publishing to PyPi to continuous integration Jul 4, 2018
README.md v2.1.2 Release Dec 5, 2018
appveyor.yml ENH: Only deploy from main repository Sep 10, 2018
requirements-dev.txt ENH: Update test package to new name Oct 5, 2018
requirements-setup.txt ENH: Implement extension in C for calculation of texture matrices. Feb 16, 2017
requirements.txt BUG: Fix PyWavelets version to >=0.4.0, <=1.0.0 Nov 12, 2018
scikit-ci.yml TEST: Add explicit install of numpy in install step Sep 28, 2018
setup.cfg ENH: Add publishing to PyPi to continuous integration Jul 4, 2018
setup.py DOCS: Update Readme and setup.py script Aug 29, 2018
versioneer.py setup: Simplify release process using "versioneer" Nov 2, 2016

README.md

pyradiomics v2.1.2

Build Status

Linux macOS Windows

Radiomics feature extraction in Python

This is an open-source python package for the extraction of Radiomics features from medical imaging.

With this package we aim to establish a reference standard for Radiomic Analysis, and provide a tested and maintained open-source platform for easy and reproducible Radiomic Feature extraction. By doing so, we hope to increase awareness of radiomic capabilities and expand the community.

The platform supports both the feature extraction in 2D and 3D. Not intended for clinical use.

If you publish any work which uses this package, please cite the following publication: van Griethuysen, J. J. M., Fedorov, A., Parmar, C., Hosny, A., Aucoin, N., Narayan, V., Beets-Tan, R. G. H., Fillon-Robin, J. C., Pieper, S., Aerts, H. J. W. L. (2017). Computational Radiomics System to Decode the Radiographic Phenotype. Cancer Research, 77(21), e104–e107. https://doi.org/10.1158/0008-5472.CAN-17-0339

Join the Community!

Join the PyRadiomics community on google groups here.

Feature Classes

Currently supports the following feature classes:

  • First Order Statistics
  • Shape-based
  • Gray Level Cooccurence Matrix (GLCM)
  • Gray Level Run Length Matrix (GLRLM)
  • Gray Level Size Zone Matrix (GLSZM)
  • Gray Level Dependece Matrix (GLDM)
  • Neighboring Gray Tone Difference Matrix (NGTDM)

Filter Classes

Aside from the feature classes, there are also some built-in optional filters:

  • Laplacian of Gaussian (LoG, based on SimpleITK functionality)
  • Wavelet (using the PyWavelets package)
  • Square
  • Square Root
  • Logarithm
  • Exponential
  • Gradient (Magnitude)
  • Local Binary Pattern (LBP) 2D / 3D

Supporting reproducible extraction

Aside from calculating features, the pyradiomics package includes provenance information in the output. This information contains information on used image and mask, as well as applied settings and filters, thereby enabling fully reproducible feature extraction.

Documentation

For more information, see the sphinx generated documentation available here.

Alternatively, you can generate the documentation by checking out the master branch and running from the root directory:

python setup.py build_sphinx

The documentation can then be viewed in a browser by opening PACKAGE_ROOT\build\sphinx\html\index.html.

Furthermore, an instruction video is available here.

Installation

PyRadiomics is OS independent and compatible with both Python 2.7 and Python 3.4, 3.5 and 3.6. As of version 2.0, PyRadiomics releases are also made available on PyPi. To install PyRadiomics, ensure you have python installed and run:

`python -m pip install pyradiomics`

Detailed installation instructions, as well as instructions for building PyRadiomics from source, are available in the documentation.

Docker

PyRadiomics also supports Dockers. Currently, 2 dockers are available:

The first one is a Jupyter notebook with PyRadiomics pre-installed with example Notebooks.

To get the Docker:

docker pull radiomics/pyradiomics:latest

The radiomics/notebook Docker has an exposed volume (/data) that can be mapped to the host system directory. For example, to mount the current directory:

docker run --rm -it --publish 8888:8888 -v `pwd`:/data radiomics/notebook

or for a less secure notebook, skip the randomly generated token

docker run --rm -it --publish 8888:8888 -v `pwd`:/data radiomics/notebook start-notebook.sh --NotebookApp.token=''

and open the local webpage at http://localhost:8888/ with the current directory at http://localhost:8888/tree/data.

The second is a docker which exposes the PyRadiomics CLI interface. To get the CLI-Docker:

docker pull radiomics/pyradiomics:CLI

You can then use the PyRadiomics CLI as follows:

docker run radiomics/pyradiomics:CLI --help

For more information on using docker, see here

Usage

PyRadiomics can be easily used in a Python script through the featureextractor module. Furthermore, PyRadiomics provides a commandline script, pyradiomics, for both single image extraction and batchprocessing. Finally, a convenient front-end interface is provided as the 'Radiomics' extension for 3D Slicer, available here.

3rd-party packages used in pyradiomics:

  • SimpleITK (Image loading and preprocessing)
  • numpy (Feature calculation)
  • PyWavelets (Wavelet filter)
  • pykwalify (Enabling yaml parameters file checking)
  • six (Python 3 Compatibility)
  • scipy (Only for LBP filter, install seperately to enable this filter)
  • scikit-image (Only for LBP filter, install seperately to enable this filter)
  • trimesh (Only for LBP filter, install seperately to enable this filter)

See also the requirements file.

3D Slicer

PyRadiomics is also available as an extension to 3D Slicer. Download and install the 3D slicer nightly build, the extension is then available in the extension manager under "SlicerRadiomics".

License

This package is covered by the open source 3-clause BSD License.

Developers

1Department of Radiation Oncology, Dana-Farber Cancer Institute, Brigham and Women's Hospital, Harvard Medical School, Boston, MA, 2Department of Radiology, Brigham and Women's Hospital, Harvard Medical School, Boston, MA, 3Department of Radiology, Netherlands Cancer Institute, Amsterdam, The Netherlands, 4GROW-School for Oncology and Developmental Biology, Maastricht University Medical Center, Maastricht, The Netherlands, 5Kitware, 6Isomics

Contact

We are happy to help you with any questions. Please contact us on the pyradiomics email list.

We welcome contributions to PyRadiomics. Please read the contributing guidelines on how to contribute to PyRadiomics.

This work was supported in part by the US National Cancer Institute grant 5U24CA194354, QUANTITATIVE RADIOMICS SYSTEM DECODING THE TUMOR PHENOTYPE.