A light-weight python-native implementation of pyradiomics
Project description
NumpyRadiomics
A lightweight, pure-Python implementation of radiomic shape features, fully compatible with PyRadiomics definitions. Built on top of numpy, scipy, and skimage to minimize heavy dependencies while maintaining accuracy.
Features
- Standard Compliance: Implements the official PyRadiomics definitions for 2D and 3D shape features.
- Lightweight: No heavy C++ extensions or SimpleITK dependencies required—just standard scientific Python stacks.
Installation
pip install numpyradiomics
Usage
1. Basic Shape Extraction
The shape() function automatically dispatches to 2D or 3D logic based on the input mask dimensions.
import numpy as np
from numpyradiomics import shape, dro
# 1. Create a synthetic 3D mask (e.g., a 20x10x5 mm cuboid)
spacing = (1.0, 1.0, 1.0)
mask = dro.cuboid(radii_mm=(10.0, 5.0, 2.5), spacing=spacing)
# 2. Extract features
# extend=True (default) adds advanced metrics like Solidity and ConvexHullVolume
features = shape(mask, spacing, extend=True)
print(f"Volume: {features['VoxelVolume']} mm^3")
print(f"Sphericity: {features['Sphericity']:.4f}")
print(f"Solidity: {features['Solidity']:.4f}")
2. Working with Units
You can retrieve a dictionary mapping every feature to its physical unit (e.g., mm, mm^2, mm^3 or dimensionless).
from numpyradiomics import shape_units
# Get units for 3D features in centimeters
units = shape_units(dim=3, base_unit='cm')
print(f"MeshVolume unit: {units['MeshVolume']}") # Output: cm^3
print(f"Elongation unit: {units['Elongation']}") # Output: (empty string for dimensionless)
Supported Features
3D Shape (Standard)
- Volume: Mesh Volume, Voxel Volume
- Surface: Surface Area, Surface-to-Volume Ratio
- Dimensions: Max 3D Diameter, Max 2D Diameter (Slice, Column, Row)
- Shape Descriptors: Sphericity, Elongation, Flatness
- Axes: Major, Minor, and Least Axis Lengths
3D Shape (Extended)
- Advanced Volume: Convex Hull Volume, Bounding Box Volume
- Ratios: Solidity, Extent
- Inertia: Moments of Inertia, Fractional Anisotropy
- Other: Maximum Depth (Chebyshev Radius), Longest Caliper Diameter
2D Shape
- Area: Mesh Surface, Pixel Surface
- Perimeter: Perimeter, Perimeter-Surface Ratio
- Shape Descriptors: Sphericity, Spherical Disproportion, Elongation
- Axes: Major Axis, Minor Axis, Max Diameter
Texture
All standard texture metrics are available:
- GLCM: Gray Level Co-occurrence Matrix
- GLRLM: Gray Level Run Length Matrix
- GLSZM: Gray Level Size Zone Matrix
- GLDM: Gray Level Dependence Matrix
- NGTDM: Neighbouring Gray Tone Difference Matrix
License
Apache 2.0 License
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file numpyradiomics-0.0.2.tar.gz.
File metadata
- Download URL: numpyradiomics-0.0.2.tar.gz
- Upload date:
- Size: 40.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d31ec630343089775095d7ca5c7cec4224a7b45445a1ab407c35df93cf320a3
|
|
| MD5 |
ad8671cf5c263acd1189a1e03b041035
|
|
| BLAKE2b-256 |
0defefcc2da79f9411fd1632cebf076e38b53d0f053a20814624956eabc01bd3
|
File details
Details for the file numpyradiomics-0.0.2-py3-none-any.whl.
File metadata
- Download URL: numpyradiomics-0.0.2-py3-none-any.whl
- Upload date:
- Size: 42.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
085860ae93e5244caf16fb1f3d31b4b442e342b608f0b33ec9d96c47b3b73bad
|
|
| MD5 |
c1d526568ce00dfde2648df515348e38
|
|
| BLAKE2b-256 |
2a1d9794d34daf08a346b0eda4e613b91ac8c7160f6423a05875549ea41bb2d5
|