Skip to main content

IBSI-compliant radiomic feature extraction package

Project description

Pictologics

Pictologics logo

CI Docs PyPI Python Downloads License codecov Ruff Mypy

Pictologics is a high-performance, IBSI-compliant Python library for radiomic feature extraction from medical images (NIfTI, DICOM).

Documentation (User Guide, API, Benchmarks): https://martonkolossvary.github.io/pictologics/

Why Pictologics?

  • 🚀 High Performance: Uses numba for JIT compilation, achieving significant speedups over other libraries (speedups between 15-300x compared to pyradiomics, see Benchmarks page for details).
  • ✅ IBSI Compliant: Implements standard algorithms verified against the IBSI digital and CT phantom (IBSI compliance page for details).
  • 🔧 Flexible: Configurable pipeline for reproducible research. Provides utilities for DICOM parsing and organization and common image processing tasks.
  • 👁️ Visualization: Built-in utilities for visual quality control of mask overlays and segmentations.
  • ✨ Easy to Use: Simple installation and a straightforward pipeline make it easy to get started quickly.
  • 🛠️ Actively Maintained: Continuously maintained and developed with the intention to provide robust latent radiomic features that can reliably describe morphological characteristics of diseases on radiological images.

Installation

Pictologics requires Python 3.12+.

pip install pictologics

Or install from source:

git clone https://github.com/martonkolossvary/pictologics.git
cd pictologics
pip install .

Quick Start

from pictologics import RadiomicsPipeline, format_results, save_results

# 1. Initialize the pipeline
pipeline = RadiomicsPipeline()

# 2. Run the "all_standard" configurations
results = pipeline.run(
    image="path/to/image.nii.gz",
    mask="path/to/mask.nii.gz",
    subject_id="Subject_001",
    config_names=["all_standard"]
)

# 3. Inject subject ID or other metadata directly into the row
row = format_results(
    results, 
    fmt="wide", 
    meta={"subject_id": "Subject_001", "group": "control"}
)

# 4. Save to CSV
save_results([row], "results.csv")

Performance Benchmarks

Benchmark Configuration

Comparisons between Pictologics and PyRadiomics (single-thread parity).

[!TIP] Detailed performance tables and extra feature (IVH, local intensity, GLDZM, etc.) measurements available in the Benchmarks Documentation.

Test Data Generation:

  • Texture: 3D correlated noise generated using Gaussian smoothing.
  • Mask: Blob-like structures generated via thresholded smooth noise with random holes.
  • Voxel Distribution: Mean=486.04, Std=90.24, Min=0.00, Max=1000.00.

HARDWARE USED FOR CALCULATIONS

  • Hardware: Apple M4 Pro, 14 cores, 48 GB
  • OS: macOS 26.2 (arm64)
  • Python: 3.12.10
  • Core deps: pictologics 0.2.0, numpy 2.3.5, scipy 1.16.3, numba 0.62.1, pandas 2.3.3, matplotlib 3.10.7
  • PyRadiomics stack (parity runs): pyradiomics 3.1.1.dev111+g8ed579383, SimpleITK 2.5.3
  • BLAS/LAPACK: Apple Accelerate (from numpy.show_config())

Note: the benchmark script explicitly calls warmup_jit() before timing to avoid including Numba compilation overhead in the measured runtimes.

Intensity

Execution Time (Log-Log) Speedup
Intensity time Intensity speedup

Morphology

Execution Time (Log-Log) Speedup
Morphology time Morphology speedup

Texture

Execution Time (Log-Log) Speedup
Texture time Texture speedup

Quality & Compliance

IBSI Compliance: Full compliance (see Report).

Code Health

  • Test Coverage: 100.00%
  • Mypy Errors: 0
  • Ruff Issues: 0

See Quality Report for full details.

Citation

Citation information will be added/updated.

License

Apache-2.0

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

pictologics-0.2.0.tar.gz (93.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pictologics-0.2.0-py3-none-any.whl (101.6 kB view details)

Uploaded Python 3

File details

Details for the file pictologics-0.2.0.tar.gz.

File metadata

  • Download URL: pictologics-0.2.0.tar.gz
  • Upload date:
  • Size: 93.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pictologics-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d1df0d3153201c100fcd2934d41830e85ebe61e13952a7ecfcbf468d425871d5
MD5 a3f6045ce3e5e60c2073e0fb41959590
BLAKE2b-256 ed01b2d9f839e0a4ede4e648b6f1e7b07fc27032c9ec1dda62ceae30cc0eefa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pictologics-0.2.0.tar.gz:

Publisher: publish-pypi.yml on martonkolossvary/pictologics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pictologics-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pictologics-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 101.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pictologics-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b40a58d39ae1eda5c22a703c667361676b1b83ee273fc690e8befb96c361c8f3
MD5 f2c27acb66d148f63a98e4fce851d576
BLAKE2b-256 0d204f80e7e6fd3c48a21622863a73a818cd63dd260805e922afef2b28612f8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pictologics-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yml on martonkolossvary/pictologics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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