colour.MultiSpectralDistributions

class colour.MultiSpectralDistributions(data=None, domain=None, labels=None, **kwargs)[source]

Bases: colour.continuous.multi_signals.MultiSignals

Defines the multi-spectral distributions: the base object for multi spectral computations. It is used to model colour matching functions, display primaries, camera sensitivities, etc…

The multi-spectral distributions will be initialised according to CIE 15:2004 recommendation: the method developed by Sprague (1880) will be used for interpolating functions having a uniformly spaced independent variable and the Cubic Spline method for non-uniformly spaced independent variable. Extrapolation is performed according to CIE 167:2005 recommendation.

Parameters
  • data (Series or Dataframe or Signal or MultiSignals or MultiSpectralDistributions or array_like or dict_like, optional) – Data to be stored in the multi-spectral distributions.

  • domain (array_like, optional) – Values to initialise the multiple colour.SpectralDistribution class instances colour.continuous.Signal.wavelengths attribute with. If both data and domain arguments are defined, the latter will be used to initialise the colour.continuous.Signal.wavelengths attribute.

  • labels (array_like, optional) – Names to use for the colour.SpectralDistribution class instances.

Other Parameters
  • name (unicode, optional) – Multi-spectral distributions name.

  • interpolator (object, optional) – Interpolator class type to use as interpolating function for the colour.SpectralDistribution class instances.

  • interpolator_kwargs (dict_like, optional) – Arguments to use when instantiating the interpolating function of the colour.SpectralDistribution class instances.

  • extrapolator (object, optional) – Extrapolator class type to use as extrapolating function for the colour.SpectralDistribution class instances.

  • extrapolator_kwargs (dict_like, optional) – Arguments to use when instantiating the extrapolating function of the colour.SpectralDistribution class instances.

  • strict_labels (array_like, optional) – Multi-spectral distributions labels for figures, default to colour.MultiSpectralDistributions.labels attribute value.

strict_name
strict_labels
wavelengths
values
shape
interpolate()[source]
extrapolate()[source]
align()[source]
trim()[source]
normalise()[source]
to_sds()[source]

References

[CIET13805a], [CIET13805c], [CIET14804h]

Examples

Instantiating the multi-spectral distributions with a uniformly spaced independent variable:

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> labels = ('x_bar', 'y_bar', 'z_bar')
>>> with numpy_print_options(suppress=True):
...     MultiSpectralDistributions(data, labels=labels)
... 
MultiSpectral...([[ 500.     ,    0.0049 ,    0.323  ,    0.272  ],
             ...  [ 510.     ,    0.0093 ,    0.503  ,    0.1582 ],
             ...  [ 520.     ,    0.06327,    0.71   ,    0.07825],
             ...  [ 530.     ,    0.1655 ,    0.862  ,    0.04216],
             ...  [ 540.     ,    0.2904 ,    0.954  ,    0.0203 ],
             ...  [ 550.     ,    0.43345,    0.99495,    0.00875],
             ...  [ 560.     ,    0.5945 ,    0.995  ,    0.0039 ]],
             ... labels=[...'x_bar', ...'y_bar', ...'z_bar'],
             ... interpolator=SpragueInterpolator,
             ... interpolator_kwargs={},
             ... extrapolator=Extrapolator,
             ... extrapolator_kwargs={...})

Instantiating a spectral distribution with a non-uniformly spaced independent variable:

>>> data[511] = (0.00314, 0.31416, 0.03142)
>>> with numpy_print_options(suppress=True):
...     MultiSpectralDistributions(data, labels=labels)
... 
MultiSpectral...([[ 500.     ,    0.0049 ,    0.323  ,    0.272  ],
             ...  [ 510.     ,    0.0093 ,    0.503  ,    0.1582 ],
             ...  [ 511.     ,    0.00314,    0.31416,    0.03142],
             ...  [ 520.     ,    0.06327,    0.71   ,    0.07825],
             ...  [ 530.     ,    0.1655 ,    0.862  ,    0.04216],
             ...  [ 540.     ,    0.2904 ,    0.954  ,    0.0203 ],
             ...  [ 550.     ,    0.43345,    0.99495,    0.00875],
             ...  [ 560.     ,    0.5945 ,    0.995  ,    0.0039 ]],
             ... labels=[...'x_bar', ...'y_bar', ...'z_bar'],
             ... interpolator=CubicSplineInterpolator,
             ... interpolator_kwargs={},
             ... extrapolator=Extrapolator,
             ... extrapolator_kwargs={...})
align(shape, interpolator=None, interpolator_kwargs=None, extrapolator=None, extrapolator_kwargs=None, **kwargs)[source]

Aligns the multi-spectral distributions in-place to given spectral shape: Interpolates first then extrapolates to fit the given range.

Parameters
  • shape (SpectralShape) – Spectral shape used for alignment.

  • interpolator (object, optional) – Interpolator class type to use as interpolating function.

  • interpolator_kwargs (dict_like, optional) – Arguments to use when instantiating the interpolating function.

  • extrapolator (object, optional) – Extrapolator class type to use as extrapolating function.

  • extrapolator_kwargs (dict_like, optional) – Arguments to use when instantiating the extrapolating function.

Other Parameters

**kwargs (dict, optional) – Keywords arguments for deprecation management.

Returns

Aligned multi-spectral distributions.

Return type

MultiSpectralDistributions

Examples

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> msds = MultiSpectralDistributions(data)
>>> with numpy_print_options(suppress=True):
...     print(msds.align(SpectralShape(505, 565, 1)))
... 
[[ 505.            0.0031582...    0.4091067...    0.2126801...]
 [ 506.            0.0035019...    0.4268629...    0.2012748...]
 [ 507.            0.0042365...    0.4450668...    0.1900968...]
 [ 508.            0.0054192...    0.4638181...    0.1791709...]
 [ 509.            0.0070965...    0.4831505...    0.1685260...]
 [ 510.            0.0093   ...    0.503    ...    0.1582   ...]
 [ 511.            0.0120562...    0.5232543...    0.1482365...]
 [ 512.            0.0154137...    0.5439717...    0.1386625...]
 [ 513.            0.0193991...    0.565139 ...    0.1294993...]
 [ 514.            0.0240112...    0.5866255...    0.1207676...]
 [ 515.            0.0292289...    0.6082226...    0.1124864...]
 [ 516.            0.0350192...    0.6296821...    0.1046717...]
 [ 517.            0.0413448...    0.6507558...    0.0973361...]
 [ 518.            0.0481727...    0.6712346...    0.0904871...]
 [ 519.            0.0554816...    0.6909873...    0.0841267...]
 [ 520.            0.06327  ...    0.71     ...    0.07825  ...]
 [ 521.            0.0715642...    0.7283456...    0.0728614...]
 [ 522.            0.0803970...    0.7459679...    0.0680051...]
 [ 523.            0.0897629...    0.7628184...    0.0636823...]
 [ 524.            0.0996227...    0.7789004...    0.0598449...]
 [ 525.            0.1099142...    0.7942533...    0.0564111...]
 [ 526.            0.1205637...    0.8089368...    0.0532822...]
 [ 527.            0.1314973...    0.8230153...    0.0503588...]
 [ 528.            0.1426523...    0.8365417...    0.0475571...]
 [ 529.            0.1539887...    0.8495422...    0.0448253...]
 [ 530.            0.1655   ...    0.862    ...    0.04216  ...]
 [ 531.            0.1772055...    0.8738585...    0.0395936...]
 [ 532.            0.1890877...    0.8850940...    0.0371046...]
 [ 533.            0.2011304...    0.8957073...    0.0346733...]
 [ 534.            0.2133310...    0.9057092...    0.0323006...]
 [ 535.            0.2256968...    0.9151181...    0.0300011...]
 [ 536.            0.2382403...    0.9239560...    0.0277974...]
 [ 537.            0.2509754...    0.9322459...    0.0257131...]
 [ 538.            0.2639130...    0.9400080...    0.0237668...]
 [ 539.            0.2770569...    0.9472574...    0.0219659...]
 [ 540.            0.2904   ...    0.954    ...    0.0203   ...]
 [ 541.            0.3039194...    0.9602409...    0.0187414...]
 [ 542.            0.3175893...    0.9660106...    0.0172748...]
 [ 543.            0.3314022...    0.9713260...    0.0158947...]
 [ 544.            0.3453666...    0.9761850...    0.0146001...]
 [ 545.            0.3595019...    0.9805731...    0.0133933...]
 [ 546.            0.3738324...    0.9844703...    0.0122777...]
 [ 547.            0.3883818...    0.9878583...    0.0112562...]
 [ 548.            0.4031674...    0.9907270...    0.0103302...]
 [ 549.            0.4181943...    0.9930817...    0.0094972...]
 [ 550.            0.43345  ...    0.99495  ...    0.00875  ...]
 [ 551.            0.4489082...    0.9963738...    0.0080748...]
 [ 552.            0.4645599...    0.9973682...    0.0074580...]
 [ 553.            0.4803950...    0.9979568...    0.0068902...]
 [ 554.            0.4963962...    0.9981802...    0.0063660...]
 [ 555.            0.5125410...    0.9980910...    0.0058818...]
 [ 556.            0.5288034...    0.9977488...    0.0054349...]
 [ 557.            0.5451560...    0.9972150...    0.0050216...]
 [ 558.            0.5615719...    0.9965479...    0.0046357...]
 [ 559.            0.5780267...    0.9957974...    0.0042671...]
 [ 560.            0.5945   ...    0.995    ...    0.0039   ...]
 [ 561.            0.5945   ...    0.995    ...    0.0039   ...]
 [ 562.            0.5945   ...    0.995    ...    0.0039   ...]
 [ 563.            0.5945   ...    0.995    ...    0.0039   ...]
 [ 564.            0.5945   ...    0.995    ...    0.0039   ...]
 [ 565.            0.5945   ...    0.995    ...    0.0039   ...]]
extrapolate(shape, extrapolator=None, extrapolator_kwargs=None, **kwargs)[source]

Extrapolates the multi-spectral distributions in-place according to CIE 15:2004 and CIE 167:2005 recommendations or given extrapolation arguments.

Parameters
  • shape (SpectralShape) – Spectral shape used for extrapolation.

  • extrapolator (object, optional) – Extrapolator class type to use as extrapolating function.

  • extrapolator_kwargs (dict_like, optional) – Arguments to use when instantiating the extrapolating function.

Other Parameters

**kwargs (dict, optional) – Keywords arguments for deprecation management.

Returns

Extrapolated multi-spectral distributions.

Return type

MultiSpectralDistributions

References

[CIET13805c], [CIET14804h]

Examples

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> msds = MultiSpectralDistributions(data)
>>> msds.extrapolate(SpectralShape(400, 700)).shape
SpectralShape(400.0, 700.0, 10.0)
>>> with numpy_print_options(suppress=True):
...     print(msds)
[[ 400.         0.0049     0.323      0.272  ]
 [ 410.         0.0049     0.323      0.272  ]
 [ 420.         0.0049     0.323      0.272  ]
 [ 430.         0.0049     0.323      0.272  ]
 [ 440.         0.0049     0.323      0.272  ]
 [ 450.         0.0049     0.323      0.272  ]
 [ 460.         0.0049     0.323      0.272  ]
 [ 470.         0.0049     0.323      0.272  ]
 [ 480.         0.0049     0.323      0.272  ]
 [ 490.         0.0049     0.323      0.272  ]
 [ 500.         0.0049     0.323      0.272  ]
 [ 510.         0.0093     0.503      0.1582 ]
 [ 520.         0.06327    0.71       0.07825]
 [ 530.         0.1655     0.862      0.04216]
 [ 540.         0.2904     0.954      0.0203 ]
 [ 550.         0.43345    0.99495    0.00875]
 [ 560.         0.5945     0.995      0.0039 ]
 [ 570.         0.5945     0.995      0.0039 ]
 [ 580.         0.5945     0.995      0.0039 ]
 [ 590.         0.5945     0.995      0.0039 ]
 [ 600.         0.5945     0.995      0.0039 ]
 [ 610.         0.5945     0.995      0.0039 ]
 [ 620.         0.5945     0.995      0.0039 ]
 [ 630.         0.5945     0.995      0.0039 ]
 [ 640.         0.5945     0.995      0.0039 ]
 [ 650.         0.5945     0.995      0.0039 ]
 [ 660.         0.5945     0.995      0.0039 ]
 [ 670.         0.5945     0.995      0.0039 ]
 [ 680.         0.5945     0.995      0.0039 ]
 [ 690.         0.5945     0.995      0.0039 ]
 [ 700.         0.5945     0.995      0.0039 ]]
interpolate(shape, interpolator=None, interpolator_kwargs=None, **kwargs)[source]

Interpolates the multi-spectral distributions in-place according to CIE 167:2005 recommendation or given interpolation arguments.

Parameters
  • shape (SpectralShape, optional) – Spectral shape used for interpolation.

  • interpolator (object, optional) – Interpolator class type to use as interpolating function.

  • interpolator_kwargs (dict_like, optional) – Arguments to use when instantiating the interpolating function.

Other Parameters

**kwargs (dict, optional) – Keywords arguments for deprecation management.

Returns

Interpolated multi-spectral distributions.

Return type

MultiSpectralDistributions

Notes

Warning

See colour.SpectralDistribution.interpolate() method warning section.

References

[CIET13805a]

Examples

Multi-spectral distributions with a uniformly spaced independent variable uses Sprague (1880) interpolation:

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> msds = MultiSpectralDistributions(data)
>>> with numpy_print_options(suppress=True):
...     print(msds.interpolate(SpectralShape(interval=1)))
... 
[[ 500.            0.0049   ...    0.323    ...    0.272    ...]
 [ 501.            0.0043252...    0.3400642...    0.2599848...]
 [ 502.            0.0037950...    0.3572165...    0.2479849...]
 [ 503.            0.0033761...    0.3744030...    0.2360688...]
 [ 504.            0.0031397...    0.3916650...    0.2242878...]
 [ 505.            0.0031582...    0.4091067...    0.2126801...]
 [ 506.            0.0035019...    0.4268629...    0.2012748...]
 [ 507.            0.0042365...    0.4450668...    0.1900968...]
 [ 508.            0.0054192...    0.4638181...    0.1791709...]
 [ 509.            0.0070965...    0.4831505...    0.1685260...]
 [ 510.            0.0093   ...    0.503    ...    0.1582   ...]
 [ 511.            0.0120562...    0.5232543...    0.1482365...]
 [ 512.            0.0154137...    0.5439717...    0.1386625...]
 [ 513.            0.0193991...    0.565139 ...    0.1294993...]
 [ 514.            0.0240112...    0.5866255...    0.1207676...]
 [ 515.            0.0292289...    0.6082226...    0.1124864...]
 [ 516.            0.0350192...    0.6296821...    0.1046717...]
 [ 517.            0.0413448...    0.6507558...    0.0973361...]
 [ 518.            0.0481727...    0.6712346...    0.0904871...]
 [ 519.            0.0554816...    0.6909873...    0.0841267...]
 [ 520.            0.06327  ...    0.71     ...    0.07825  ...]
 [ 521.            0.0715642...    0.7283456...    0.0728614...]
 [ 522.            0.0803970...    0.7459679...    0.0680051...]
 [ 523.            0.0897629...    0.7628184...    0.0636823...]
 [ 524.            0.0996227...    0.7789004...    0.0598449...]
 [ 525.            0.1099142...    0.7942533...    0.0564111...]
 [ 526.            0.1205637...    0.8089368...    0.0532822...]
 [ 527.            0.1314973...    0.8230153...    0.0503588...]
 [ 528.            0.1426523...    0.8365417...    0.0475571...]
 [ 529.            0.1539887...    0.8495422...    0.0448253...]
 [ 530.            0.1655   ...    0.862    ...    0.04216  ...]
 [ 531.            0.1772055...    0.8738585...    0.0395936...]
 [ 532.            0.1890877...    0.8850940...    0.0371046...]
 [ 533.            0.2011304...    0.8957073...    0.0346733...]
 [ 534.            0.2133310...    0.9057092...    0.0323006...]
 [ 535.            0.2256968...    0.9151181...    0.0300011...]
 [ 536.            0.2382403...    0.9239560...    0.0277974...]
 [ 537.            0.2509754...    0.9322459...    0.0257131...]
 [ 538.            0.2639130...    0.9400080...    0.0237668...]
 [ 539.            0.2770569...    0.9472574...    0.0219659...]
 [ 540.            0.2904   ...    0.954    ...    0.0203   ...]
 [ 541.            0.3039194...    0.9602409...    0.0187414...]
 [ 542.            0.3175893...    0.9660106...    0.0172748...]
 [ 543.            0.3314022...    0.9713260...    0.0158947...]
 [ 544.            0.3453666...    0.9761850...    0.0146001...]
 [ 545.            0.3595019...    0.9805731...    0.0133933...]
 [ 546.            0.3738324...    0.9844703...    0.0122777...]
 [ 547.            0.3883818...    0.9878583...    0.0112562...]
 [ 548.            0.4031674...    0.9907270...    0.0103302...]
 [ 549.            0.4181943...    0.9930817...    0.0094972...]
 [ 550.            0.43345  ...    0.99495  ...    0.00875  ...]
 [ 551.            0.4489082...    0.9963738...    0.0080748...]
 [ 552.            0.4645599...    0.9973682...    0.0074580...]
 [ 553.            0.4803950...    0.9979568...    0.0068902...]
 [ 554.            0.4963962...    0.9981802...    0.0063660...]
 [ 555.            0.5125410...    0.9980910...    0.0058818...]
 [ 556.            0.5288034...    0.9977488...    0.0054349...]
 [ 557.            0.5451560...    0.9972150...    0.0050216...]
 [ 558.            0.5615719...    0.9965479...    0.0046357...]
 [ 559.            0.5780267...    0.9957974...    0.0042671...]
 [ 560.            0.5945   ...    0.995    ...    0.0039   ...]]

Multi-spectral distributions with a non-uniformly spaced independent variable uses Cubic Spline interpolation:

>>> data[511] = (0.00314, 0.31416, 0.03142)
>>> msds = MultiSpectralDistributions(data)
>>> with numpy_print_options(suppress=True):
...     print(msds.interpolate(SpectralShape(interval=1)))
... 
[[ 500.            0.0049   ...    0.323    ...    0.272    ...]
 [ 501.            0.0300110...    0.9455153...    0.5985102...]
 [ 502.            0.0462136...    1.3563103...    0.8066498...]
 [ 503.            0.0547925...    1.5844039...    0.9126502...]
 [ 504.            0.0570325...    1.6588148...    0.9327429...]
 [ 505.            0.0542183...    1.6085619...    0.8831594...]
 [ 506.            0.0476346...    1.4626640...    0.7801312...]
 [ 507.            0.0385662...    1.2501401...    0.6398896...]
 [ 508.            0.0282978...    1.0000089...    0.4786663...]
 [ 509.            0.0181142...    0.7412892...    0.3126925...]
 [ 510.            0.0093   ...    0.503    ...    0.1582   ...]
 [ 511.            0.00314  ...    0.31416  ...    0.03142  ...]
 [ 512.            0.0006228...    0.1970419...   -0.0551709...]
 [ 513.            0.0015528...    0.1469341...   -0.1041165...]
 [ 514.            0.0054381...    0.1523785...   -0.1217152...]
 [ 515.            0.0117869...    0.2019173...   -0.1142659...]
 [ 516.            0.0201073...    0.2840925...   -0.0880670...]
 [ 517.            0.0299077...    0.3874463...   -0.0494174...]
 [ 518.            0.0406961...    0.5005208...   -0.0046156...]
 [ 519.            0.0519808...    0.6118579...    0.0400397...]
 [ 520.            0.06327  ...    0.71     ...    0.07825  ...]
 [ 521.            0.0741690...    0.7859059...    0.1050384...]
 [ 522.            0.0846726...    0.8402033...    0.1207164...]
 [ 523.            0.0948728...    0.8759363...    0.1269173...]
 [ 524.            0.1048614...    0.8961496...    0.1252743...]
 [ 525.            0.1147305...    0.9038874...    0.1174207...]
 [ 526.            0.1245719...    0.9021942...    0.1049899...]
 [ 527.            0.1344776...    0.8941145...    0.0896151...]
 [ 528.            0.1445395...    0.8826926...    0.0729296...]
 [ 529.            0.1548497...    0.8709729...    0.0565668...]
 [ 530.            0.1655   ...    0.862    ...    0.04216  ...]
 [ 531.            0.1765618...    0.858179 ...    0.0309976...]
 [ 532.            0.1880244...    0.8593588...    0.0229897...]
 [ 533.            0.1998566...    0.8647493...    0.0177013...]
 [ 534.            0.2120269...    0.8735601...    0.0146975...]
 [ 535.            0.2245042...    0.8850011...    0.0135435...]
 [ 536.            0.2372572...    0.8982820...    0.0138044...]
 [ 537.            0.2502546...    0.9126126...    0.0150454...]
 [ 538.            0.2634650...    0.9272026...    0.0168315...]
 [ 539.            0.2768572...    0.9412618...    0.0187280...]
 [ 540.            0.2904   ...    0.954    ...    0.0203   ...]
 [ 541.            0.3040682...    0.9647869...    0.0211987...]
 [ 542.            0.3178617...    0.9736329...    0.0214207...]
 [ 543.            0.3317865...    0.9807080...    0.0210486...]
 [ 544.            0.3458489...    0.9861825...    0.0201650...]
 [ 545.            0.3600548...    0.9902267...    0.0188525...]
 [ 546.            0.3744103...    0.9930107...    0.0171939...]
 [ 547.            0.3889215...    0.9947048...    0.0152716...]
 [ 548.            0.4035944...    0.9954792...    0.0131685...]
 [ 549.            0.4184352...    0.9955042...    0.0109670...]
 [ 550.            0.43345  ...    0.99495  ...    0.00875  ...]
 [ 551.            0.4486447...    0.9939867...    0.0065999...]
 [ 552.            0.4640255...    0.9927847...    0.0045994...]
 [ 553.            0.4795984...    0.9915141...    0.0028313...]
 [ 554.            0.4953696...    0.9903452...    0.0013781...]
 [ 555.            0.5113451...    0.9894483...    0.0003224...]
 [ 556.            0.5275310...    0.9889934...   -0.0002530...]
 [ 557.            0.5439334...    0.9891509...   -0.0002656...]
 [ 558.            0.5605583...    0.9900910...    0.0003672...]
 [ 559.            0.5774118...    0.9919840...    0.0017282...]
 [ 560.            0.5945   ...    0.995    ...    0.0039   ...]]
normalise(factor=1)[source]

Normalises the multi-spectral distributions with given normalization factor.

Parameters

factor (numeric, optional) – Normalization factor

Returns

Normalised multi- spectral distribution.

Return type

MultiSpectralDistributions

Notes

Examples

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> msds = MultiSpectralDistributions(data)
>>> with numpy_print_options(suppress=True):
...     print(msds.normalise())  
[[ 500.            0.0082422...    0.3246231...    1.       ...]
 [ 510.            0.0156434...    0.5055276...    0.5816176...]
 [ 520.            0.1064255...    0.7135678...    0.2876838...]
 [ 530.            0.2783852...    0.8663316...    0.155    ...]
 [ 540.            0.4884777...    0.9587939...    0.0746323...]
 [ 550.            0.7291000...    0.9999497...    0.0321691...]
 [ 560.            1.       ...    1.       ...    0.0143382...]]
property shape

Getter and setter property for the multi-spectral distributions shape.

Returns

Multi-spectral distributions shape.

Return type

SpectralShape

Notes

  • Multi-spectral distributions with a non-uniformly spaced independent variable have multiple intervals, in that case colour.MultiSpectralDistributions.shape attribute returns the minimum interval size.

Warning

colour.MultiSpectralDistributions.shape attribute is read only.

Examples

Shape of the multi-spectral distributions with a uniformly spaced independent variable:

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> MultiSpectralDistributions(data).shape
SpectralShape(500.0, 560.0, 10.0)

Shape of the multi-spectral distributions with a non-uniformly spaced independent variable:

>>> data[511] = (0.00314, 0.31416, 0.03142)
>>> MultiSpectralDistributions(data).shape
SpectralShape(500.0, 560.0, 1.0)
property strict_labels

Getter and setter property for the multi-spectral distributions strict labels.

Parameters

value (array_like) – Value to set the multi-spectral distributions strict labels with.

Returns

Multi-spectral distributions strict labels.

Return type

array_like

property strict_name

Getter and setter property for the multi-spectral distributions strict name.

Parameters

value (unicode) – Value to set the multi-spectral distributions strict name with.

Returns

Multi-spectral distributions strict name.

Return type

unicode

to_sds()[source]

Converts the multi-spectral distributions to a list of spectral distributions and update their name and strict name using the labels and strict labels.

Returns

List of spectral distributions.

Return type

list

Examples

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> msds = MultiSpectralDistributions(data)
>>> with numpy_print_options(suppress=True):
...     for sd in msds.to_sds():
...         print(sd)  
[[ 500.         0.0049 ...]
 [ 510.         0.0093 ...]
 [ 520.         0.06327...]
 [ 530.         0.1655 ...]
 [ 540.         0.2904 ...]
 [ 550.         0.43345...]
 [ 560.         0.5945 ...]]
[[ 500.         0.323  ...]
 [ 510.         0.503  ...]
 [ 520.         0.71   ...]
 [ 530.         0.862  ...]
 [ 540.         0.954  ...]
 [ 550.         0.99495...]
 [ 560.         0.995  ...]]
[[ 500.         0.272  ...]
 [ 510.         0.1582 ...]
 [ 520.         0.07825...]
 [ 530.         0.04216...]
 [ 540.         0.0203 ...]
 [ 550.         0.00875...]
 [ 560.         0.0039 ...]]
trim(shape)[source]

Trims the multi-spectral distributions wavelengths to given shape.

Parameters

shape (SpectralShape) – Spectral shape used for trimming.

Returns

Trimmed multi-spectral distributions.

Return type

MultiSpectralDistributions

Examples

>>> from colour.utilities import numpy_print_options
>>> data = {
...     500: (0.004900, 0.323000, 0.272000),
...     510: (0.009300, 0.503000, 0.158200),
...     520: (0.063270, 0.710000, 0.078250),
...     530: (0.165500, 0.862000, 0.042160),
...     540: (0.290400, 0.954000, 0.020300),
...     550: (0.433450, 0.994950, 0.008750),
...     560: (0.594500, 0.995000, 0.003900)
... }
>>> msds = MultiSpectralDistributions(data)
>>> msds = msds.interpolate(SpectralShape(interval=1))
>>> with numpy_print_options(suppress=True):
...     print(msds.trim(SpectralShape(520, 580, 5)))
... 
[[ 520.            0.06327  ...    0.71     ...    0.07825  ...]
 [ 521.            0.0715642...    0.7283456...    0.0728614...]
 [ 522.            0.0803970...    0.7459679...    0.0680051...]
 [ 523.            0.0897629...    0.7628184...    0.0636823...]
 [ 524.            0.0996227...    0.7789004...    0.0598449...]
 [ 525.            0.1099142...    0.7942533...    0.0564111...]
 [ 526.            0.1205637...    0.8089368...    0.0532822...]
 [ 527.            0.1314973...    0.8230153...    0.0503588...]
 [ 528.            0.1426523...    0.8365417...    0.0475571...]
 [ 529.            0.1539887...    0.8495422...    0.0448253...]
 [ 530.            0.1655   ...    0.862    ...    0.04216  ...]
 [ 531.            0.1772055...    0.8738585...    0.0395936...]
 [ 532.            0.1890877...    0.8850940...    0.0371046...]
 [ 533.            0.2011304...    0.8957073...    0.0346733...]
 [ 534.            0.2133310...    0.9057092...    0.0323006...]
 [ 535.            0.2256968...    0.9151181...    0.0300011...]
 [ 536.            0.2382403...    0.9239560...    0.0277974...]
 [ 537.            0.2509754...    0.9322459...    0.0257131...]
 [ 538.            0.2639130...    0.9400080...    0.0237668...]
 [ 539.            0.2770569...    0.9472574...    0.0219659...]
 [ 540.            0.2904   ...    0.954    ...    0.0203   ...]
 [ 541.            0.3039194...    0.9602409...    0.0187414...]
 [ 542.            0.3175893...    0.9660106...    0.0172748...]
 [ 543.            0.3314022...    0.9713260...    0.0158947...]
 [ 544.            0.3453666...    0.9761850...    0.0146001...]
 [ 545.            0.3595019...    0.9805731...    0.0133933...]
 [ 546.            0.3738324...    0.9844703...    0.0122777...]
 [ 547.            0.3883818...    0.9878583...    0.0112562...]
 [ 548.            0.4031674...    0.9907270...    0.0103302...]
 [ 549.            0.4181943...    0.9930817...    0.0094972...]
 [ 550.            0.43345  ...    0.99495  ...    0.00875  ...]
 [ 551.            0.4489082...    0.9963738...    0.0080748...]
 [ 552.            0.4645599...    0.9973682...    0.0074580...]
 [ 553.            0.4803950...    0.9979568...    0.0068902...]
 [ 554.            0.4963962...    0.9981802...    0.0063660...]
 [ 555.            0.5125410...    0.9980910...    0.0058818...]
 [ 556.            0.5288034...    0.9977488...    0.0054349...]
 [ 557.            0.5451560...    0.9972150...    0.0050216...]
 [ 558.            0.5615719...    0.9965479...    0.0046357...]
 [ 559.            0.5780267...    0.9957974...    0.0042671...]
 [ 560.            0.5945   ...    0.995    ...    0.0039   ...]]
property values

Getter and setter property for the multi-spectral distributions values.

Parameters

value (array_like) – Value to set the multi-spectral distributions wavelengths values with.

Returns

Multi-spectral distributions values.

Return type

ndarray

property wavelengths

Getter and setter property for the multi-spectral distributions wavelengths \(\lambda_n\).

Parameters

value (array_like) – Value to set the multi-spectral distributions wavelengths \(\lambda_n\) with.

Returns

Multi-spectral distributions wavelengths \(\lambda_n\).

Return type

ndarray