Skip to main content

Pictologics

Pictologics logo

CI Docs PyPI Python Downloads License codecov Ruff Mypy

Pictologics is a Python library for radiomic feature extraction from medical images. It follows IBSI 1 (the features) and IBSI 2 (the filters), and it checks its results against the IBSI reference values.

Documentation (user guide, tutorials, API, benchmarks): https://martonkolossvary.github.io/pictologics/

Why Pictologics?

  • 🚀 Fast: Numba compiles the computations for your computer, and they run on all cores. The Benchmarks page gives the time of each part.
  • ✅ IBSI compliant: checked against the IBSI phantoms and data sets:
    • IBSI 1 (features): 675 feature values pass; 21 more have a reference value without a tolerance (report).
    • IBSI 2 Phase 1 (filters): 28 of 28 compared tests pass (report).
    • IBSI 2 Phase 2 (filtered features): 9 of 9 tests pass (report).
    • IBSI 2 Phase 3 (reproducibility): 153 scans, compared with 9 teams (report).
  • 🔧 Versatile: reads NIfTI, NRRD, MetaImage and DICOM images, DICOM SEG, DICOM RTSTRUCT and 3D Slicer segmentations, and DICOM SR reports.
  • ✨ Easy to use: pip installs it. One pipeline runs the preprocessing and the features, for one image or for a whole study.
  • 🛡️ Predictable results: each configuration gives all its feature columns, also when a step fails (the values are then NaN). A study table never has missing columns.
  • 🛠️ Maintained: Pictologics is developed to give robust radiomic features that describe the morphology of diseases on radiological images.

What Is New in 0.6.0

  • Studies: run_batch runs many cases, in more than one process, with one result file for each case. A stopped batch goes on where it stopped. run_rois runs each ROI of a label map with one image load.
  • Masks: grow_mask grows or shrinks a mask by a distance in mm, or keeps a ring, for example the fat around a vessel.
  • MR and PET: the normalise step normalises MR intensities, and load_image(..., suv="bw") gives PET images in SUV.
  • Files: new readers for NRRD, MetaImage, 3D Slicer .seg.nrrd and DICOM RTSTRUCT, and save_image writes NIfTI files.
  • Filters and features: the Gaussian filter, constant padding for all filters, the parts of the Gabor response, and the IBSI texture distances.
  • Templates: 60 configurations for cardiac CT (lv and coronary).
  • Reproducibility: each log entry records the config_hash of its configuration and the versions of the run.
  • Breaking changes: NIfTI geometry in the LPS+ frame, a fixed FBS start in every image, and the long-format column feature_key. See the Changelog.

Installation

Pictologics needs Python 3.12, 3.13 or 3.14.

pip install pictologics

From the source code:

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

Quick Start

from pictologics import RadiomicsPipeline, format_results, save_results

# 1. A pipeline with the six standard configurations
pipeline = RadiomicsPipeline()

# 2. Run the configurations on an image and its mask
results = pipeline.run(
    image="path/to/ct.nii.gz",
    mask="path/to/mask.nii.gz",
    subject_id="Subject_001",
    config_names=["all_standard"],  # the FBS configurations start at -1000 HU, for CT
)

# 3. One table row, with your own columns first
row = format_results(results, fmt="wide", meta={"subject_id": "Subject_001", "group": "control"})

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

For MR or PET images, use the FBN configurations (config_names=["standard_fbn_32"]) or your own. See the Quick Start and the Cookbook.

Performance Benchmarks

Task Size Time (median)
run(): one standard configuration (standard_fbn_32) CT of 512 × 512 × 200 27.7 ms
run(): the 6 standard configurations CT of 512 × 512 × 200 80.0 ms
Texture (all 6 families) 2,311,384 ROI voxels 54.4 ms
Morphology 2,311,384 ROI voxels 19.5 ms
LoG (sigma 2 mm) 256³ voxels 179.9 ms
Gabor (axial, rotation invariant) 256³ voxels 105.8 ms

The median of 5 runs on one computer, after a warm-up run. See the benchmark page for all results, plots and the computer.

Quality & Compliance

IBSI Compliance: IBSI 1 Features | IBSI 2 Phase 1 Filters | Phase 2 Features | Phase 3 Reproducibility

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

Metadata

Release files for pictologics 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pictologics 0.6.0
File Size Uploaded
pictologics-0.6.0.tar.gz 267.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pictologics 0.6.0
File Interpreter ABI Platform
pictologics-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 558.1 kB

Release files / pictologics-0.6.0.tar.gz

Download URL pictologics-0.6.0.tar.gz
Size 267.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7cac78b243dbe7b3f085d1ce0ae312dfd5b9f335ff3461801fc2ce50dbc30d8e
BLAKE2b-256 checksum
How to use checksums
af1de37ea99c176a75a6903c7382ca7b69000411113f66af95f6b49165a25f2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pictologics-0.6.0-py3-none-any.whl

Download URL pictologics-0.6.0-py3-none-any.whl
Size 290.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29c0981a1411678c613d437950b97873e1589e6c604ff642bedb00de3666bf9b
BLAKE2b-256 checksum
How to use checksums
a2a304faaf722282cda791e651b032a947d96d3d21a640adaef5d38667a1364b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.7.1

2 release files

0.7.0

2 release files

This release

0.6.0 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page