spacetransformer-core


Namespacetransformer-core JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryPure numpy core implementation of Space Transformer for geometric computations.
upload_time2025-07-14 09:32:47
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords medical-imaging geometry transform numpy
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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:
```python
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:
```python
# Chain operations elegantly
transformed_space = (space
    .apply_flip(axis=2)
    .apply_resize((256, 256, 50))
    .apply_crop(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
```python
# Traditional approach: careful bookkeeping required
# crop -> resize -> segmentation -> resize back -> pad back

# SpaceTransformer approach: fully reversible by design
target_space = original_space.apply_crop(bbox).apply_resize(target_size)
warped_img = warp_image(original_img, 
                        original_space, 
                        target_space, 
                        mode='linear', 
                        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
```python
# Plan transformations (fast, no actual image processing)
target_space = source_space.apply_flip(0).apply_rotate(1, 30).apply_crop(bbox).apply_resize((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

```python
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_resize((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

```bash
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.* 

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "spacetransformer-core",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "medical-imaging, geometry, transform, numpy",
    "author": null,
    "author_email": "Your Name <you@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/69/e4/050ff9d205575f32896bc96dfcff01bef6e3407531630463785712736f4d/spacetransformer_core-0.1.0.tar.gz",
    "platform": null,
    "description": "# SpaceTransformer\n\nA Python library for elegant 3D medical image geometric transformations.\n\n\n\n## Why SpaceTransformer?\n\nTraditional medical image processing suffers from fragmented coordinate concepts:\n\n- **Frame**: Only captures position/orientation, missing crucial **shape** information\n- **NIfTI Affine**: A 4x4 matrix that's hard to interpret - what does each element mean?\n- **Manual bookkeeping**: Keeping track of transformations across multiple processing steps\n\nSpaceTransformer introduces the **Space** concept - a complete description of 3D image geometry.\n\n## Key Advantages\n\n### 1. Complete Geometric Description\nUnlike traditional \"frame\" concepts, `Space` fully describes the image sampling grid:\n```python\nspace = Space(\n    shape=(512, 512, 100),           # Complete voxel dimensions\n    origin=(0.0, 0.0, 0.0),         # Physical position\n    spacing=(0.5, 0.5, 2.0),        # Voxel size in mm\n    x_orientation=(1, 0, 0),        # Explicit direction vectors\n    y_orientation=(0, 1, 0),        # No ambiguous matrix interpretation\n    z_orientation=(0, 0, 1)\n)\n```\n\n### 2. Expressive Spatial Operations\nDescribe complex transformations explicitly:\n```python\n# Chain operations elegantly\ntransformed_space = (space\n    .apply_flip(axis=2)\n    .apply_resize((256, 256, 50))\n    .apply_crop(bbox))\n```\n\n### 3. Transparent Matrix Interpretation\nNo more guessing what a 4x4 affine matrix means - direction vectors are explicit.\n\n## Elegant Image Processing\n\n### 1. Worry-Free Multi-Step Pipelines\n```python\n# Traditional approach: careful bookkeeping required\n# crop -> resize -> segmentation -> resize back -> pad back\n\n# SpaceTransformer approach: fully reversible by design\ntarget_space = original_space.apply_crop(bbox).apply_resize(target_size)\nwarped_img = warp_image(original_img, \n                        original_space, \n                        target_space, \n                        mode='linear', \n                        pad_value=-1000)\n# ... process in target_space ...\nsegment_result = segmodel(warped_img) # hxwxl, int\nkeypoint_result = keypmodel(warped_img) # nx3, [i,j,k], index coord\n# Automatic optimal path back to original_space\noriginal_segment_result = warp_image(segment_result, \n                                     target_space, \n                                     original_space, \n                                     mode='nearest', \n                                     pad_value = 0)\noriginal_keypoint_result = warp_point(keypoint_result, \n                                      target_space, \n                                      original_space) # nx3, index coord \nworld_keypoint_result = target_space.to_world_transform(keypoint_result) # nx3, [x,y,z], mm\n```\n\n### 2. Abstract-Then-Execute Pattern\n```python\n# Plan transformations (fast, no actual image processing)\ntarget_space = source_space.apply_flip(0).apply_rotate(1, 30).apply_crop(bbox).apply_resize((256, 256, 128))\n\n# Execute once with optimal path (GPU-accelerated)\nresult = warp_image(image, source_space, target_space, cuda_device=\"cuda:0\")\n```\n\n### 3. GPU-Accelerated & Deep Learning Ready\n- PyTorch backend with automatic optimal transformation paths\n- No `align_corners` confusion - transformations are mathematically guaranteed reversible\n- Seamless integration with deep learning workflows\n\n## Architecture\n\n- **spacetransformer-core**: Pure NumPy implementation for geometric computations\n- **spacetransformer-torch**: GPU-accelerated image resampling with PyTorch\n\n## Quick Start\n\n```python\nimport numpy as np\nfrom spacetransformer.core import Space\nfrom spacetransformer.torch import warp_image\n\n# Create image space\nspace = Space(\n    shape=(512, 512, 100),\n    spacing=(1.0, 1.0, 2.0),\n    origin=(0, 0, 0)\n)\n\n# Define target transformation\ntarget_space = space.apply_flip(axis=2).apply_resize((256, 256, 50))\n\n# Apply to image (GPU-accelerated)\ntransformed_image = warp_image(\n    image, space, target_space, \n    pad_value=0, cuda_device=\"cuda:0\"\n)\n```\n\n## Format Support\n\n- **NIfTI**: `Space.from_nifti(nifti_image)`\n- **SimpleITK**: `Space.from_sitk(sitk_image)`\n\n## Installation\n\n```bash\npip install spacetransformer-core      # Core functionality\npip install spacetransformer-torch     # GPU acceleration\n```\n\n## Requirements\n\n- **Core**: Python \u22653.8, NumPy \u22651.20\n- **Torch**: PyTorch \u22651.12 (spacetransformer-torch)\n\n---\n\n*SpaceTransformer: Making 3D medical image transformations as elegant as they should be.* \n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Pure numpy core implementation of Space Transformer for geometric computations.",
    "version": "0.1.0",
    "project_urls": null,
    "split_keywords": [
        "medical-imaging",
        " geometry",
        " transform",
        " numpy"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "803e30f37eb091302a1766545cf02f96fb98fd18ed5449ad3402e75b54167b97",
                "md5": "77fffd3d69d883364f85f984ccc2cbd6",
                "sha256": "b4bc1e886da207a4decf4369286483e5fc0a55aa26002b881d78e68b69401f2f"
            },
            "downloads": -1,
            "filename": "spacetransformer_core-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "77fffd3d69d883364f85f984ccc2cbd6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 21664,
            "upload_time": "2025-07-14T09:32:45",
            "upload_time_iso_8601": "2025-07-14T09:32:45.781375Z",
            "url": "https://files.pythonhosted.org/packages/80/3e/30f37eb091302a1766545cf02f96fb98fd18ed5449ad3402e75b54167b97/spacetransformer_core-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "69e4050ff9d205575f32896bc96dfcff01bef6e3407531630463785712736f4d",
                "md5": "e804174a9a554d7d10cffc09c7dda151",
                "sha256": "fd26aa5c354793bb13448399073de5412e54cc6f6594cbc08c8d77eac4cdf364"
            },
            "downloads": -1,
            "filename": "spacetransformer_core-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e804174a9a554d7d10cffc09c7dda151",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 25902,
            "upload_time": "2025-07-14T09:32:47",
            "upload_time_iso_8601": "2025-07-14T09:32:47.283225Z",
            "url": "https://files.pythonhosted.org/packages/69/e4/050ff9d205575f32896bc96dfcff01bef6e3407531630463785712736f4d/spacetransformer_core-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-14 09:32:47",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "spacetransformer-core"
}
        
Elapsed time: 0.42221s