# -*- coding: utf-8 -*-
from __future__ import absolute_import
from colour.utilities import CaseInsensitiveMapping, filter_kwargs
from .cie_d import xy_to_CCT_CIE_D, CCT_to_xy_CIE_D
from .hernandez1999 import xy_to_CCT_Hernandez1999, CCT_to_xy_Hernandez1999
from .kang2002 import xy_to_CCT_Kang2002, CCT_to_xy_Kang2002
from .krystek1985 import uv_to_CCT_Krystek1985, CCT_to_uv_Krystek1985
from .mccamy1992 import xy_to_CCT_McCamy1992, CCT_to_xy_McCamy1992
from .ohno2013 import uv_to_CCT_Ohno2013, CCT_to_uv_Ohno2013
from .robertson1968 import uv_to_CCT_Robertson1968, CCT_to_uv_Robertson1968
__all__ = ['xy_to_CCT_CIE_D', 'CCT_to_xy_CIE_D']
__all__ += ['xy_to_CCT_Hernandez1999', 'CCT_to_xy_Hernandez1999']
__all__ += ['xy_to_CCT_Kang2002', 'CCT_to_xy_Kang2002']
__all__ += ['uv_to_CCT_Krystek1985', 'CCT_to_uv_Krystek1985']
__all__ += ['xy_to_CCT_McCamy1992', 'CCT_to_xy_McCamy1992']
__all__ += ['uv_to_CCT_Ohno2013', 'CCT_to_uv_Ohno2013']
__all__ += ['uv_to_CCT_Robertson1968', 'CCT_to_uv_Robertson1968']
UV_TO_CCT_METHODS = CaseInsensitiveMapping({
'Krystek 1985': uv_to_CCT_Krystek1985,
'Ohno 2013': uv_to_CCT_Ohno2013,
'Robertson 1968': uv_to_CCT_Robertson1968
})
UV_TO_CCT_METHODS.__doc__ = """
Supported *CIE UCS* colourspace *uv* chromaticity coordinates to correlated
colour temperature :math:`T_{cp}` computation methods.
References
----------
:cite:`AdobeSystems2013`, :cite:`AdobeSystems2013a`, :cite:`Ohno2014a`,
:cite:`Wyszecki2000y`
UV_TO_CCT_METHODS : CaseInsensitiveMapping
**{'Ohno 2013', 'Krystek 1985, 'Robertson 1968'}**
Aliases:
- 'ohno2013': 'Ohno 2013'
- 'robertson1968': 'Robertson 1968'
"""
UV_TO_CCT_METHODS['ohno2013'] = UV_TO_CCT_METHODS['Ohno 2013']
UV_TO_CCT_METHODS['robertson1968'] = UV_TO_CCT_METHODS['Robertson 1968']
[docs]def uv_to_CCT(uv, method='Ohno 2013', **kwargs):
"""
Returns the correlated colour temperature :math:`T_{cp}` and
:math:`\\Delta_{uv}` from given *CIE UCS* colourspace *uv* chromaticity
coordinates using given method.
Parameters
----------
uv : array_like
*CIE UCS* colourspace *uv* chromaticity coordinates.
method : unicode, optional
**{'Ohno 2013', 'Krystek 1985, 'Robertson 1968'}**,
Computation method.
Other Parameters
----------------
cmfs : XYZ_ColourMatchingFunctions, optional
{:func:`colour.temperature.uv_to_CCT_Ohno2013`},
Standard observer colour matching functions.
start : numeric, optional
{:func:`colour.temperature.uv_to_CCT_Ohno2013`},
Temperature range start in kelvins.
end : numeric, optional
{:func:`colour.temperature.uv_to_CCT_Ohno2013`},
Temperature range end in kelvins.
count : int, optional
{:func:`colour.temperature.uv_to_CCT_Ohno2013`},
Temperatures count in the planckian tables.
iterations : int, optional
{:func:`colour.temperature.uv_to_CCT_Ohno2013`},
Number of planckian tables to generate.
optimisation_parameters : dict_like, optional
{:func:`colour.temperature.uv_to_CCT_Krystek1985`},
Parameters for :func:`scipy.optimize.minimize` definition.
Returns
-------
ndarray
Correlated colour temperature :math:`T_{cp}`, :math:`\\Delta_{uv}`.
References
----------
:cite:`AdobeSystems2013`, :cite:`AdobeSystems2013a`, :cite:`Krystek1985b`,
:cite:`Ohno2014a`, :cite:`Wyszecki2000y`
Examples
--------
>>> import numpy as np
>>> uv = np.array([0.1978, 0.3122])
>>> uv_to_CCT(uv) # doctest: +ELLIPSIS
array([ 6.5074738...e+03, 3.2233461...e-03])
"""
function = UV_TO_CCT_METHODS[method]
return function(uv, **filter_kwargs(function, **kwargs))
CCT_TO_UV_METHODS = CaseInsensitiveMapping({
'Krystek 1985': CCT_to_uv_Krystek1985,
'Ohno 2013': CCT_to_uv_Ohno2013,
'Robertson 1968': CCT_to_uv_Robertson1968
})
CCT_TO_UV_METHODS.__doc__ = """
Supported correlated colour temperature :math:`T_{cp}` to *CIE UCS* colourspace
*uv* chromaticity coordinates computation methods.
References
----------
:cite:`AdobeSystems2013`, :cite:`AdobeSystems2013a`, :cite:`Krystek1985b`,
:cite:`Ohno2014a`, :cite:`Wyszecki2000y`
CCT_TO_UV_METHODS : CaseInsensitiveMapping
**{'Ohno 2013', 'Krystek 1985, 'Robertson 1968'}**
Aliases:
- 'ohno2013': 'Ohno 2013'
- 'robertson1968': 'Robertson 1968'
"""
CCT_TO_UV_METHODS['ohno2013'] = CCT_TO_UV_METHODS['Ohno 2013']
CCT_TO_UV_METHODS['robertson1968'] = CCT_TO_UV_METHODS['Robertson 1968']
[docs]def CCT_to_uv(CCT_D_uv, method='Ohno 2013', **kwargs):
"""
Returns the *CIE UCS* colourspace *uv* chromaticity coordinates from given
correlated colour temperature :math:`T_{cp}` using given method.
Parameters
----------
CCT_D_uv : ndarray
Correlated colour temperature :math:`T_{cp}`, :math:`\\Delta_{uv}`.
method : unicode, optional
**{'Ohno 2013', 'Robertson 1968', 'Krystek 1985}**,
Computation method.
Other Parameters
----------------
cmfs : XYZ_ColourMatchingFunctions, optional
{:func:`colour.temperature.CCT_to_uv_Ohno2013`},
Standard observer colour matching functions.
Returns
-------
ndarray
*CIE UCS* colourspace *uv* chromaticity coordinates.
References
----------
:cite:`AdobeSystems2013`, :cite:`AdobeSystems2013a`, :cite:`Krystek1985b`,
:cite:`Ohno2014a`, :cite:`Wyszecki2000y`
Examples
--------
>>> import numpy as np
>>> CCT_D_uv = np.array([6507.47380460, 0.00322335])
>>> CCT_to_uv(CCT_D_uv) # doctest: +ELLIPSIS
array([ 0.1977999..., 0.3121999...])
"""
function = CCT_TO_UV_METHODS[method]
return function(CCT_D_uv, **filter_kwargs(function, **kwargs))
__all__ += ['UV_TO_CCT_METHODS', 'uv_to_CCT']
__all__ += ['CCT_TO_UV_METHODS', 'CCT_to_uv']
XY_TO_CCT_METHODS = CaseInsensitiveMapping({
'CIE Illuminant D Series': xy_to_CCT_CIE_D,
'Hernandez 1999': xy_to_CCT_Hernandez1999,
'Kang 2002': xy_to_CCT_Kang2002,
'McCamy 1992': xy_to_CCT_McCamy1992,
})
XY_TO_CCT_METHODS.__doc__ = """
Supported *CIE xy* chromaticity coordinates to correlated colour temperature
:math:`T_{cp}` computation methods.
References
----------
:cite:`Hernandez-Andres1999a`, :cite:`Kang2002a`, :cite:`Wikipedia2001`,
:cite:`Wikipedia2001a`,
:cite:`Wyszecki2000z`
XY_TO_CCT_METHODS : CaseInsensitiveMapping
**{'McCamy 1992', 'CIE Illuminant D Series, 'Kang 2002',
'Hernandez 1999'}**
Aliases:
- 'daylight': 'CIE Illuminant D Series'
- 'kang2002': 'Kang 2002'
- 'mccamy1992': 'McCamy 1992'
- 'hernandez1999': 'Hernandez 1999'
"""
XY_TO_CCT_METHODS['daylight'] = XY_TO_CCT_METHODS['CIE Illuminant D Series']
XY_TO_CCT_METHODS['kang2002'] = XY_TO_CCT_METHODS['Kang 2002']
XY_TO_CCT_METHODS['mccamy1992'] = XY_TO_CCT_METHODS['McCamy 1992']
XY_TO_CCT_METHODS['hernandez1999'] = XY_TO_CCT_METHODS['Hernandez 1999']
[docs]def xy_to_CCT(xy, method='CIE Illuminant D Series'):
"""
Returns the correlated colour temperature :math:`T_{cp}` from given
*CIE xy* chromaticity coordinates using given method.
Parameters
----------
xy : array_like
*CIE xy* chromaticity coordinates.
method : unicode, optional
**{'CIE Illuminant D Series', 'Kang 2002', 'Hernandez 1999',
'McCamy 1992'}**,
Computation method.
Other Parameters
----------------
optimisation_parameters : dict_like, optional
{:func:`colour.temperature.xy_to_CCT_CIE_D`,
:func:`colour.temperature.xy_to_CCT_Kang2002`},
Parameters for :func:`scipy.optimize.minimize` definition.
Returns
-------
numeric or ndarray
Correlated colour temperature :math:`T_{cp}`.
References
----------
:cite:`Hernandez-Andres1999a`, :cite:`Kang2002a`, :cite:`Wikipedia2001`,
:cite:`Wikipedia2001a`, :cite:`Wyszecki2000z`
Examples
--------
>>> import numpy as np
>>> xy_to_CCT(np.array([0.31270, 0.32900])) # doctest: +ELLIPSIS
6508.1175148...
>>> xy_to_CCT(np.array([0.31270, 0.32900]), 'Hernandez 1999')
... # doctest: +ELLIPSIS
6500.7420431...
"""
return XY_TO_CCT_METHODS.get(method)(xy)
CCT_TO_XY_METHODS = CaseInsensitiveMapping({
'CIE Illuminant D Series': CCT_to_xy_CIE_D,
'Hernandez 1999': CCT_to_xy_Hernandez1999,
'Kang 2002': CCT_to_xy_Kang2002,
'McCamy 1992': CCT_to_xy_McCamy1992,
})
CCT_TO_XY_METHODS.__doc__ = """
Supported correlated colour temperature :math:`T_{cp}` to *CIE xy* chromaticity
coordinates computation methods.
References
----------
:cite:`Hernandez-Andres1999a`, :cite:`Kang2002a`, :cite:`Wikipedia2001`,
:cite:`Wikipedia2001a`, :cite:`Wyszecki2000z`
CCT_TO_XY_METHODS : CaseInsensitiveMapping
**{'Kang 2002', 'CIE Illuminant D Series', 'Hernandez 1999',
'McCamy 1992'}**
Aliases:
- 'daylight': 'CIE Illuminant D Series'
- 'kang2002': 'Kang 2002'
- 'mccamy1992': 'McCamy 1992'
- 'hernandez1999': 'Hernandez 1999'
"""
CCT_TO_XY_METHODS['daylight'] = CCT_TO_XY_METHODS['CIE Illuminant D Series']
CCT_TO_XY_METHODS['kang2002'] = CCT_TO_XY_METHODS['Kang 2002']
CCT_TO_XY_METHODS['mccamy1992'] = CCT_TO_XY_METHODS['McCamy 1992']
CCT_TO_XY_METHODS['hernandez1999'] = CCT_TO_XY_METHODS['Hernandez 1999']
[docs]def CCT_to_xy(CCT, method='CIE Illuminant D Series'):
"""
Returns the *CIE xy* chromaticity coordinates from given correlated colour
temperature :math:`T_{cp}` using given method.
Parameters
----------
CCT : numeric or array_like
Correlated colour temperature :math:`T_{cp}`.
method : unicode, optional
**{'CIE Illuminant D Series', 'Hernandez 1999', 'Kang 2002',
'McCamy 1992'}**,
Computation method.
Other Parameters
----------------
optimisation_parameters : dict_like, optional
{:func:`colour.temperature.CCT_to_xy_Hernandez1999`,
:func:`colour.temperature.CCT_to_xy_McCamy1992`},
Parameters for :func:`scipy.optimize.minimize` definition.
Returns
-------
ndarray
*CIE xy* chromaticity coordinates.
References
----------
:cite:`Hernandez-Andres1999a`, :cite:`Kang2002a`, :cite:`Wikipedia2001`,
:cite:`Wikipedia2001a`, :cite:`Wyszecki2000z`
Examples
--------
>>> CCT_to_xy(6504.38938305) # doctest: +ELLIPSIS
array([ 0.3127077..., 0.3291128...])
>>> CCT_to_xy(6504.38938305, 'Kang 2002')
... # doctest: +ELLIPSIS
array([ 0.313426 ..., 0.3235959...])
"""
return CCT_TO_XY_METHODS.get(method)(CCT)
__all__ += ['XY_TO_CCT_METHODS', 'xy_to_CCT']
__all__ += ['CCT_TO_XY_METHODS', 'CCT_to_xy']