Skip to main content

Pure numpy core implementation of Space Transformer for geometric computations.

Project description

SpaceTransformer

A Python library for elegant 3D medical image geometric transformations.

Why SpaceTransformer?

Traditional medical image processing suffers from fragmented coordinate concepts:

  • Frame: Only captures position/orientation, missing crucial shape information
  • NIfTI Affine: A 4x4 matrix that's hard to interpret - what does each element mean?
  • Manual bookkeeping: Keeping track of transformations across multiple processing steps

SpaceTransformer introduces the Space concept - a complete description of 3D image geometry.

Key Advantages

1. Complete Geometric Description

Unlike traditional "frame" concepts, Space fully describes the image sampling grid:

space = Space(
    shape=(512, 512, 100),           # Complete voxel dimensions
    origin=(0.0, 0.0, 0.0),         # Physical position
    spacing=(0.5, 0.5, 2.0),        # Voxel size in mm
    x_orientation=(1, 0, 0),        # Explicit direction vectors
    y_orientation=(0, 1, 0),        # No ambiguous matrix interpretation
    z_orientation=(0, 0, 1)
)

2. Expressive Spatial Operations

Describe complex transformations explicitly:

# Chain operations elegantly
transformed_space = (space
    .apply_flip(axis=2)
    .apply_shape((256, 256, 50))
    .apply_bbox(bbox))

3. Transparent Matrix Interpretation

No more guessing what a 4x4 affine matrix means - direction vectors are explicit.

Elegant Image Processing

1. Worry-Free Multi-Step Pipelines

# Traditional approach: careful bookkeeping required
# crop -> resize -> segmentation -> resize back -> pad back

# SpaceTransformer approach: fully reversible by design
target_space = original_space.apply_bbox(bbox).apply_shape(target_size)
warped_img = warp_image(original_img, 
                        original_space, 
                        target_space, 
                        mode='trilinear', 
                        pad_value=-1000)
# ... process in target_space ...
segment_result = segmodel(warped_img) # hxwxl, int
keypoint_result = keypmodel(warped_img) # nx3, [i,j,k], index coord
# Automatic optimal path back to original_space
original_segment_result = warp_image(segment_result, 
                                     target_space, 
                                     original_space, 
                                     mode='nearest', 
                                     pad_value = 0)
original_keypoint_result = warp_point(keypoint_result, 
                                      target_space, 
                                      original_space) # nx3, index coord 
world_keypoint_result = target_space.to_world_transform(keypoint_result) # nx3, [x,y,z], mm

2. Abstract-Then-Execute Pattern

# Plan transformations (fast, no actual image processing)
target_space = source_space.apply_flip(0).apply_rotate(1, 30, unit="degree").apply_bbox(bbox).apply_shape((256, 256, 128))

# Execute once with optimal path (GPU-accelerated)
result = warp_image(image, source_space, target_space, cuda_device="cuda:0")

3. GPU-Accelerated & Deep Learning Ready

  • PyTorch backend with automatic optimal transformation paths
  • No align_corners confusion - transformations are mathematically guaranteed reversible
  • Seamless integration with deep learning workflows

Architecture

  • spacetransformer-core: Pure NumPy implementation for geometric computations
  • spacetransformer-torch: GPU-accelerated image resampling with PyTorch

Quick Start

View Example Notebook - See a practical demonstration of the library's capabilities

import numpy as np
from spacetransformer.core import Space
from spacetransformer.torch import warp_image

# Create image space
space = Space(
    shape=(512, 512, 100),
    spacing=(1.0, 1.0, 2.0),
    origin=(0, 0, 0)
)

# Define target transformation
target_space = space.apply_flip(axis=2).apply_shape((256, 256, 50))

# Apply to image (GPU-accelerated)
transformed_image = warp_image(
    image, space, target_space, 
    pad_value=0, cuda_device="cuda:0"
)

Format Support

  • NIfTI: Space.from_nifti(nifti_image)
  • SimpleITK: Space.from_sitk(sitk_image)

Installation

pip install spacetransformer-core      # Core functionality
pip install spacetransformer-torch     # GPU acceleration

Requirements

  • Core: Python ≥3.8, NumPy ≥1.20
  • Torch: PyTorch ≥1.12 (spacetransformer-torch)

SpaceTransformer: Making 3D medical image transformations as elegant as they should be.

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

spacetransformer_core-0.2.7.tar.gz (11.1 MB view details)

Uploaded Source

Built Distribution

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

spacetransformer_core-0.2.7-py3-none-any.whl (30.5 kB view details)

Uploaded Python 3

File details

Details for the file spacetransformer_core-0.2.7.tar.gz.

File metadata

  • Download URL: spacetransformer_core-0.2.7.tar.gz
  • Upload date:
  • Size: 11.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spacetransformer_core-0.2.7.tar.gz
Algorithm Hash digest
SHA256 ef5760e2303945aa32195a5d78a5976942f8e9d70f0a55738ae3818ab8b52631
MD5 4ffdeab870f8cb4541c0027c2acc08a5
BLAKE2b-256 78c0c16ba0039f71be615c31893675ab1400ec91bf1364fc57c0ec1c35a7d53d

See more details on using hashes here.

Provenance

The following attestation bundles were made for spacetransformer_core-0.2.7.tar.gz:

Publisher: main.yml on fastdiag-toolbox/spacetransformer-core

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

File details

Details for the file spacetransformer_core-0.2.7-py3-none-any.whl.

File metadata

File hashes

Hashes for spacetransformer_core-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3dfae3e130ce5736584956bf75abd59af6b8aebbcd9c6b8ef96eaa82d1e9aff2
MD5 c3415358453a4f8617186beb36eb5326
BLAKE2b-256 57f073834416f8a44e6ec10ebeef8d0b1e3451a8eedc8368c3174afe1b1947a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for spacetransformer_core-0.2.7-py3-none-any.whl:

Publisher: main.yml on fastdiag-toolbox/spacetransformer-core

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