Skip to main content

PUMA (PET Universal Multi-tracer Aligner) is a robust and efficient tool for aligning images from different PET tracers. It leverages advanced diffeomorphic imaging techniques to offer high-precision alignment for multiplexed tracer images. PUMA aims to significantly enhance the accuracy and reproducibility of PET image studies.

Project description

Puma-logo

PUMA 1.0 ๐Ÿพ - One Image multiple perspectives ๐ŸŽญ

PyPI version License: GPL v3 Monthly Downloads Daily Downloads All Contributors

๐ŸŒˆ PET Reimagined: From Monochrome to a Palette of Possibilities with PUMA 1.0

Step into the vibrant new world of PET imaging with PUMA 1.0 ๐ŸŒŸ, where traditional monochrome scans are transformed into a dynamic spectrum of diagnostic data. ๐ŸŽจ

With PUMA 1.0, experience the power of multiplexing: a process that fuses multiple tracer images into a single, multicolored composite that reveals not just the presence of disease but its multifaceted physiological context. ๐Ÿ”„ The multiplexed approach provides a more comprehensive view, helping clinicians uncover nuanced insights about tumors and their microenvironments. ๐Ÿ”

Whether you're in a high-tech lab or a remote clinic, PUMA 1.0 delivers high-quality, multiplexed PET scans that are as rich in detail as they are in color. ๐Ÿฅ Itโ€™s not just an upgradeโ€”itโ€™s a whole new way of seeing PET data, turning every image into a detailed map of insight and opportunity. ๐Ÿ—บ๏ธ

๐ŸŽ‰ Key Features

๐Ÿš€ Versatile and Powerful

Run PUMA 1.0 on any device, any OS, from x86 to ARM64 (hello, Apple Silicon fans!). Whether youโ€™re on a high-end GPU or a humble CPU, PUMA adapts to your needs without breaking a sweat.

๐Ÿ” Precision Meets Speed

Harness the power of AI with MOOSE-driven segmentations and โ€˜greedyโ€™ libraryโ€™s wizardry for diffeomorphic image registration. PUMA 1.0 nails the perfect balance of sharp accuracy and zippy performance.

๐ŸŽจ Art of Imaging

Why settle for ordinary when you can visualize in vibrant RGB? Each color shines a spotlight on a different tracer, turning complex data into a vivid, easy-to-interpret display. With processing times ranging from just 5 to 12 minutes, you're all set for a speedy yet thorough diagnostic journey.

๐Ÿš€ Why PUMA?

https://github.com/ENHANCE-PET/PUMA/assets/48599863/03368642-a288-44cb-8eaf-4833380a26c8

Requirements โœ…

Before stepping into the future with PUMA 1.0, here's what you need for an optimal experience:

  • Operating System: Windows, Mac, or Linux - PUMA 1.0 is versatile and works across all these platforms.

  • Memory: Make sure your system has enough memory (8-16 GB) to run the tasks smoothly.

  • GPU: You would benefit from a cuda-enabled GPU (NVIDIA), 8 GB or more, or MPS (Apple silicon) - if you like quick results โšก๏ธ. But if you don't fret not, PUMA runs a cpu-tuned version if there is no GPU.

  • Python: PUMA 1.0 operates the best with Python 3.10.

Once these specifications are met, you're all set to experience PUMA 1.0's capabilities.

Installation Guide ๐Ÿ› ๏ธ

Installation is a breeze on Windows, Linux, and MacOS. Follow the steps below to start your journey with PUMA 1.0.

For Linux and MacOS ๐Ÿง๐Ÿ

  1. Create a Python environment named 'puma-env' or as per your preference.

    python3 -m venv puma-env
    
  2. Activate the environment.

    source puma-env/bin/activate  # for Linux
    source puma-env/bin/activate  # for MacOS
    
  3. Install PUMA 1.0.

    pip install pumaz # for Linux and MacOS
    
  4. Apple M1 Specific Installation: If you are installing PUMA on an Apple Silicon device (e.g., Apple M1), follow this step. Do not do this if you are installing PUMA on Linux!

    pip install git+https://github.com/LalithShiyam/pytorch-mps.git
    

Congratulations! You're all set to start using PUMA 1.0.

For Windows ๐ŸชŸ

  1. Create a Python environment, e.g., 'puma-env'.

    python -m venv puma-env
    
  2. Activate the environment.

    .\puma-env\Scripts\activate
    
  3. Install PUMA 1.0.

    pip install pumaz
    

You're now ready to experience the precision and speed of PUMA 1.0.

Usage Guide ๐Ÿ“š

Start your journey with PUMA 1.0 by using our straightforward command-line tool. It requires the directory path containing different tracer images, and each image should be stored in separate folders. Here's how you can get started:

   pumaz \
       -d   <path_to_image_dir>              # Directory path containing the images to be analyzed
       -ir  <regions_to_ignore>              # Regions to ignore: arms, legs, head, none
       -m                                    # Optional: Enable multiplexed RGB image output
       -cs  <color_selection>                # Optional: Custom color selection for RGB output (requires -m)
       -c2d <convert_back_to_dicom>          # Optional: Once set, the generated nifti images will be converted back to DICOM
  • <path_to_image_dir> refers to the parent directory containing different tracer images in their respective sub-directories.

  • -ir specifies the regions to be ignored during registration. If you don't want to ignore any regions, use none. If you want to ignore the arms, legs, or head during registration, pass the corresponding regions delimited by a ,. For example: -ir head,arms to ignore the head and arms.

  • -m will activate the output of a multiplexed RGB image of the combined tracer images.

  • -cs, when passed along with -m, PUMA will ask you to provide a custom order of color channels for the corresponding tracer images. That way, you can freely decide which tracer image is associated with which channel.

  • -c2d, when set the generated aligned nifti images will be converted back to DICOM.

For assistance or additional information, you can always type:

pumaz -h

Example usage:

Apply PUMA to images in a directory, ignoring arms and legs, with multiplexed RGB output and custom colors:

pumaz -d /path/to/images -ir arms,legs -m -cs -c2d 

Directory Structure and Naming Conventions for PUMA ๐Ÿ“‚๐Ÿท๏ธ

PUMA 1.0 requires your data to be structured in a certain way. It supports DICOM directories and NIFTI files. For NIFTI files, users need to ensure that the files are named with the correct modality tag at the start.

Required Directory Structure ๐ŸŒณ

Here is the directory structure that PUMA 1.0 expects:

๐Ÿ“ Parent_Directory
โ”‚
โ””โ”€โ”€โ”€๐Ÿ“‚ Tracer1 # can be named anything
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€โ”€๐Ÿ“ PET_DICOM_Directory or ๐Ÿ—ƒ๏ธ PT_xxxx.nii.gz # If it's DICOM, the folder name can be anything, but if nifti use a prefix 'PT' for PET
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€โ”€๐Ÿ“ CT_DICOM_Directory or ๐Ÿ—ƒ๏ธ CT_xxxx.nii.gz # If it's DICOM, the folder name can be anything, but if nifti use a prefix 'CT' for CT
โ”‚
โ””โ”€โ”€โ”€๐Ÿ“‚ Tracer2
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€โ”€๐Ÿ“ PET_DICOM_Directory or ๐Ÿ—ƒ๏ธ PT_xxxx.nii.gz
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€โ”€๐Ÿ“ CT_DICOM_Directory or ๐Ÿ—ƒ๏ธ CT_xxxx.nii.gz
...

โ””โ”€โ”€โ”€๐Ÿ“‚ Tracer3
    โ”‚
    โ””โ”€โ”€โ”€๐Ÿ“ PET_DICOM_Directory or ๐Ÿ—ƒ๏ธ PT_xxxx.nii.gz
    โ”‚
    โ””โ”€โ”€โ”€๐Ÿ“ CT_DICOM_Directory or ๐Ÿ—ƒ๏ธ CT_xxxx.nii.gz

Naming Conventions ๐Ÿท๏ธ

  • For DICOM directories, no specific naming is required.
  • For NIFTI files, the file should start with the DICOM modality tag (e.g., 'PT_' or 'CT_') followed by the desired name. For example, 'PT_MySample.nii.gz'.

Note: All the PET and CT images related to a tracer should be placed in the same directory named after the tracer.

๐Ÿš€ Benchmarks

A Note on QIMP Python Packages: The 'Z' Factor ๐Ÿ“š๐Ÿš€

All of our Python packages here at QIMP carry a special signature โ€“ a distinctive 'Z' at the end of their names. The 'Z' is more than just a letter to us; it's a symbol of our forward-thinking approach and commitment to continuous innovation.

Our PUMA package, for example, is named as 'pumaz', pronounced "puma-see". So, why 'Z'?

Well, in the world of mathematics and science, 'Z' often represents the unknown, the variable that's yet to be discovered, or the final destination in a series. We at QIMP believe in always pushing boundaries, venturing into uncharted territories, and staying on the cutting edge of technology. The 'Z' embodies this philosophy. It represents our constant quest to uncover what lies beyond the known, to explore the undiscovered, and to bring you the future of medical imaging.

Each time you see a 'Z' in one of our package names, be reminded of the spirit of exploration and discovery that drives our work. With QIMP, you're not just installing a package; you're joining us on a journey to the frontiers of medical image processing. Here's to exploring the 'Z' dimension together! ๐Ÿš€

Contributors โœจ

Thanks goes to these wonderful people โœจ:

W7ebere
W7ebere

๐Ÿ“–
Manuel Pires
Manuel Pires

๐Ÿ’ป ๐Ÿ“–
Sebastian Gutschmayer
Sebastian Gutschmayer

๐Ÿ’ป ๐Ÿ“–

This project follows the all-contributors specification. Contributions of any kind welcome!

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

pumaz-1.7.0.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

pumaz-1.7.0-py3-none-any.whl (37.3 kB view details)

Uploaded Python 3

File details

Details for the file pumaz-1.7.0.tar.gz.

File metadata

  • Download URL: pumaz-1.7.0.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pumaz-1.7.0.tar.gz
Algorithm Hash digest
SHA256 2aa037691c562596dbc6efafbc465277333382d98b4165b66102892f350d0cad
MD5 1cb7790b8a2ecc53b1a54a6e01e33096
BLAKE2b-256 8f5d7fd25c44d7546e54195bc983bcff56193ef2452c8f429fd0923c14fb1940

See more details on using hashes here.

File details

Details for the file pumaz-1.7.0-py3-none-any.whl.

File metadata

  • Download URL: pumaz-1.7.0-py3-none-any.whl
  • Upload date:
  • Size: 37.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pumaz-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d6f384fb22f020adc3abb50a3c91c6f42dc6b77bd70c9537670a5ce24e9d1cd
MD5 4cde353d2e3c9ff7232fc07a5c86203b
BLAKE2b-256 d0f53c9ae63e22de12ecb6f35a3d26b66da455f34d78f0ac0bb3c5b04420ed0f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page