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.6.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.6-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for spacetransformer_core-0.2.6.tar.gz
Algorithm Hash digest
SHA256 fd2b20cabd2ce59503d55cfece1500defba407e098e956cc4e4e139a8c08c79f
MD5 dfb91304a9d159b6643507d21eaa6055
BLAKE2b-256 671fdb30b4d0eaaf7d5ceb3c68e7b245754847c1ac428a0273f3642a12ef7511

See more details on using hashes here.

Provenance

The following attestation bundles were made for spacetransformer_core-0.2.6.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.6-py3-none-any.whl.

File metadata

File hashes

Hashes for spacetransformer_core-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 55c296a791141a7a022417bbe4d137a2342e261d550bb5059162fda763db4cac
MD5 369df84d4d96e4b26322e51d68c1d981
BLAKE2b-256 b55faf692c513aa0c550306b5ec6d068f100f219db9d992007979a42ebe94d5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for spacetransformer_core-0.2.6-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