Skip to main content

CUDA-accelerated fork of PyRadiomics - a Radiomics features library for python

Project description

pyradiomics-cuda v1.0.2

CUDA-Accelerated Fork

This is a CUDA-accelerated fork of the original PyRadiomics package (based on version 3.0.1). It provides GPU acceleration for computationally intensive tasks, significantly improving performance when a CUDA-compatible GPU is available.

This fork is distributed under the 3-clause BSD license (see LICENSE file).

Performance Benefits

The CUDA acceleration focuses primarily on shape features calculation, which can be computationally expensive in the original PyRadiomics, especially for complex 3D volumes. Depending on your hardware and the size of your datasets, you can expect:

  • Up to 10-50x speedup on shape feature computation with a modern NVIDIA GPU
  • Automatic fallback to CPU when CUDA is not available
  • Same results and precision as the original implementation

Requirements

Runtime Requirements:

  • CUDA-compatible NVIDIA GPU
  • NVIDIA CUDA Runtime libraries compatible with the toolkit used for compilation (tested with 12.x driver)
  • All the original PyRadiomics Python dependencies (numpy, SimpleITK, PyWavelets, pykwalify, six) - these will be installed automatically by pip.

Build Requirements (for installing from source):

Since this package includes C and CUDA extensions, installing from the source distribution (.tar.gz) requires compilation on your machine. You must have the following installed and configured before running pip install pyradiomics-cuda:

  • A C Compiler: Such as GCC on Linux, or Microsoft Visual C++ Build Tools on Windows.
  • Python Development Headers: Necessary for compiling C extensions.
    • On Debian/Ubuntu: sudo apt-get update && sudo apt-get install python3-dev
    • On Fedora/CentOS: sudo yum update && sudo yum install python3-devel
    • On Windows: Usually included with Python installation or Visual Studio.
  • NVIDIA CUDA Toolkit: The full toolkit including the nvcc compiler is required.
    • Tested with CUDA Toolkit 12.x.
    • Ensure the CUDA installation directory (containing nvcc) is added to your system's PATH environment variable.
  • GPU Compute Capability: Your NVIDIA GPU must have a Compute Capability of 6.0 or higher due to the use of double-precision atomic operations.

Installation

pip install pyradiomics-cuda

If you want to disable CUDA extensions during installation, use:

DISABLE_CUDA_EXTENSIONS=1 pip install pyradiomics-cuda

Usage

This package can be used exactly the same way as the original PyRadiomics, but will automatically use GPU acceleration when a compatible CUDA device is available:

import radiomics
from radiomics import featureextractor

# The usage is identical to the original PyRadiomics
extractor = featureextractor.RadiomicsFeatureExtractor()
result = extractor.execute(imageFilepath, maskFilepath)

Authors

Original PyRadiomics Information

Note: The following information pertains to the original pyradiomics package. Some details, particularly regarding installation, Docker images, and build status, may differ for this CUDA-accelerated fork.

pyradiomics v3.1.0

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 and can be used to calculate single values per feature for a region of interest ("segment-based") or to generate feature maps ("voxel-based").

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., Fillion-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!

For questions specifically about this CUDA fork, please use the GitHub Issues for this repository.

For general questions about PyRadiomics concepts or the original package, please join the Radiomics community section of the 3D Slicer Discourse.

Feature Classes

Currently supports the following feature classes:

  • First Order Statistics
  • Shape-based (2D and 3D)
  • Gray Level Co-occurrence 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 Python >= 3.5. Pre-built binaries are available on PyPi and Conda. 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

Note: The following Docker images are for the original pyradiomics package and do not include the CUDA accelerations from this fork.

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 separately to enable this filter)
  • scikit-image (Only for LBP filter, install separately to enable this filter)
  • trimesh (Only for LBP filter, install separately 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.

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 grants: U24CA194354 - QUANTITATIVE RADIOMICS SYSTEM DECODING THE TUMOR PHENOTYPE and U01CA190234 - TUMOR GENOTYPE AND RADIOMIC PHENOTYPE IN LUNG CANCER

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyradiomics_cuda-1.0.2.tar.gz (38.0 MB view details)

Uploaded Source

File details

Details for the file pyradiomics_cuda-1.0.2.tar.gz.

File metadata

  • Download URL: pyradiomics_cuda-1.0.2.tar.gz
  • Upload date:
  • Size: 38.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for pyradiomics_cuda-1.0.2.tar.gz
Algorithm Hash digest
SHA256 dffd747c6b447f9cfe4536f60647ca87ff94bc40cbd329930cff9e7b6409f3a2
MD5 25a6b7b14cb87000d28a7b289e34a203
BLAKE2b-256 9e3f7ce18dca2dabc5a0cda4540ce70c0478b3b62980d1c4f36aad01ef04d70f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page