Skip to main content

Tools for loading, augmenting and writing 3D medical images on PyTorch.

Project description

TorchIO logo

Tools like TorchIO are a symptom of the maturation of medical AI research using deep learning techniques.

Jack Clark, Policy Director at OpenAI (link).


Package PyPI downloads PyPI version Conda version
CI Tests status Linting status Documentation status Coverage status
Code Code quality Code maintainability pre-commit
Tutorials Google Colab
Community Slack Twitter Twitter YouTube Contributors

Progressive artifacts

Augmentation


Original Random blur
Original Random blur
Random flip Random noise
Random flip Random noise
Random affine transformation Random elastic transformation
Random affine transformation Random elastic transformation
Random bias field artifact Random motion artifact
Random bias field artifact Random motion artifact
Random spike artifact Random ghosting artifact
Random spike artifact Random ghosting artifact

Queue

(Queue for patch-based training)


TorchIO is a Python package containing a set of tools to efficiently read, preprocess, sample, augment, and write 3D medical images in deep learning applications written in PyTorch, including intensity and spatial transforms for data augmentation and preprocessing. Transforms include typical computer vision operations such as random affine transformations and also domain-specific ones such as simulation of intensity artifacts due to MRI magnetic field inhomogeneity or k-space motion artifacts.

This package has been greatly inspired by NiftyNet, which is not actively maintained anymore.

Credits

If you like this repository, please click on Star!

If you use this package for your research, please cite our paper:

F. Pérez-García, R. Sparks, and S. Ourselin. TorchIO: a Python library for efficient loading, preprocessing, augmentation and patch-based sampling of medical images in deep learning. Computer Methods and Programs in Biomedicine (June 2021), p. 106236. ISSN: 0169-2607.doi:10.1016/j.cmpb.2021.106236.

BibTeX entry:

@article{perez-garcia_torchio_2021,
    title = {TorchIO: a Python library for efficient loading, preprocessing, augmentation and patch-based sampling of medical images in deep learning},
    journal = {Computer Methods and Programs in Biomedicine},
    pages = {106236},
    year = {2021},
    issn = {0169-2607},
    doi = {https://doi.org/10.1016/j.cmpb.2021.106236},
    url = {https://www.sciencedirect.com/science/article/pii/S0169260721003102},
    author = {P{\'e}rez-Garc{\'i}a, Fernando and Sparks, Rachel and Ourselin, S{\'e}bastien},
}

This project is supported by the following institutions:

Getting started

See Getting started for installation instructions and a Hello, World! example.

Longer usage examples can be found in the tutorials.

All the documentation is hosted on Read the Docs.

Please open a new issue if you think something is missing.

Contributors

Thanks goes to all these people (emoji key):


Fernando Pérez-García

💻 📖

valabregue

🤔 👀 💻 💬

GFabien

💻 👀 🤔

G.Reguig

💻

Niels Schurink

💻

Ibrahim Hadzic

🐛

ReubenDo

🤔

Julian Klug

🤔

David Völgyes

🤔 💻

Jean-Christophe Fillion-Robin

📖

Suraj Pai

🤔

Ben Darwin

🤔

Oeslle Lucena

🐛

Soumick Chatterjee

💻

neuronflow

📖

Jan Witowski

📖

Derk Mus

📖 💻 🐛

Christian Herz

🐛

Cory Efird

💻 🐛

Esteban Vaca C.

🐛

Ray Phan

🐛

Akis Linardos

🐛 💻

Nina Montana-Brown

📖 🚇

fabien-brulport

🐛

malteekj

🐛

Andres Diaz-Pinto

🐛

Sarthak Pati

📦

GabriellaKamlish

🐛

Tyler Spears

🐛

DaGuT

📖

Xiangyu Zhao

🐛

siahuat0727

📖 🐛

Svdvoort

💻

Albans98

💻

Matthew T. Warkentin

💻

glupol

🐛

ramonemiliani93

📖 🐛

Justus Schock

💻 🐛

Stefan Milorad Radonjić

🐛

Sajan Gohil

🐛

Ikko Ashimine

📖

laynr

📖

Omar U. Espejel

🔊

James Butler

🐛

res191

🔍

nengwp

🐛 📖

susanveraclarke

🎨

nepersica

🐛

Sebastian Penhouet

🤔

Bigsealion

🐛

Dženan Zukić

👀

vasl12

🐛

François Rousseau

🐛

snavalm

💻

Jacob Reinhold

💻

Hsu

🐛

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

History

0.18.0 (29-11-2020)

  • Add FPG dataset
  • Optimize cropping in samplers
  • Optimize implementation of UniformSampler and WeightedSampler
  • Fix non integer labels in Colin 27 version 2008 (#223)
  • Add RandomAnisotropy transform
  • Add RandomGamma transform
  • Add ScalarImage and LabelMap classes
  • Add RandomLabelsToImage transform
  • Add support for more input types in Transform
  • Add support for 4D images
  • Add ICBM dataset
  • Add support to specify axes as anatomical labels
  • Add SpatialTransform and IntensityTransform
  • Replace ImagesDataset with SubjectsDataset
  • Add support to pass multiple paths to Image
  • Refactor reproducibility features
  • Add deterministic versions of all random transforms
  • Add support to invert transforms
  • Add support for SimpleITK > 1
  • Add pre-commit to help contributions and improve coda quality
  • Add DICOM data for testing
  • Add some visualization support (Subject.plot, Image.plot)
  • Add support to pass parameters per axis, e.g. for RandomAffine (#346)
  • Remove deprecated transforms Resample and CenterCropOrPad

0.17.0 (23-06-2020)

  • Add transforms history to Subject attributes to improve traceability
  • Add support to use an initial transformation in Resample
  • Add support to use an image file as target in Resample
  • Add mean argument to RandomNoise
  • Add tensor support for transforms
  • Add support to use strings as interpolation argument
  • Add support for 2D images
  • Add attribute access to Subject and Image
  • Add MNI and 3D Slicer datasets
  • Add intensity argument to RandomGhosting
  • Add translation argument to RandomAffine
  • Add shape, spacing and orientation attributes to Image and Subject
  • Refactor samplers
  • Refactor inference classes
  • Add 3D Slicer extension
  • Add ITK-SNAP datasets
  • Add support to take NumPy arrays as transforms input
  • Optimize cropping using PyTorch
  • Optimizing transforms by reducing number of tensor copying
  • Improve representation (repr()) of Image
  • Use lazy loading in Image

0.16.0 (21-04-2020)

  • Add advanced padding options for RandomAffine
  • Add reference space options in Resample
  • Add probability argument to all transforms
  • Add OneOf and Compose transforms to improve composability

0.15.0 (07-04-2020)

  • Refactor RandomElasticDeformation transform
  • Make Subject inherit from dict

0.14.0 (31-03-2020)

  • Add datasets module
  • Add support for DICOM files
  • Add documentation
  • Add CropOrPad transform

0.13.0 (24-02-2020)

  • Add Subject class
  • Add random blur transform
  • Add lambda transform
  • Add random patches swapping transform
  • Add MRI k-space ghosting artefact augmentation

0.12.0 (21-01-2020)

  • Add ToCanonical transform
  • Add CenterCropOrPad transform

0.11.0 (15-01-2020)

  • Add Resample transform

0.10.0 (15-01-2020)

  • Add Pad transform
  • Add Crop transform

0.9.0 (14-01-2020)

  • Add CLI tool to transform an image from file

0.8.0 (11-01-2020)

  • Add Image class

0.7.0 (02-01-2020)

  • Make transforms use PyTorch tensors consistently

0.6.0 (02-01-2020)

  • Add support for NRRD

0.5.0 (01-01-2020)

  • Add bias field transform

0.4.0 (29-12-2019)

  • Add MRI k-space motion artefact augmentation

0.3.0 (21-12-2019)

  • Add Rescale transform
  • Add support for multimodal data and missing modalities

0.2.0 (2019-12-06)

  • First release on PyPI.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchio-0.18.75.tar.gz (40.2 MB view details)

Uploaded Source

Built Distribution

torchio-0.18.75-py2.py3-none-any.whl (165.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file torchio-0.18.75.tar.gz.

File metadata

  • Download URL: torchio-0.18.75.tar.gz
  • Upload date:
  • Size: 40.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for torchio-0.18.75.tar.gz
Algorithm Hash digest
SHA256 3a3ad541331c816fac0702fd22a78bb6ab6ff8242c3fe96ee6de5fc86b62d045
MD5 0389457bcbcebe8510156a25e12acbc2
BLAKE2b-256 fcb6c9913047587242510cd64de62cb8fb1aa69dfa6f4af1bd924a317db1861d

See more details on using hashes here.

File details

Details for the file torchio-0.18.75-py2.py3-none-any.whl.

File metadata

  • Download URL: torchio-0.18.75-py2.py3-none-any.whl
  • Upload date:
  • Size: 165.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for torchio-0.18.75-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 889e1c378be88b692f2bdf35af918b8aa590f3bddb894416f380cd07cf45ccad
MD5 a827f6d778190b4206d0f881ab250ca1
BLAKE2b-256 1438203fabda75d8b558347480bb41fa9434e51a653921c234bef97f3fff27e1

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