intensity-normalization


Nameintensity-normalization JSON
Version 2.2.4 PyPI version JSON
download
home_pagehttps://github.com/jcreinhold/intensity-normalization
Summarynormalize the intensities of various MR image modalities
upload_time2023-05-31 21:10:49
maintainer
docs_urlNone
authorJacob Reinhold
requires_python>=3.9
licenseApache Software License 2.0
keywords intensity normalization mri
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            =======================
intensity-normalization
=======================

.. image:: https://img.shields.io/pypi/v/intensity-normalization.svg
        :target: https://pypi.python.org/pypi/intensity-normalization

.. image:: https://img.shields.io/conda/vn/conda-forge/intensity-normalization
        :target: https://anaconda.org/conda-forge/intensity-normalization

.. image:: https://readthedocs.org/projects/intensity-normalization/badge/?version=latest
        :target: http://intensity-normalization.readthedocs.io/en/latest/

.. image:: https://img.shields.io/pypi/pyversions/intensity-normalization
        :target: https://www.python.org/

This package contains various methods to normalize the intensity of various modalities of magnetic resonance (MR)
images, e.g., T1-weighted (T1-w), T2-weighted (T2-w), FLuid-Attenuated Inversion Recovery (FLAIR), and Proton
Density-weighted (PD-w).

The basic functionality of this package can be summarized in the following image:

.. image:: _static/imgs/intnorm_illustration.png

where the left-hand side are the histograms of the intensities for a set of *unnormalized* images (from the same scanner
with the same protocol!) and the right-hand side are the histograms after (FCM) normalization.

We used this package to explore the impact of intensity normalization on a synthesis task (**pre-print**
available `here <https://arxiv.org/abs/1812.04652>`_).

*Note that while this release was carefully inspected, there may be bugs. Please submit an issue if you encounter a
problem.*

Methods
-------

We implement the following normalization methods (the names of the corresponding command-line interfaces are to the
right in parentheses):

Individual time-point normalization methods
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Z-score normalization (``zscore-normalize``)
- Fuzzy C-means (FCM)-based tissue-based mean normalization (``fcm-normalize``)
- Kernel Density Estimate (KDE) WM mode normalization (``kde-normalize``)
- WhiteStripe [1]_ (``ws-normalize``)

Sample-based normalization methods
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Least squares (LSQ) tissue mean normalization (``lsq-normalize``)
- Piecewise Linear Histogram Matching (Nyúl & Udupa) [2]_ [3]_ (``nyul-normalize``)
- RAVEL [4]_ (``ravel-normalize``)

**Individual image-based** methods normalize images based on one time-point of one subject.

**Sample-based** methods normalize images based on a *set* of images of (usually) multiple subjects of the same
modality.

**Recommendation on where to start**: If you are unsure which one to choose for your application, try FCM-based WM-based
normalization (assuming you have access to a T1-w image for all the time-points). If you are getting odd results in
non-WM tissues, try least squares tissue normalization (which minimizes the least squares distance between CSF, GM, and
WM tissue means within a set).

`Read about the methods and how they work <https://intensity-normalization.readthedocs.io/en/latest/algorithm.html>`_.
If you have a non-standard modality, e.g., a contrast-enhanced image, read about how the methods work and
determine which method would work for your use case. Make sure you plot the foreground intensities (with
the ``-p`` option in the CLI or the ``HistogramPlotter`` in the Python API) to validate the normalization results.

*All algorithms except Z-score* (``zscore-normalize``) *and the Piecewise Linear Histogram Matching*
(``nyul-normalize``) *are specific to images of the brain.*

Motivation
----------

Intensity normalization is an important pre-processing step in many image processing applications regarding MR images
since MR images have an inconsistent intensity scale across (and within) sites and scanners due to, e.g.,:

1) the use of different equipment,
2) different pulse sequences and scan parameters,
3) and a different environment in which the machine is located.

Importantly, the inconsistency in intensities *isn't a feature* of the data (unless you want to classify the
scanner/site from which an image came)—it's an artifact of the acquisition process. The inconsistency causes a problem
with machine learning-based image processing methods, which usually assume the data was gathered iid from some
distribution.

Install
-------

The easiest way to install the package is through the following command::

    pip install intensity-normalization

To install from the source directory, clone the repo and run::

    python setup.py install

Note the package `antspy <https://github.com/ANTsX/ANTsPy>`_ is required for the RAVEL normalization routine, the
preprocessing tool as well as the co-registration tool, but all other normalization and processing tools work without
it. To install the antspy package along with the RAVEL, preprocessing, and co-registration CLI, install with::

    pip install "intensity-normalization[ants]"

Basic Usage
-----------

See the `5 minute overview <https://github.com/jcreinhold/intensity-normalization/blob/master/tutorials/5min_tutorial.rst>`_
for a more detailed tutorial.

In addition to the above small tutorial, here is consolidated
`documentation <https://intensity-normalization.readthedocs.io/en/latest/>`_.

Call any executable script with the ``-h`` flag to see more detailed instructions about the proper call.

Note that **brain masks** (or already skull-stripped images) are required for most of the normalization methods. The
brain masks do not need to be perfect, but each mask needs to remove most of the tissue outside the brain. Assuming you
have T1-w images for each subject, an easy and robust method for skull-stripping
is `ROBEX <https://www.nitrc.org/projects/robex>`_ [5]_.

If the images are already skull-stripped, you don't need to provide a brain mask. The foreground will be
automatically estimated and used.

You can install ROBEX—and get python bindings for it at the same time–with the
package `pyrobex <https://github.com/jcreinhold/pyrobex>`_ (installable via ``pip install pyrobex``).

Individual time-point normalization methods
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Example call to a individual time-point normalization CLI::

    fcm-normalize t1w_image.nii -m brain_mask.nii

Sample-based normalization methods
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Example call to a sample-based normalization CLI::

    nyul-normalize images/ -m masks/ -o nyul_normalized/ -v

where ``images/`` is a directory full of N MR images and ``masks/`` is a directory full of N corresponding brain masks,
``nyul_normalized`` is the output directory for the normalized images, and ``-v`` controls the verbosity of the output.

The command line interface is standard across all sampled-based normalization routines (i.e., you should be able to run
all sample-based normalization routines with the same call as in the above example); however, each has unique
method-specific options.

Potential Pitfalls
------------------

1) This package was developed to process **adult human** MR images; neonatal, pediatric, and animal MR images *should*
   also work but—if the data has different proportions of tissues or differences in relative intensity among tissue
   types compared with adults—the normalization may fail. The ``nyul-normalize`` method, in particular, will fail hard if
   you train it on adult data and test it on non-adult data (or vice versa). Please open an issue if you encounter a
   problem with the package when normalizing non-adult human data.

2) When we refer to any specific modality, it is referring to a **non-contrast** version unless otherwise stated. Using
   a contrast image as input to a method that assumes non-contrast will produce suboptimal results. One potential way to
   normalize contrast images with this package is to 1) find a tissue that is not affected by the contrast (e.g., grey
   matter) and normalize based on some summary statistic of that (where the tissue mask was found on a non-contrast
   image); 2) use a simplistic (but non-robust) method like Z-score normalization.

   `Read about the methods <https://intensity-normalization.readthedocs.io/en/latest/algorithm.html>`_ and how they work
   to decide which method would work best for your contrast-enhanced images.

Contributing
------------

**Help wanted!** See `CONTRIBUTING.rst <https://github.com/jcreinhold/intensity-normalization/blob/master/CONTRIBUTING.rst>`_
for details and/or reach out to me if you'd like to contribute. Credit will be given!
If you want to add a method, I'll be happy to add your reference to the citation
section below.

Test Package
------------

Unit tests can be run from the main directory as follows::

    pytest tests

Citation
--------

If you use the ``intensity-normalization`` package in an academic paper, please cite the
corresponding `paper <https://arxiv.org/abs/1812.04652>`_::

    @inproceedings{reinhold2019evaluating,
      title={Evaluating the impact of intensity normalization on {MR} image synthesis},
      author={Reinhold, Jacob C and Dewey, Blake E and Carass, Aaron and Prince, Jerry L},
      booktitle={Medical Imaging 2019: Image Processing},
      volume={10949},
      pages={109493H},
      year={2019},
      organization={International Society for Optics and Photonics}}

References
----------

.. [1] R. T. Shinohara, E. M. Sweeney, J. Goldsmith, N. Shiee, F. J. Mateen, P. A. Calabresi, S. Jarso, D. L. Pham, D. S.
       Reich, and C. M. Crainiceanu, “Statistical normalization techniques for magnetic resonance imaging,” NeuroImage Clin.,
       vol. 6, pp. 9–19, 2014.

.. [2] N. Laszlo G and J. K. Udupa, “On Standardizing the MR Image Intensity Scale,” Magn. Reson. Med., vol. 42, pp.
       1072–1081, 1999.

.. [3] M. Shah, Y. Xiao, N. Subbanna, S. Francis, D. L. Arnold, D. L. Collins, and T. Arbel, “Evaluating intensity
       normalization on MRIs of human brain with multiple sclerosis,” Med. Image Anal., vol. 15, no. 2, pp. 267–282, 2011.

.. [4] J. P. Fortin, E. M. Sweeney, J. Muschelli, C. M. Crainiceanu, and R. T. Shinohara, “Removing inter-subject technical
       variability in magnetic resonance imaging studies,” NeuroImage, vol. 132, pp. 198–212, 2016.

.. [5] Iglesias, Juan Eugenio, Cheng-Yi Liu, Paul M. Thompson, and Zhuowen Tu. "Robust brain extraction across datasets and
       comparison with publicly available methods." IEEE transactions on medical imaging 30, no. 9 (2011): 1617-1634.

=======
History
=======

2.2.4 (2023-05-31)
------------------

* Update to allow Python >=3.9

2.2.3 (2022-03-15)
------------------

* Revert error on different image shapes from ``RavelNormalize``; it is required!

2.2.2 (2022-03-15)
------------------

* Remove plural from ``Modality`` and ``TissueType`` enumerations.
* Update tutorials to use the ``Modality`` and ``TissueType`` enumerations.
* Remove error on different image shapes from ``RavelNormalize`` when registration enabled.

2.2.1 (2022-03-14)
------------------

* Update documentation to support modifications to Python API
* Update dependencies
* Remove incorrect warning from WhiteStripe normalization

2.2.0 (2022-02-25)
------------------

* Change backend to ``pymedio`` to support more medical image formats

2.1.4 (2022-01-17)
------------------

* Fix testing bugs in 2.1.3 and cleanup some interfaces

2.1.3 (2022-01-17)
------------------

* Cleanup Makefile and dependencies
* Add py.typed file

2.1.2 (2022-01-03)
------------------

* Updates for security

2.1.1 (2021-10-20)
------------------

* Fix warning about negative values when not passing in a mask
* Remove redundant word from Nyul normalize keyword arguments

2.1.0 (2021-10-13)
------------------

* Restructure CLIs for faster startup and improve handling of missing antspy
* add option to CLIs to print version

2.0.3 (2021-10-11)
------------------

* Improve Nyul docs and argument/keyword names

2.0.2 (2021-09-27)
------------------

* Fix and improve documentation
* Add an escape-hatch "other" modality
* Add peak types as modalities in KDE & WS

2.0.1 (2021-08-31)
------------------

* Save and load fit artifacts for LSQ and Nyul for both the CLIs and Python API

2.0.0 (2021-08-22)
------------------

* Major refactor to reduce redundancy, make code more usable outside of the CLIs, and generally improve code quality.

1.4.0 (2021-03-16)
------------------

* First release on PyPI.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jcreinhold/intensity-normalization",
    "name": "intensity-normalization",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "intensity,normalization,mri",
    "author": "Jacob Reinhold",
    "author_email": "jcreinhold@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/59/d0/0c029ff847eeb374a743d543020ee39dcee8e821ebd002b4fb3a876d3950/intensity_normalization-2.2.4.tar.gz",
    "platform": null,
    "description": "=======================\nintensity-normalization\n=======================\n\n.. image:: https://img.shields.io/pypi/v/intensity-normalization.svg\n        :target: https://pypi.python.org/pypi/intensity-normalization\n\n.. image:: https://img.shields.io/conda/vn/conda-forge/intensity-normalization\n        :target: https://anaconda.org/conda-forge/intensity-normalization\n\n.. image:: https://readthedocs.org/projects/intensity-normalization/badge/?version=latest\n        :target: http://intensity-normalization.readthedocs.io/en/latest/\n\n.. image:: https://img.shields.io/pypi/pyversions/intensity-normalization\n        :target: https://www.python.org/\n\nThis package contains various methods to normalize the intensity of various modalities of magnetic resonance (MR)\nimages, e.g., T1-weighted (T1-w), T2-weighted (T2-w), FLuid-Attenuated Inversion Recovery (FLAIR), and Proton\nDensity-weighted (PD-w).\n\nThe basic functionality of this package can be summarized in the following image:\n\n.. image:: _static/imgs/intnorm_illustration.png\n\nwhere the left-hand side are the histograms of the intensities for a set of *unnormalized* images (from the same scanner\nwith the same protocol!) and the right-hand side are the histograms after (FCM) normalization.\n\nWe used this package to explore the impact of intensity normalization on a synthesis task (**pre-print**\navailable `here <https://arxiv.org/abs/1812.04652>`_).\n\n*Note that while this release was carefully inspected, there may be bugs. Please submit an issue if you encounter a\nproblem.*\n\nMethods\n-------\n\nWe implement the following normalization methods (the names of the corresponding command-line interfaces are to the\nright in parentheses):\n\nIndividual time-point normalization methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Z-score normalization (``zscore-normalize``)\n- Fuzzy C-means (FCM)-based tissue-based mean normalization (``fcm-normalize``)\n- Kernel Density Estimate (KDE) WM mode normalization (``kde-normalize``)\n- WhiteStripe [1]_ (``ws-normalize``)\n\nSample-based normalization methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Least squares (LSQ) tissue mean normalization (``lsq-normalize``)\n- Piecewise Linear Histogram Matching (Ny\u00fal & Udupa) [2]_ [3]_ (``nyul-normalize``)\n- RAVEL [4]_ (``ravel-normalize``)\n\n**Individual image-based** methods normalize images based on one time-point of one subject.\n\n**Sample-based** methods normalize images based on a *set* of images of (usually) multiple subjects of the same\nmodality.\n\n**Recommendation on where to start**: If you are unsure which one to choose for your application, try FCM-based WM-based\nnormalization (assuming you have access to a T1-w image for all the time-points). If you are getting odd results in\nnon-WM tissues, try least squares tissue normalization (which minimizes the least squares distance between CSF, GM, and\nWM tissue means within a set).\n\n`Read about the methods and how they work <https://intensity-normalization.readthedocs.io/en/latest/algorithm.html>`_.\nIf you have a non-standard modality, e.g., a contrast-enhanced image, read about how the methods work and\ndetermine which method would work for your use case. Make sure you plot the foreground intensities (with\nthe ``-p`` option in the CLI or the ``HistogramPlotter`` in the Python API) to validate the normalization results.\n\n*All algorithms except Z-score* (``zscore-normalize``) *and the Piecewise Linear Histogram Matching*\n(``nyul-normalize``) *are specific to images of the brain.*\n\nMotivation\n----------\n\nIntensity normalization is an important pre-processing step in many image processing applications regarding MR images\nsince MR images have an inconsistent intensity scale across (and within) sites and scanners due to, e.g.,:\n\n1) the use of different equipment,\n2) different pulse sequences and scan parameters,\n3) and a different environment in which the machine is located.\n\nImportantly, the inconsistency in intensities *isn't a feature* of the data (unless you want to classify the\nscanner/site from which an image came)\u2014it's an artifact of the acquisition process. The inconsistency causes a problem\nwith machine learning-based image processing methods, which usually assume the data was gathered iid from some\ndistribution.\n\nInstall\n-------\n\nThe easiest way to install the package is through the following command::\n\n    pip install intensity-normalization\n\nTo install from the source directory, clone the repo and run::\n\n    python setup.py install\n\nNote the package `antspy <https://github.com/ANTsX/ANTsPy>`_ is required for the RAVEL normalization routine, the\npreprocessing tool as well as the co-registration tool, but all other normalization and processing tools work without\nit. To install the antspy package along with the RAVEL, preprocessing, and co-registration CLI, install with::\n\n    pip install \"intensity-normalization[ants]\"\n\nBasic Usage\n-----------\n\nSee the `5 minute overview <https://github.com/jcreinhold/intensity-normalization/blob/master/tutorials/5min_tutorial.rst>`_\nfor a more detailed tutorial.\n\nIn addition to the above small tutorial, here is consolidated\n`documentation <https://intensity-normalization.readthedocs.io/en/latest/>`_.\n\nCall any executable script with the ``-h`` flag to see more detailed instructions about the proper call.\n\nNote that **brain masks** (or already skull-stripped images) are required for most of the normalization methods. The\nbrain masks do not need to be perfect, but each mask needs to remove most of the tissue outside the brain. Assuming you\nhave T1-w images for each subject, an easy and robust method for skull-stripping\nis `ROBEX <https://www.nitrc.org/projects/robex>`_ [5]_.\n\nIf the images are already skull-stripped, you don't need to provide a brain mask. The foreground will be\nautomatically estimated and used.\n\nYou can install ROBEX\u2014and get python bindings for it at the same time\u2013with the\npackage `pyrobex <https://github.com/jcreinhold/pyrobex>`_ (installable via ``pip install pyrobex``).\n\nIndividual time-point normalization methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nExample call to a individual time-point normalization CLI::\n\n    fcm-normalize t1w_image.nii -m brain_mask.nii\n\nSample-based normalization methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nExample call to a sample-based normalization CLI::\n\n    nyul-normalize images/ -m masks/ -o nyul_normalized/ -v\n\nwhere ``images/`` is a directory full of N MR images and ``masks/`` is a directory full of N corresponding brain masks,\n``nyul_normalized`` is the output directory for the normalized images, and ``-v`` controls the verbosity of the output.\n\nThe command line interface is standard across all sampled-based normalization routines (i.e., you should be able to run\nall sample-based normalization routines with the same call as in the above example); however, each has unique\nmethod-specific options.\n\nPotential Pitfalls\n------------------\n\n1) This package was developed to process **adult human** MR images; neonatal, pediatric, and animal MR images *should*\n   also work but\u2014if the data has different proportions of tissues or differences in relative intensity among tissue\n   types compared with adults\u2014the normalization may fail. The ``nyul-normalize`` method, in particular, will fail hard if\n   you train it on adult data and test it on non-adult data (or vice versa). Please open an issue if you encounter a\n   problem with the package when normalizing non-adult human data.\n\n2) When we refer to any specific modality, it is referring to a **non-contrast** version unless otherwise stated. Using\n   a contrast image as input to a method that assumes non-contrast will produce suboptimal results. One potential way to\n   normalize contrast images with this package is to 1) find a tissue that is not affected by the contrast (e.g., grey\n   matter) and normalize based on some summary statistic of that (where the tissue mask was found on a non-contrast\n   image); 2) use a simplistic (but non-robust) method like Z-score normalization.\n\n   `Read about the methods <https://intensity-normalization.readthedocs.io/en/latest/algorithm.html>`_ and how they work\n   to decide which method would work best for your contrast-enhanced images.\n\nContributing\n------------\n\n**Help wanted!** See `CONTRIBUTING.rst <https://github.com/jcreinhold/intensity-normalization/blob/master/CONTRIBUTING.rst>`_\nfor details and/or reach out to me if you'd like to contribute. Credit will be given!\nIf you want to add a method, I'll be happy to add your reference to the citation\nsection below.\n\nTest Package\n------------\n\nUnit tests can be run from the main directory as follows::\n\n    pytest tests\n\nCitation\n--------\n\nIf you use the ``intensity-normalization`` package in an academic paper, please cite the\ncorresponding `paper <https://arxiv.org/abs/1812.04652>`_::\n\n    @inproceedings{reinhold2019evaluating,\n      title={Evaluating the impact of intensity normalization on {MR} image synthesis},\n      author={Reinhold, Jacob C and Dewey, Blake E and Carass, Aaron and Prince, Jerry L},\n      booktitle={Medical Imaging 2019: Image Processing},\n      volume={10949},\n      pages={109493H},\n      year={2019},\n      organization={International Society for Optics and Photonics}}\n\nReferences\n----------\n\n.. [1] R. T. Shinohara, E. M. Sweeney, J. Goldsmith, N. Shiee, F. J. Mateen, P. A. Calabresi, S. Jarso, D. L. Pham, D. S.\n       Reich, and C. M. Crainiceanu, \u201cStatistical normalization techniques for magnetic resonance imaging,\u201d NeuroImage Clin.,\n       vol. 6, pp. 9\u201319, 2014.\n\n.. [2] N. Laszlo G and J. K. Udupa, \u201cOn Standardizing the MR Image Intensity Scale,\u201d Magn. Reson. Med., vol. 42, pp.\n       1072\u20131081, 1999.\n\n.. [3] M. Shah, Y. Xiao, N. Subbanna, S. Francis, D. L. Arnold, D. L. Collins, and T. Arbel, \u201cEvaluating intensity\n       normalization on MRIs of human brain with multiple sclerosis,\u201d Med. Image Anal., vol. 15, no. 2, pp. 267\u2013282, 2011.\n\n.. [4] J. P. Fortin, E. M. Sweeney, J. Muschelli, C. M. Crainiceanu, and R. T. Shinohara, \u201cRemoving inter-subject technical\n       variability in magnetic resonance imaging studies,\u201d NeuroImage, vol. 132, pp. 198\u2013212, 2016.\n\n.. [5] Iglesias, Juan Eugenio, Cheng-Yi Liu, Paul M. Thompson, and Zhuowen Tu. \"Robust brain extraction across datasets and\n       comparison with publicly available methods.\" IEEE transactions on medical imaging 30, no. 9 (2011): 1617-1634.\n\n=======\nHistory\n=======\n\n2.2.4 (2023-05-31)\n------------------\n\n* Update to allow Python >=3.9\n\n2.2.3 (2022-03-15)\n------------------\n\n* Revert error on different image shapes from ``RavelNormalize``; it is required!\n\n2.2.2 (2022-03-15)\n------------------\n\n* Remove plural from ``Modality`` and ``TissueType`` enumerations.\n* Update tutorials to use the ``Modality`` and ``TissueType`` enumerations.\n* Remove error on different image shapes from ``RavelNormalize`` when registration enabled.\n\n2.2.1 (2022-03-14)\n------------------\n\n* Update documentation to support modifications to Python API\n* Update dependencies\n* Remove incorrect warning from WhiteStripe normalization\n\n2.2.0 (2022-02-25)\n------------------\n\n* Change backend to ``pymedio`` to support more medical image formats\n\n2.1.4 (2022-01-17)\n------------------\n\n* Fix testing bugs in 2.1.3 and cleanup some interfaces\n\n2.1.3 (2022-01-17)\n------------------\n\n* Cleanup Makefile and dependencies\n* Add py.typed file\n\n2.1.2 (2022-01-03)\n------------------\n\n* Updates for security\n\n2.1.1 (2021-10-20)\n------------------\n\n* Fix warning about negative values when not passing in a mask\n* Remove redundant word from Nyul normalize keyword arguments\n\n2.1.0 (2021-10-13)\n------------------\n\n* Restructure CLIs for faster startup and improve handling of missing antspy\n* add option to CLIs to print version\n\n2.0.3 (2021-10-11)\n------------------\n\n* Improve Nyul docs and argument/keyword names\n\n2.0.2 (2021-09-27)\n------------------\n\n* Fix and improve documentation\n* Add an escape-hatch \"other\" modality\n* Add peak types as modalities in KDE & WS\n\n2.0.1 (2021-08-31)\n------------------\n\n* Save and load fit artifacts for LSQ and Nyul for both the CLIs and Python API\n\n2.0.0 (2021-08-22)\n------------------\n\n* Major refactor to reduce redundancy, make code more usable outside of the CLIs, and generally improve code quality.\n\n1.4.0 (2021-03-16)\n------------------\n\n* First release on PyPI.\n",
    "bugtrack_url": null,
    "license": "Apache Software License 2.0",
    "summary": "normalize the intensities of various MR image modalities",
    "version": "2.2.4",
    "project_urls": {
        "Bug Tracker": "https://github.com/jcreinhold/intensity-normalization/issues",
        "Documentation": "https://intensity-normalization.readthedocs.io/",
        "Homepage": "https://github.com/jcreinhold/intensity-normalization"
    },
    "split_keywords": [
        "intensity",
        "normalization",
        "mri"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e0e4e831d4c88f3f93df27eb11f49f149f38bcee4e1cb895a8e632e14d4830ed",
                "md5": "aada59aa56a6261d000425c59ce83f16",
                "sha256": "55601dd0a9670238da965961c82c4d15a822119ed145090ddfad949341b81364"
            },
            "downloads": -1,
            "filename": "intensity_normalization-2.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aada59aa56a6261d000425c59ce83f16",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 50849,
            "upload_time": "2023-05-31T21:10:47",
            "upload_time_iso_8601": "2023-05-31T21:10:47.955304Z",
            "url": "https://files.pythonhosted.org/packages/e0/e4/e831d4c88f3f93df27eb11f49f149f38bcee4e1cb895a8e632e14d4830ed/intensity_normalization-2.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "59d00c029ff847eeb374a743d543020ee39dcee8e821ebd002b4fb3a876d3950",
                "md5": "a3f0c03cb6626ece877e93f0d0beaa46",
                "sha256": "b3fb6b0c8468a8b163dcd3be8afdc4f80101e20ac10070e510bebe4c276c8268"
            },
            "downloads": -1,
            "filename": "intensity_normalization-2.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "a3f0c03cb6626ece877e93f0d0beaa46",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 445953,
            "upload_time": "2023-05-31T21:10:49",
            "upload_time_iso_8601": "2023-05-31T21:10:49.861534Z",
            "url": "https://files.pythonhosted.org/packages/59/d0/0c029ff847eeb374a743d543020ee39dcee8e821ebd002b4fb3a876d3950/intensity_normalization-2.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-31 21:10:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jcreinhold",
    "github_project": "intensity-normalization",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "intensity-normalization"
}
        
Elapsed time: 0.10527s