{"id":13689555,"url":"https://github.com/colour-science/colour","last_synced_at":"2025-05-12T13:20:00.418Z","repository":{"id":14403658,"uuid":"17114363","full_name":"colour-science/colour","owner":"colour-science","description":"Colour Science for Python","archived":false,"fork":false,"pushed_at":"2025-05-12T07:39:43.000Z","size":129789,"stargazers_count":2269,"open_issues_count":93,"forks_count":267,"subscribers_count":84,"default_branch":"develop","last_synced_at":"2025-05-12T13:19:38.311Z","etag":null,"topics":["color","color-science","color-space","color-spaces","colorspace","colorspaces","colour","colour-science","colour-space","colour-spaces","colourspace","colourspaces","data","dataset","datasets","python","spectral-data","spectral-dataset","spectral-datasets"],"latest_commit_sha":null,"homepage":"https://www.colour-science.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/colour-science.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":"CONTRIBUTING.rst","funding":".github/funding.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":"colour-science","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2014-02-23T18:55:40.000Z","updated_at":"2025-05-11T15:35:25.000Z","dependencies_parsed_at":"2024-01-18T09:56:39.130Z","dependency_job_id":"c0d4ddc3-6427-4b5a-bd27-da8537c7ea23","html_url":"https://github.com/colour-science/colour","commit_stats":{"total_commits":4078,"total_committers":58,"mean_commits":70.3103448275862,"dds":0.07822461991172147,"last_synced_commit":"9d743142ed97a5cfae347b559aca14c43464eb70"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colour-science%2Fcolour","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colour-science%2Fcolour/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colour-science%2Fcolour/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colour-science%2Fcolour/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/colour-science","download_url":"https://codeload.github.com/colour-science/colour/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745196,"owners_count":21957319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["color","color-science","color-space","color-spaces","colorspace","colorspaces","colour","colour-science","colour-space","colour-spaces","colourspace","colourspaces","data","dataset","datasets","python","spectral-data","spectral-dataset","spectral-datasets"],"created_at":"2024-08-02T15:01:52.590Z","updated_at":"2025-05-12T13:20:00.364Z","avatar_url":"https://github.com/colour-science.png","language":"Python","readme":".. begin-trim-long-description\n\n.. raw:: html\n\n    \u003cpicture\u003e\n        \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/colour-science/colour-branding/master/images/Colour_Logo_Dark_001.svg\"\u003e\n        \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/colour-science/colour-branding/master/images/Colour_Logo_001.svg\"\u003e\n        \u003cimg style=\"background:rgb(0, 0, 0, 0) !important;\" src=\"https://raw.githubusercontent.com/colour-science/colour-branding/master/images/Colour_Logo_001.svg\"\u003e\n    \u003c/picture\u003e\n\n.. end-trim-long-description\n\n|\n\n.. start-badges\n\n|NumFOCUS| |actions| |coveralls| |codacy| |version| |zenodo|\n\n.. |NumFOCUS| image:: https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat-square\u0026colorA=E1523D\u0026colorB=007D8A\n    :target: http://numfocus.org\n    :alt: Powered by NumFOCUS\n.. |actions| image:: https://img.shields.io/github/actions/workflow/status/colour-science/colour/.github/workflows/continuous-integration-quality-unit-tests.yml?branch=develop\u0026style=flat-square\n    :target: https://github.com/colour-science/colour/actions\n    :alt: Develop Build Status\n.. |coveralls| image:: http://img.shields.io/coveralls/colour-science/colour/develop.svg?style=flat-square\n    :target: https://coveralls.io/r/colour-science/colour\n    :alt: Coverage Status\n.. |codacy| image:: https://img.shields.io/codacy/grade/1f3b8d3bba7440ba9ebc1170589628b1/develop.svg?style=flat-square\n    :target: https://app.codacy.com/gh/colour-science/colour\n    :alt: Code Grade\n.. |version| image:: https://img.shields.io/pypi/v/colour-science.svg?style=flat-square\n    :target: https://pypi.org/project/colour-science\n    :alt: Package Version\n.. |zenodo| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.13917514-blue.svg?style=flat-square\n    :target: https://dx.doi.org/10.5281/zenodo.13917514\n    :alt: DOI\n\n.. end-badges\n\n`Colour \u003chttps://github.com/colour-science/colour\u003e`__ is an open-source\n`Python \u003chttps://www.python.org\u003e`__ package providing a comprehensive number\nof algorithms and datasets for colour science.\n\nIt is freely available under the\n`BSD-3-Clause \u003chttps://opensource.org/licenses/BSD-3-Clause\u003e`__ terms.\n\n**Colour** is an affiliated project of `NumFOCUS \u003chttps://numfocus.org\u003e`__, a\n501(c)(3) nonprofit in the United States.\n\n.. contents:: **Table of Contents**\n    :backlinks: none\n    :depth: 2\n\n.. sectnum::\n\nDraft Release Notes\n-------------------\n\nThe draft release notes of the\n`develop \u003chttps://github.com/colour-science/colour/tree/develop\u003e`__\nbranch are available at this\n`url \u003chttps://gist.github.com/KelSolaar/4a6ebe9ec3d389f0934b154fec8df51d\u003e`__.\n\nSponsors\n--------\n\nWe are grateful 💖 for the support of our\n`sponsors \u003chttps://github.com/colour-science/colour/blob/develop/SPONSORS.rst\u003e`__.\nIf you'd like to join them, please consider\n`becoming a sponsor on OpenCollective \u003chttps://opencollective.com/colour-science\u003e`__.\n\n.. begin-trim-long-description\n\n.. raw:: html\n\n    \u003ch2 align=\"center\"\u003eGold Sponsors\u003c/h2\u003e\n\n.. raw:: html\n\n    \u003ctable\u003e\n        \u003ctbody\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://makeup.land/\" target=\"_blank\"\u003e\n                        \u003cimg width=\"288px\"\" src=\"https://images.opencollective.com/makeup-land/28c2133/logo/512.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://makeup.land/\" target=\"_blank\"\u003emakeup.land\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/JRGoldstone\" target=\"_blank\"\u003e\n                        \u003cimg width=\"288px\" src=\"https://pbs.twimg.com/profile_images/1310212058672103425/3tPPvC6m.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://twitter.com/JRGoldstone\" target=\"_blank\"\u003eJoseph Goldstone\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://colorhythm.com\" target=\"_blank\"\u003e\n                        \u003cimg width=\"288px\" src=\"https://www.colour-science.org/images/Colorhythm_Logo.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://colorhythm.com\" target=\"_blank\"\u003eColorhythm\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n        \u003c/tbody\u003e\n    \u003c/table\u003e\n\n.. raw:: html\n\n    \u003ch2 align=\"center\"\u003eSilver Sponsors\u003c/h2\u003e\n\n.. raw:: html\n\n    \u003ctable\u003e\n        \u003ctbody\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"http://antlerpost.com/\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://pbs.twimg.com/profile_images/1394284009329504257/CZxrhA6x.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"http://antlerpost.com/\" target=\"_blank\"\u003eNick Shaw\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n        \u003c/tbody\u003e\n    \u003c/table\u003e\n\n.. raw:: html\n\n    \u003ch2 align=\"center\"\u003eBronze Sponsors\u003c/h2\u003e\n\n.. raw:: html\n\n    \u003ctable\u003e\n        \u003ctbody\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://github.com/scoopxyz\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://avatars0.githubusercontent.com/u/22137450\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://github.com/scoopxyz\" target=\"_blank\"\u003eSean Cooper\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://caveacademy.com\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://pbs.twimg.com/profile_images/1264204657548812290/y3kmV4NM.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://caveacademy.com\" target=\"_blank\"\u003eCAVE Academy\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://www.zhannaalekseeva.nyc\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://images.opencollective.com/studio-zhanna-alekseeva-nyc/a60e20f/avatar/256.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://www.zhannaalekseeva.nyc\" target=\"_blank\"\u003eStudio Zhanna Alekseeva.NYC\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://opencollective.com/guest-b971dc73\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://opencollective.com/static/images/default-guest-logo.svg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://opencollective.com/guest-b971dc73\" target=\"_blank\"\u003eJames Howard\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/126x126/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://dummyimage.com/126x126/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/126x126/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://dummyimage.com/126x126/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/126x126/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"126px\" src=\"https://dummyimage.com/126x126/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n        \u003c/tbody\u003e\n    \u003c/table\u003e\n\n.. raw:: html\n\n    \u003ch2 align=\"center\"\u003eDonations \u0026 Special Sponsors\u003c/h2\u003e\n\n.. raw:: html\n\n    \u003ctable\u003e\n        \u003ctbody\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://www.jetbrains.com/\" target=\"_blank\"\u003e\n                        \u003cimg height=\"176px\" src=\"https://i.imgur.com/nN1VDUG.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://www.jetbrains.com/\" target=\"_blank\"\u003eJetBrains\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://github.com/sobotka\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://avatars2.githubusercontent.com/u/59577\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://github.com/sobotka\" target=\"_blank\"\u003eTroy James Sobotka\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://github.com/remia\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://avatars3.githubusercontent.com/u/1922806\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://github.com/remia\" target=\"_blank\"\u003eRemi Achard\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"http://virtualmatter.org/\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://ca.slack-edge.com/T02KH93GH-UCFD09UUT-g2f156f5e08e-512\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"http://virtualmatter.org/\" target=\"_blank\"\u003eKevin Whitfield\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://www.richardlackey.com/\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://pbs.twimg.com/profile_images/1384145243096829962/CoUQPhrP.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://www.richardlackey.com/\" target=\"_blank\"\u003eRichard Lackey\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://www.artstation.com/monsieur_lixm\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://pbs.twimg.com/profile_images/1469781977280786433/NncWAxCW.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://www.artstation.com/monsieur_lixm\" target=\"_blank\"\u003eLiam Collod\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/alexmitchellmus\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://pbs.twimg.com/profile_images/763631280722370560/F9FN4lEz.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://twitter.com/alexmitchellmus\" target=\"_blank\"\u003eAlex Mitchell\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/ilia_sibiryakov\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://avatars.githubusercontent.com/u/23642861\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://twitter.com/ilia_sibiryakov\" target=\"_blank\"\u003eIlia Sibiryakov\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://github.com/zachlewis\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://avatars0.githubusercontent.com/u/2228592\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://github.com/zachlewis\" target=\"_blank\"\u003eZack Lewis\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/fredsavoir\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://pbs.twimg.com/profile_images/363988638/FS_Portrait082009.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://twitter.com/fredsavoir\" target=\"_blank\"\u003eFrederic Savoir\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/digitaltechltd\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://images.squarespace-cdn.com/content/v1/5ef3250008605a61d88e7240/1593263686377-LPNJQMBE7U00WRNBY6JH/DIT+Logo+-+Dark+theme+-+PNG.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://www.digitalimagingtech.co.uk\" target=\"_blank\"\u003eHoward Colin\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://chrisbrejon.com/\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://i.imgur.com/Zhs53S9.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://chrisbrejon.com/\" target=\"_blank\"\u003eChristophe Brejon\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/MarioRokicki\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://pbs.twimg.com/profile_images/1801891382/mario_pi_sq_400x400.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://twitter.com/MarioRokicki\" target=\"_blank\"\u003eMario Rokicki\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://opencollective.com/joshua-pines\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://images.opencollective.com/joshua-pines/ad0ec4b/avatar/256.png\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://opencollective.com/joshua-pines\" target=\"_blank\"\u003eJoshua Pines\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"176px\" src=\"https://dummyimage.com/176x176/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n        \u003c/tbody\u003e\n    \u003c/table\u003e\n\n.. end-trim-long-description\n\nFeatures\n--------\n\nMost of the objects are available from the ``colour`` namespace:\n\n.. code-block:: python\n\n    import colour\n\nAutomatic Colour Conversion Graph - ``colour.graph``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Colour_Automatic_Conversion_Graph.png\n\n.. code-block:: python\n\n    sd = colour.SDS_COLOURCHECKERS[\"ColorChecker N Ohta\"][\"dark skin\"]\n    colour.convert(sd, \"Spectral Distribution\", \"sRGB\", verbose={\"mode\": \"Short\"})\n\n.. code-block:: text\n\n    ===============================================================================\n    *                                                                             *\n    *   [ Conversion Path ]                                                       *\n    *                                                                             *\n    *   \"sd_to_XYZ\" --\u003e \"XYZ_to_sRGB\"                                             *\n    *                                                                             *\n    ===============================================================================\n    array([ 0.49034776,  0.30185875,  0.23587685])\n\n.. code-block:: python\n\n    illuminant = colour.SDS_ILLUMINANTS[\"FL2\"]\n    colour.convert(\n        sd,\n        \"Spectral Distribution\",\n        \"sRGB\",\n        sd_to_XYZ={\"illuminant\": illuminant},\n    )\n\n.. code-block:: text\n\n    array([ 0.47924575,  0.31676968,  0.17362725])\n\nChromatic Adaptation - ``colour.adaptation``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    XYZ = [0.20654008, 0.12197225, 0.05136952]\n    D65 = colour.CCS_ILLUMINANTS[\"CIE 1931 2 Degree Standard Observer\"][\"D65\"]\n    A = colour.CCS_ILLUMINANTS[\"CIE 1931 2 Degree Standard Observer\"][\"A\"]\n    colour.chromatic_adaptation(XYZ, colour.xy_to_XYZ(D65), colour.xy_to_XYZ(A))\n\n.. code-block:: text\n\n    array([ 0.25331034,  0.13765286,  0.01543185])\n\n.. code-block:: python\n\n    sorted(colour.CHROMATIC_ADAPTATION_METHODS)\n\n.. code-block:: text\n\n    ['CIE 1994', 'CMCCAT2000', 'Fairchild 1990', 'Von Kries', 'Zhai 2018', 'vK20']\n\nAlgebra - ``colour.algebra``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nKernel Interpolation\n********************\n\n.. code-block:: python\n\n    y = [5.9200, 9.3700, 10.8135, 4.5100, 69.5900, 27.8007, 86.0500]\n    x = range(len(y))\n    colour.KernelInterpolator(x, y)([0.25, 0.75, 5.50])\n\n.. code-block:: text\n\n    array([  6.18062083,   8.08238488,  57.85783403])\n\nSprague (1880) Interpolation\n****************************\n\n.. code-block:: python\n\n    y = [5.9200, 9.3700, 10.8135, 4.5100, 69.5900, 27.8007, 86.0500]\n    x = range(len(y))\n    colour.SpragueInterpolator(x, y)([0.25, 0.75, 5.50])\n\n.. code-block:: text\n\n    array([  6.72951612,   7.81406251,  43.77379185])\n\nColour Appearance Models - ``colour.appearance``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    XYZ_w = [95.05, 100.00, 108.88]\n    L_A = 318.31\n    Y_b = 20.0\n    colour.XYZ_to_CIECAM02(XYZ, XYZ_w, L_A, Y_b)\n\n.. code-block:: text\n\n    CAM_Specification_CIECAM02(J=34.434525727858997, C=67.365010921125915, h=22.279164147957076, s=62.814855853327131, Q=177.47124941102123, M=70.024939419291385, H=2.689608534423904, HC=None)\n\n.. code-block:: python\n\n    colour.XYZ_to_CIECAM16(XYZ, XYZ_w, L_A, Y_b)\n\n.. code-block:: text\n\n    CAM_Specification_CIECAM16(J=33.880368498111686, C=69.444353357408033, h=19.510887327451748, s=64.03612114840314, Q=176.03752758512178, M=72.18638534116765, H=399.52975599115319, HC=None)\n\n.. code-block:: python\n\n    colour.XYZ_to_CAM16(XYZ, XYZ_w, L_A, Y_b)\n\n.. code-block:: text\n\n    CAM_Specification_CAM16(J=33.880368498111686, C=69.444353357408033, h=19.510887327451748, s=64.03612114840314, Q=176.03752758512178, M=72.18638534116765, H=399.52975599115319, HC=None)\n\n.. code-block:: python\n\n    colour.XYZ_to_Hellwig2022(XYZ, XYZ_w, L_A, Y_b)\n\n.. code-block:: text\n\n    CAM_Specification_Hellwig2022(J=33.880368498111686, C=37.579419116276348, h=19.510887327451748, s=109.33343382561695, Q=45.34489577734751, M=49.577131618021212, H=399.52975599115319, HC=None, J_HK=39.41741758094139, Q_HK=52.755585941150315)\n\n.. code-block:: python\n\n    colour.XYZ_to_Kim2009(XYZ, XYZ_w, L_A)\n\n.. code-block:: text\n\n    CAM_Specification_Kim2009(J=19.879918542450937, C=55.83905525087696, h=22.013388165090031, s=112.9797935493912, Q=36.309026130161513, M=46.346415858227871, H=2.3543198369639753, HC=None)\n\n.. code-block:: python\n\n    colour.XYZ_to_ZCAM(XYZ, XYZ_w, L_A, Y_b)\n\n.. code-block:: text\n\n    CAM_Specification_ZCAM(J=38.347186278956357, C=21.121389892085183, h=33.711578931095183, s=81.444585609489536, Q=76.986725284523772, M=42.403805833900513, H=0.45779200212217158, HC=None, V=43.623590687423551, K=43.20894953152817, W=34.829588380192149)\n\nColour Blindness - ``colour.blindness``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    import numpy as np\n\n    cmfs = colour.colorimetry.MSDS_CMFS_LMS[\"Stockman \u0026 Sharpe 2 Degree Cone Fundamentals\"]\n    colour.msds_cmfs_anomalous_trichromacy_Machado2009(cmfs, np.array([15, 0, 0]))[450]\n\n.. code-block:: text\n\n    array([ 0.08912884,  0.0870524 ,  0.955393  ])\n\n.. code-block:: python\n\n    primaries = colour.MSDS_DISPLAY_PRIMARIES[\"Apple Studio Display\"]\n    d_LMS = (15, 0, 0)\n    colour.matrix_anomalous_trichromacy_Machado2009(cmfs, primaries, d_LMS)\n\n.. code-block:: text\n\n    array([[-0.27774652,  2.65150084, -1.37375432],\n           [ 0.27189369,  0.20047862,  0.52762768],\n           [ 0.00644047,  0.25921579,  0.73434374]])\n\nColour Correction - ``colour characterisation``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    import numpy as np\n\n    RGB = [0.17224810, 0.09170660, 0.06416938]\n    M_T = np.random.random((24, 3))\n    M_R = M_T + (np.random.random((24, 3)) - 0.5) * 0.5\n    colour.colour_correction(RGB, M_T, M_R)\n\n.. code-block:: text\n\n    array([ 0.18147565,  0.08609354,  0.08569274])\n\n.. code-block:: python\n\n    sorted(colour.COLOUR_CORRECTION_METHODS)\n\n.. code-block:: text\n\n    ['Cheung 2004', 'Finlayson 2015', 'Vandermonde']\n\nACES Input Transform - ``colour characterisation``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    sensitivities = colour.MSDS_CAMERA_SENSITIVITIES[\"Nikon 5100 (NPL)\"]\n    illuminant = colour.SDS_ILLUMINANTS[\"D55\"]\n    colour.matrix_idt(sensitivities, illuminant)\n\n.. code-block:: text\n\n    (array([[ 0.59368175,  0.30418371,  0.10213454],\n           [ 0.00457979,  1.14946003, -0.15403982],\n           [ 0.03552213, -0.16312291,  1.12760077]]), array([ 1.58214188,  1.        ,  1.28910346]))\n\nColorimetry - ``colour.colorimetry``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSpectral Computations\n*********************\n\n.. code-block:: python\n\n    colour.sd_to_XYZ(colour.SDS_LIGHT_SOURCES[\"Neodimium Incandescent\"])\n\n.. code-block:: text\n\n    array([ 36.94726204,  32.62076174,  13.0143849 ])\n\n.. code-block:: python\n\n    sorted(colour.SPECTRAL_TO_XYZ_METHODS)\n\n.. code-block:: text\n\n    ['ASTM E308', 'Integration', 'astm2015']\n\n\nMulti-Spectral Computations\n***************************\n\n.. code-block:: python\n\n    msds = np.array(\n        [\n            [\n                [\n                    0.01367208,\n                    0.09127947,\n                    0.01524376,\n                    0.02810712,\n                    0.19176012,\n                    0.04299992,\n                ],\n                [\n                    0.00959792,\n                    0.25822842,\n                    0.41388571,\n                    0.22275120,\n                    0.00407416,\n                    0.37439537,\n                ],\n                [\n                    0.01791409,\n                    0.29707789,\n                    0.56295109,\n                    0.23752193,\n                    0.00236515,\n                    0.58190280,\n                ],\n            ],\n            [\n                [\n                    0.01492332,\n                    0.10421912,\n                    0.02240025,\n                    0.03735409,\n                    0.57663846,\n                    0.32416266,\n                ],\n                [\n                    0.04180972,\n                    0.26402685,\n                    0.03572137,\n                    0.00413520,\n                    0.41808194,\n                    0.24696727,\n                ],\n                [\n                    0.00628672,\n                    0.11454948,\n                    0.02198825,\n                    0.39906919,\n                    0.63640803,\n                    0.01139849,\n                ],\n            ],\n            [\n                [\n                    0.04325933,\n                    0.26825359,\n                    0.23732357,\n                    0.05175860,\n                    0.01181048,\n                    0.08233768,\n                ],\n                [\n                    0.02484169,\n                    0.12027161,\n                    0.00541695,\n                    0.00654612,\n                    0.18603799,\n                    0.36247808,\n                ],\n                [\n                    0.03102159,\n                    0.16815442,\n                    0.37186235,\n                    0.08610666,\n                    0.00413520,\n                    0.78492409,\n                ],\n            ],\n            [\n                [\n                    0.11682307,\n                    0.78883040,\n                    0.74468607,\n                    0.83375293,\n                    0.90571451,\n                    0.70054168,\n                ],\n                [\n                    0.06321812,\n                    0.41898224,\n                    0.15190357,\n                    0.24591440,\n                    0.55301750,\n                    0.00657664,\n                ],\n                [\n                    0.00305180,\n                    0.11288624,\n                    0.11357290,\n                    0.12924391,\n                    0.00195315,\n                    0.21771573,\n                ],\n            ],\n        ]\n    )\n    colour.msds_to_XYZ(\n        msds,\n        method=\"Integration\",\n        shape=colour.SpectralShape(400, 700, 60),\n    )\n\n.. code-block:: text\n\n    array([[[  7.68544647,   4.09414317,   8.49324254],\n            [ 17.12567298,  27.77681821,  25.52573685],\n            [ 19.10280411,  34.45851476,  29.76319628]],\n           [[ 18.03375827,   8.62340812,   9.71702574],\n            [ 15.03110867,   6.54001068,  24.53208465],\n            [ 37.68269495,  26.4411103 ,  10.66361816]],\n           [[  8.09532373,  12.75333339,  25.79613956],\n            [  7.09620297,   2.79257389,  11.15039854],\n            [  8.933163  ,  19.39985815,  17.14915636]],\n           [[ 80.00969553,  80.39810464,  76.08184429],\n            [ 33.27611427,  24.38947838,  39.34919287],\n            [  8.89425686,  11.05185138,  10.86767594]]])\n\n.. code-block:: python\n\n    sorted(colour.MSDS_TO_XYZ_METHODS)\n\n.. code-block:: text\n\n    ['ASTM E308', 'Integration', 'astm2015']\n\nBlackbody Spectral Radiance Computation\n***************************************\n\n.. code-block:: python\n\n    colour.sd_blackbody(5000)\n\n.. code-block:: text\n\n    SpectralDistribution([[   360.        ,   6654.27827064],\n                          [   361.        ,   6709.60527925],\n                          [   362.        ,   6764.82512152],\n                          ...\n                          [   778.        ,  10606.80038243],\n                          [   779.        ,  10590.33272593],\n                          [   780.        ,  10573.85196369]],\n                         SpragueInterpolator,\n                         {},\n                         Extrapolator,\n                         {'method': 'Constant', 'left': None, 'right': None})\n\nDominant, Complementary Wavelength \u0026 Colour Purity Computation\n**************************************************************\n\n.. code-block:: python\n\n    xy = [0.54369557, 0.32107944]\n    xy_n = [0.31270000, 0.32900000]\n    colour.dominant_wavelength(xy, xy_n)\n\n.. code-block:: text\n\n    (array(616.0),\n     array([ 0.68354746,  0.31628409]),\n     array([ 0.68354746,  0.31628409]))\n\nLightness Computation\n*********************\n\n.. code-block:: python\n\n    colour.lightness(12.19722535)\n\n.. code-block:: text\n\n    41.527875844653451\n\n.. code-block:: python\n\n    sorted(colour.LIGHTNESS_METHODS)\n\n.. code-block:: text\n\n    ['Abebe 2017',\n     'CIE 1976',\n     'Fairchild 2010',\n     'Fairchild 2011',\n     'Glasser 1958',\n     'Lstar1976',\n     'Wyszecki 1963']\n\nLuminance Computation\n*********************\n\n.. code-block:: python\n\n    colour.luminance(41.52787585)\n\n.. code-block:: text\n\n    12.197225353400775\n\n.. code-block:: python\n\n    sorted(colour.LUMINANCE_METHODS)\n\n.. code-block:: text\n\n    ['ASTM D1535',\n     'CIE 1976',\n     'Fairchild 2010',\n     'Fairchild 2011',\n     'Newhall 1943',\n     'astm2008',\n     'cie1976']\n\nWhiteness Computation\n*********************\n\n.. code-block:: python\n\n    XYZ = [95.00000000, 100.00000000, 105.00000000]\n    XYZ_0 = [94.80966767, 100.00000000, 107.30513595]\n    colour.whiteness(XYZ, XYZ_0)\n\n.. code-block:: text\n\n    array([ 93.756     ,  -1.33000001])\n\n.. code-block:: python\n\n    sorted(colour.WHITENESS_METHODS)\n\n.. code-block:: text\n\n    ['ASTM E313',\n     'Berger 1959',\n     'CIE 2004',\n     'Ganz 1979',\n     'Stensby 1968',\n     'Taube 1960',\n     'cie2004']\n\nYellowness Computation\n**********************\n\n.. code-block:: python\n\n    XYZ = [95.00000000, 100.00000000, 105.00000000]\n    colour.yellowness(XYZ)\n\n.. code-block:: text\n\n    4.3400000000000034\n\n.. code-block:: python\n\n    sorted(colour.YELLOWNESS_METHODS)\n\n.. code-block:: text\n\n    ['ASTM D1925', 'ASTM E313', 'ASTM E313 Alternative']\n\nLuminous Flux, Efficiency \u0026 Efficacy Computation\n************************************************\n\n.. code-block:: python\n\n    sd = colour.SDS_LIGHT_SOURCES[\"Neodimium Incandescent\"]\n    colour.luminous_flux(sd)\n\n.. code-block:: text\n\n    23807.655527367198\n\n.. code-block:: python\n\n    sd = colour.SDS_LIGHT_SOURCES[\"Neodimium Incandescent\"]\n    colour.luminous_efficiency(sd)\n\n.. code-block:: text\n\n    0.19943935624521045\n\n.. code-block:: python\n\n    sd = colour.SDS_LIGHT_SOURCES[\"Neodimium Incandescent\"]\n    colour.luminous_efficacy(sd)\n\n.. code-block:: text\n\n    136.21708031547874\n\nContrast Sensitivity Function - ``colour.contrast``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    colour.contrast_sensitivity_function(u=4, X_0=60, E=65)\n\n.. code-block:: text\n\n    358.51180789884984\n\n.. code-block:: python\n\n    sorted(colour.CONTRAST_SENSITIVITY_METHODS)\n\n.. code-block:: text\n\n    ['Barten 1999']\n\nColour Difference - ``colour.difference``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    Lab_1 = [100.00000000, 21.57210357, 272.22819350]\n    Lab_2 = [100.00000000, 426.67945353, 72.39590835]\n    colour.delta_E(Lab_1, Lab_2)\n\n.. code-block:: text\n\n    94.035649026659485\n\n.. code-block:: python\n\n    sorted(colour.DELTA_E_METHODS)\n\n.. code-block:: text\n\n    ['CAM02-LCD',\n     'CAM02-SCD',\n     'CAM02-UCS',\n     'CAM16-LCD',\n     'CAM16-SCD',\n     'CAM16-UCS',\n     'CIE 1976',\n     'CIE 1994',\n     'CIE 2000',\n     'CMC',\n     'DIN99',\n     'HyAB',\n     'HyCH',\n     'ITP',\n     'cie1976',\n     'cie1994',\n     'cie2000']\n\nIO - ``colour.io``\n~~~~~~~~~~~~~~~~~~\n\nImages\n******\n\n.. code-block:: python\n\n    RGB = colour.read_image(\"Ishihara_Colour_Blindness_Test_Plate_3.png\")\n    RGB.shape\n\n.. code-block:: text\n\n    (276, 281, 3)\n\nSpectral Images - Fichet et al. (2021)\n**************************************\n\n.. code-block:: python\n\n    components = colour.read_spectral_image_Fichet2021(\"Polarised.exr\")\n    list(components.keys())\n\n.. code-block:: text\n\n    ['S0', 'S1', 'S2', 'S3']\n\nLook Up Table (LUT) Data\n************************\n\n.. code-block:: python\n\n    LUT = colour.read_LUT(\"ACES_Proxy_10_to_ACES.cube\")\n    print(LUT)\n\n.. code-block:: text\n\n    LUT3x1D - ACES Proxy 10 to ACES\n    -------------------------------\n    Dimensions : 2\n    Domain     : [[0 0 0]\n                  [1 1 1]]\n    Size       : (32, 3)\n\n.. code-block:: python\n\n    RGB = [0.17224810, 0.09170660, 0.06416938]\n    LUT.apply(RGB)\n\n.. code-block:: text\n\n    array([ 0.00575674,  0.00181493,  0.00121419])\n\nColour Models - ``colour.models``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCIE xyY Colourspace\n*******************\n\n.. code-block:: python\n\n    colour.XYZ_to_xyY([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.54369557,  0.32107944,  0.12197225])\n\nCIE L*a*b* Colourspace\n**********************\n\n.. code-block:: python\n\n    colour.XYZ_to_Lab([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 41.52787529,  52.63858304,  26.92317922])\n\nCIE L*u*v* Colourspace\n**********************\n\n.. code-block:: python\n\n    colour.XYZ_to_Luv([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 41.52787529,  96.83626054,  17.75210149])\n\nCIE 1960 UCS Colourspace\n************************\n\n.. code-block:: python\n\n    colour.XYZ_to_UCS([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.13769339,  0.12197225,  0.1053731 ])\n\nCIE 1964 U*V*W* Colourspace\n***************************\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    colour.XYZ_to_UVW(XYZ)\n\n.. code-block:: text\n\n    array([ 94.55035725,  11.55536523,  40.54757405])\n\nCAM02-LCD, CAM02-SCD, and CAM02-UCS Colourspaces - Luo, Cui and Li (2006)\n*************************************************************************\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    XYZ_w = [95.05, 100.00, 108.88]\n    L_A = 318.31\n    Y_b = 20.0\n    surround = colour.VIEWING_CONDITIONS_CIECAM02[\"Average\"]\n    specification = colour.XYZ_to_CIECAM02(XYZ, XYZ_w, L_A, Y_b, surround)\n    JMh = (specification.J, specification.M, specification.h)\n    colour.JMh_CIECAM02_to_CAM02UCS(JMh)\n\n.. code-block:: text\n\n    array([ 47.16899898,  38.72623785,  15.8663383 ])\n\n.. code-block:: python\n\n    XYZ = [0.20654008, 0.12197225, 0.05136952]\n    XYZ_w = [95.05 / 100, 100.00 / 100, 108.88 / 100]\n    colour.XYZ_to_CAM02UCS(XYZ, XYZ_w=XYZ_w, L_A=L_A, Y_b=Y_b)\n\n.. code-block:: text\n\n    array([ 47.16899898,  38.72623785,  15.8663383 ])\n\nCAM16-LCD, CAM16-SCD, and CAM16-UCS Colourspaces - Li et al. (2017)\n*******************************************************************\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    XYZ_w = [95.05, 100.00, 108.88]\n    L_A = 318.31\n    Y_b = 20.0\n    surround = colour.VIEWING_CONDITIONS_CAM16[\"Average\"]\n    specification = colour.XYZ_to_CAM16(XYZ, XYZ_w, L_A, Y_b, surround)\n    JMh = (specification.J, specification.M, specification.h)\n    colour.JMh_CAM16_to_CAM16UCS(JMh)\n\n.. code-block:: text\n\n    array([ 46.55542238,  40.22460974,  14.25288392])\n\n.. code-block:: python\n\n    XYZ = [0.20654008, 0.12197225, 0.05136952]\n    XYZ_w = [95.05 / 100, 100.00 / 100, 108.88 / 100]\n    colour.XYZ_to_CAM16UCS(XYZ, XYZ_w=XYZ_w, L_A=L_A, Y_b=Y_b)\n\n.. code-block:: text\n\n    array([ 46.55542238,  40.22460974,  14.25288392])\n\nDIN99 Colourspace and DIN99b, DIN99c, DIN99d Refined Formulas\n*************************************************************\n\n.. code-block:: python\n\n    Lab = [41.52787529, 52.63858304, 26.92317922]\n    colour.Lab_to_DIN99(Lab)\n\n.. code-block:: text\n\n    array([ 53.22821988,  28.41634656,   3.89839552])\n\nICaCb Colourspace\n******************\n\n.. code-block:: python\n\n    XYZ_to_ICaCb(np.array([0.20654008, 0.12197225, 0.05136952]))\n\n.. code-block:: text\n\n    array([ 0.06875297,  0.05753352,  0.02081548])\n\nIgPgTg Colourspace\n******************\n\n.. code-block:: python\n\n    colour.XYZ_to_IgPgTg([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.42421258,  0.18632491,  0.10689223])\n\nIPT Colourspace\n***************\n\n.. code-block:: python\n\n    colour.XYZ_to_IPT([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.38426191,  0.38487306,  0.18886838])\n\nJzazbz Colourspace\n******************\n\n.. code-block:: python\n\n    colour.XYZ_to_Jzazbz([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.00535048,  0.00924302,  0.00526007])\n\nhdr-CIELAB Colourspace\n**********************\n\n.. code-block:: python\n\n    colour.XYZ_to_hdr_CIELab([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 51.87002062,  60.4763385 ,  32.14551912])\n\nhdr-IPT Colourspace\n*******************\n\n.. code-block:: python\n\n    colour.XYZ_to_hdr_IPT([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 25.18261761, -22.62111297,   3.18511729])\n\nHunter L,a,b Colour Scale\n*************************\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    colour.XYZ_to_Hunter_Lab(XYZ)\n\n.. code-block:: text\n\n    array([ 34.92452577,  47.06189858,  14.38615107])\n\nHunter Rd,a,b Colour Scale\n**************************\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    colour.XYZ_to_Hunter_Rdab(XYZ)\n\n.. code-block:: text\n\n    array([ 12.197225  ,  57.12537874,  17.46241341])\n\nOklab Colourspace\n*****************\n\n.. code-block:: python\n\n    colour.XYZ_to_Oklab([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.51634019,  0.154695  ,  0.06289579])\n\nOSA UCS Colourspace\n*******************\n\n.. code-block:: python\n\n    XYZ = [0.20654008 * 100, 0.12197225 * 100, 0.05136952 * 100]\n    colour.XYZ_to_OSA_UCS(XYZ)\n\n.. code-block:: text\n\n    array([-3.0049979 ,  2.99713697, -9.66784231])\n\nProLab Colourspace\n******************\n\n.. code-block:: python\n\n    colour.XYZ_to_ProLab([0.51634019, 0.15469500, 0.06289579])\n\n.. code-block:: text\n\n    array([1.24610688, 2.39525236, 0.41902126])\n\nRagoo and Farup (2021) Optimised IPT Colourspace\n************************************************\n\n.. code-block:: python\n\n    colour.XYZ_to_IPT_Ragoo2021([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.42248243,  0.2910514 ,  0.20410663])\n\nYrg Colourspace - Kirk (2019)\n*****************************\n\n.. code-block:: python\n\n    colour.XYZ_to_Yrg([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    array([ 0.13137801,  0.49037645,  0.37777388])\n\nY'CbCr Colour Encoding\n**********************\n\n.. code-block:: python\n\n    colour.RGB_to_YCbCr([1.0, 1.0, 1.0])\n\n.. code-block:: text\n\n    array([ 0.92156863,  0.50196078,  0.50196078])\n\nYCoCg Colour Encoding\n*********************\n\n.. code-block:: python\n\n    colour.RGB_to_YCoCg([0.75, 0.75, 0.0])\n\n.. code-block:: text\n\n    array([ 0.5625,  0.375 ,  0.1875])\n\nICtCp Colour Encoding\n*********************\n\n.. code-block:: python\n\n    colour.RGB_to_ICtCp([0.45620519, 0.03081071, 0.04091952])\n\n.. code-block:: text\n\n    array([ 0.07351364,  0.00475253,  0.09351596])\n\nHSV Colourspace\n***************\n\n.. code-block:: python\n\n    colour.RGB_to_HSV([0.45620519, 0.03081071, 0.04091952])\n\n.. code-block:: text\n\n    array([ 0.99603944,  0.93246304,  0.45620519])\n\nIHLS Colourspace\n****************\n\n.. code-block:: python\n\n    colour.RGB_to_IHLS([0.45620519, 0.03081071, 0.04091952])\n\n.. code-block:: text\n\n    array([ 6.26236117,  0.12197943,  0.42539448])\n\nPrismatic Colourspace\n*********************\n\n.. code-block:: python\n\n    colour.RGB_to_Prismatic([0.25, 0.50, 0.75])\n\n.. code-block:: text\n\n    array([ 0.75      ,  0.16666667,  0.33333333,  0.5       ])\n\nRGB Colourspace and Transformations\n***********************************\n\n.. code-block:: python\n\n    XYZ = [0.21638819, 0.12570000, 0.03847493]\n    illuminant_XYZ = [0.34570, 0.35850]\n    illuminant_RGB = [0.31270, 0.32900]\n    chromatic_adaptation_transform = \"Bradford\"\n    matrix_XYZ_to_RGB = [\n        [3.24062548, -1.53720797, -0.49862860],\n        [-0.96893071, 1.87575606, 0.04151752],\n        [0.05571012, -0.20402105, 1.05699594],\n    ]\n    colour.XYZ_to_RGB(\n        XYZ,\n        illuminant_XYZ,\n        illuminant_RGB,\n        matrix_XYZ_to_RGB,\n        chromatic_adaptation_transform,\n    )\n\n.. code-block:: text\n\n    array([ 0.45595571,  0.03039702,  0.04087245])\n\nRGB Colourspace Derivation\n**************************\n\n.. code-block:: python\n\n    p = [0.73470, 0.26530, 0.00000, 1.00000, 0.00010, -0.07700]\n    w = [0.32168, 0.33767]\n    colour.normalised_primary_matrix(p, w)\n\n.. code-block:: text\n\n    array([[  9.52552396e-01,   0.00000000e+00,   9.36786317e-05],\n           [  3.43966450e-01,   7.28166097e-01,  -7.21325464e-02],\n           [  0.00000000e+00,   0.00000000e+00,   1.00882518e+00]])\n\nRGB Colourspaces\n****************\n\n.. code-block:: python\n\n    sorted(colour.RGB_COLOURSPACES)\n\n.. code-block:: text\n\n    ['ACES2065-1',\n     'ACEScc',\n     'ACEScct',\n     'ACEScg',\n     'ACESproxy',\n     'ARRI Wide Gamut 3',\n     'ARRI Wide Gamut 4',\n     'Adobe RGB (1998)',\n     'Adobe Wide Gamut RGB',\n     'Apple RGB',\n     'Best RGB',\n     'Beta RGB',\n     'Blackmagic Wide Gamut',\n     'CIE RGB',\n     'CIE XYZ-D65 - Scene-referred',\n     'Cinema Gamut',\n     'ColorMatch RGB',\n     'DCDM XYZ',\n     'DCI-P3',\n     'DCI-P3-P',\n     'DJI D-Gamut',\n     'DRAGONcolor',\n     'DRAGONcolor2',\n     'DaVinci Wide Gamut',\n     'Display P3',\n     'Don RGB 4',\n     'EBU Tech. 3213-E',\n     'ECI RGB v2',\n     'ERIMM RGB',\n     'Ekta Space PS 5',\n     'F-Gamut',\n     'F-Gamut C',\n     'FilmLight E-Gamut',\n     'Gamma 1.8 Encoded Rec.709',\n     'Gamma 2.2 Encoded AP1',\n     'Gamma 2.2 Encoded AdobeRGB',\n     'Gamma 2.2 Encoded Rec.709',\n     'ITU-R BT.2020',\n     'ITU-R BT.470 - 525',\n     'ITU-R BT.470 - 625',\n     'ITU-R BT.709',\n     'ITU-T H.273 - 22 Unspecified',\n     'ITU-T H.273 - Generic Film',\n     'Linear AdobeRGB',\n     'Linear P3-D65',\n     'Linear Rec.2020',\n     'Linear Rec.709 (sRGB)',\n     'Max RGB',\n     'N-Gamut',\n     'NTSC (1953)',\n     'NTSC (1987)',\n     'P3-D65',\n     'PLASA ANSI E1.54',\n     'Pal/Secam',\n     'ProPhoto RGB',\n     'Protune Native',\n     'REDWideGamutRGB',\n     'REDcolor',\n     'REDcolor2',\n     'REDcolor3',\n     'REDcolor4',\n     'RIMM RGB',\n     'ROMM RGB',\n     'Russell RGB',\n     'S-Gamut',\n     'S-Gamut3',\n     'S-Gamut3.Cine',\n     'SMPTE 240M',\n     'SMPTE C',\n     'Sharp RGB',\n     'V-Gamut',\n     'Venice S-Gamut3',\n     'Venice S-Gamut3.Cine',\n     'Xtreme RGB',\n     'aces',\n     'adobe1998',\n     'g18_rec709_scene',\n     'g22_adobergb_scene',\n     'g22_ap1_scene',\n     'g22_rec709_scene',\n     'lin_adobergb_scene',\n     'lin_ap0_scene',\n     'lin_ap1_scene',\n     'lin_ciexyzd65_scene',\n     'lin_p3d65_scene',\n     'lin_rec2020_scene',\n     'lin_rec709_scene',\n     'prophoto',\n     'sRGB',\n     'sRGB Encoded AP1',\n     'sRGB Encoded P3-D65',\n     'sRGB Encoded Rec.709 (sRGB)',\n     'srgb_ap1_scene',\n     'srgb_p3d65_scene',\n     'srgb_rec709_scene']\n\nOETFs\n*****\n\n.. code-block:: python\n\n    sorted(colour.OETFS)\n\n.. code-block:: text\n\n    ['ARIB STD-B67',\n     'Blackmagic Film Generation 5',\n     'DaVinci Intermediate',\n     'ITU-R BT.2020',\n     'ITU-R BT.2100 HLG',\n     'ITU-R BT.2100 PQ',\n     'ITU-R BT.601',\n     'ITU-R BT.709',\n     'ITU-T H.273 IEC 61966-2',\n     'ITU-T H.273 Log',\n     'ITU-T H.273 Log Sqrt',\n     'SMPTE 240M']\n\nEOTFs\n*****\n\n.. code-block:: python\n\n    sorted(colour.EOTFS)\n\n.. code-block:: text\n\n    ['DCDM',\n     'DICOM GSDF',\n     'ITU-R BT.1886',\n     'ITU-R BT.2100 HLG',\n     'ITU-R BT.2100 PQ',\n     'ITU-T H.273 ST.428-1',\n     'SMPTE 240M',\n     'ST 2084',\n     'sRGB']\n\nOOTFs\n*****\n\n.. code-block:: python\n\n    sorted(colour.OOTFS)\n\n.. code-block:: text\n\n    ['ITU-R BT.2100 HLG', 'ITU-R BT.2100 PQ']\n\nLog Encoding / Decoding\n***********************\n\n.. code-block:: python\n\n    sorted(colour.LOG_ENCODINGS)\n\n.. code-block:: text\n\n    ['ACEScc',\n     'ACEScct',\n     'ACESproxy',\n     'ARRI LogC3',\n     'ARRI LogC4',\n     'Apple Log Profile',\n     'Canon Log',\n     'Canon Log 2',\n     'Canon Log 3',\n     'Cineon',\n     'D-Log',\n     'ERIMM RGB',\n     'F-Log',\n     'F-Log2',\n     'Filmic Pro 6',\n     'L-Log',\n     'Log2',\n     'Log3G10',\n     'Log3G12',\n     'N-Log',\n     'PLog',\n     'Panalog',\n     'Protune',\n     'REDLog',\n     'REDLogFilm',\n     'S-Log',\n     'S-Log2',\n     'S-Log3',\n     'T-Log',\n     'V-Log',\n     'ViperLog']\n\nCCTFs Encoding / Decoding\n*************************\n\n.. code-block:: python\n\n    sorted(colour.CCTF_ENCODINGS)\n\n.. code-block:: text\n\n    ['ACEScc',\n     'ACEScct',\n     'ACESproxy',\n     'ARIB STD-B67',\n     'ARRI LogC3',\n     'ARRI LogC4',\n     'Apple Log Profile',\n     'Blackmagic Film Generation 5',\n     'Canon Log',\n     'Canon Log 2',\n     'Canon Log 3',\n     'Cineon',\n     'D-Log',\n     'DCDM',\n     'DICOM GSDF',\n     'DaVinci Intermediate',\n     'ERIMM RGB',\n     'F-Log',\n     'F-Log2',\n     'Filmic Pro 6',\n     'Gamma 2.2',\n     'Gamma 2.4',\n     'Gamma 2.6',\n     'ITU-R BT.1886',\n     'ITU-R BT.2020',\n     'ITU-R BT.2100 HLG',\n     'ITU-R BT.2100 PQ',\n     'ITU-R BT.601',\n     'ITU-R BT.709',\n     'ITU-T H.273 IEC 61966-2',\n     'ITU-T H.273 Log',\n     'ITU-T H.273 Log Sqrt',\n     'ITU-T H.273 ST.428-1',\n     'L-Log',\n     'Log2',\n     'Log3G10',\n     'Log3G12',\n     'N-Log',\n     'PLog',\n     'Panalog',\n     'ProPhoto RGB',\n     'Protune',\n     'REDLog',\n     'REDLogFilm',\n     'RIMM RGB',\n     'ROMM RGB',\n     'S-Log',\n     'S-Log2',\n     'S-Log3',\n     'SMPTE 240M',\n     'ST 2084',\n     'T-Log',\n     'V-Log',\n     'ViperLog',\n     'sRGB']\n\nRecommendation ITU-T H.273 Code points for Video Signal Type Identification\n***************************************************************************\n\n.. code-block:: python\n\n    colour.COLOUR_PRIMARIES_ITUTH273.keys()\n\n.. code-block:: text\n\n    dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 22, 23])\n\n.. code-block:: python\n\n    colour.models.describe_video_signal_colour_primaries(1)\n\n.. code-block:: text\n\n    ===============================================================================\n    *                                                                             *\n    *   Colour Primaries: 1                                                       *\n    *   -------------------                                                       *\n    *                                                                             *\n    *   Primaries        : [[ 0.64  0.33]                                         *\n    *                       [ 0.3   0.6 ]                                         *\n    *                       [ 0.15  0.06]]                                        *\n    *   Whitepoint       : [ 0.3127  0.329 ]                                      *\n    *   Whitepoint Name  : D65                                                    *\n    *   NPM              : [[ 0.4123908   0.35758434  0.18048079]                 *\n    *                       [ 0.21263901  0.71516868  0.07219232]                 *\n    *                       [ 0.01933082  0.11919478  0.95053215]]                *\n    *   NPM -1           : [[ 3.24096994 -1.53738318 -0.49861076]                 *\n    *                       [-0.96924364  1.8759675   0.04155506]                 *\n    *                       [ 0.05563008 -0.20397696  1.05697151]]                *\n    *   FFmpeg Constants : ['AVCOL_PRI_BT709', 'BT709']                           *\n    *                                                                             *\n    ===============================================================================\n\n.. code-block:: python\n\n    colour.TRANSFER_CHARACTERISTICS_ITUTH273.keys()\n\n.. code-block:: text\n\n    dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])\n\n.. code-block:: python\n\n    colour.models.describe_video_signal_transfer_characteristics(1)\n\n.. code-block:: text\n\n    ===============================================================================\n    *                                                                             *\n    *   Transfer Characteristics: 1                                               *\n    *   ---------------------------                                               *\n    *                                                                             *\n    *   Function         : \u003cfunction oetf_BT709 at 0x165bb3550\u003e                   *\n    *   FFmpeg Constants : ['AVCOL_TRC_BT709', 'BT709']                           *\n    *                                                                             *\n    ===============================================================================\n\n.. code-block:: python\n\n    colour.MATRIX_COEFFICIENTS_ITUTH273.keys()\n\n.. code-block:: text\n\n    dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])\n\n.. code-block:: python\n\n    colour.models.describe_video_signal_matrix_coefficients(1)\n\n.. code-block:: text\n\n    ===============================================================================\n    *                                                                             *\n    *   Matrix Coefficients: 1                                                    *\n    *   ----------------------                                                    *\n    *                                                                             *\n    *   Matrix Coefficients : [ 0.2126  0.0722]                                   *\n    *   FFmpeg Constants    : ['AVCOL_SPC_BT709', 'BT709']                        *\n    *                                                                             *\n    ===============================================================================\n\nColour Notation Systems - ``colour.notation``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nMunsell Value\n*************\n\n.. code-block:: python\n\n    colour.munsell_value(12.23634268)\n\n.. code-block:: text\n\n    4.0824437076525664\n\n.. code-block:: python\n\n    sorted(colour.MUNSELL_VALUE_METHODS)\n\n.. code-block:: text\n\n    ['ASTM D1535',\n     'Ladd 1955',\n     'McCamy 1987',\n     'Moon 1943',\n     'Munsell 1933',\n     'Priest 1920',\n     'Saunderson 1944',\n     'astm2008']\n\nMunsell Colour\n**************\n\n.. code-block:: python\n\n    colour.xyY_to_munsell_colour([0.38736945, 0.35751656, 0.59362000])\n\n.. code-block:: text\n\n    '4.2YR 8.1/5.3'\n\n.. code-block:: python\n\n    colour.munsell_colour_to_xyY(\"4.2YR 8.1/5.3\")\n\n.. code-block:: text\n\n    array([ 0.38736945,  0.35751656,  0.59362   ])\n\nOptical Phenomena - ``colour.phenomena``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    colour.sd_rayleigh_scattering()\n\n.. code-block:: text\n\n    SpectralDistribution([[  3.60000000e+02,   5.60246579e-01],\n                          [  3.61000000e+02,   5.53748137e-01],\n                          [  3.62000000e+02,   5.47344692e-01],\n                          ...\n                          [  7.78000000e+02,   2.37790178e-02],\n                          [  7.79000000e+02,   2.36559421e-02],\n                          [  7.80000000e+02,   2.35336632e-02]],\n                         SpragueInterpolator,\n                         {},\n                         Extrapolator,\n                         {'method': 'Constant', 'left': None, 'right': None})\n\nLight Quality - ``colour.quality``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nColour Fidelity Index\n*********************\n\n.. code-block:: python\n\n    colour.colour_fidelity_index(colour.SDS_ILLUMINANTS[\"FL2\"])\n\n.. code-block:: text\n\n    70.120824401428848\n\n.. code-block:: python\n\n    sorted(colour.COLOUR_FIDELITY_INDEX_METHODS)\n\n.. code-block:: text\n\n    ['ANSI/IES TM-30-18', 'CIE 2017']\n\nColour Quality Scale\n********************\n\n.. code-block:: python\n\n    colour.colour_quality_scale(colour.SDS_ILLUMINANTS[\"FL2\"])\n\n.. code-block:: text\n\n    64.111822015662824\n\n.. code-block:: python\n\n    sorted(colour.COLOUR_QUALITY_SCALE_METHODS)\n\n.. code-block:: text\n\n    ['NIST CQS 7.4', 'NIST CQS 9.0']\n\nColour Rendering Index\n**********************\n\n.. code-block:: python\n\n    colour.colour_rendering_index(colour.SDS_ILLUMINANTS[\"FL2\"])\n\n.. code-block:: text\n\n    64.233724121664793\n\n.. code-block:: python\n\n    sorted(colour.COLOUR_RENDERING_INDEX_METHODS)\n\n.. code-block:: text\n\n    ['CIE 1995', 'CIE 2024']\n\nAcademy Spectral Similarity Index (SSI)\n***************************************\n\n.. code-block:: python\n\n    colour.spectral_similarity_index(\n        colour.SDS_ILLUMINANTS[\"C\"], colour.SDS_ILLUMINANTS[\"D65\"]\n    )\n\n.. code-block:: text\n\n    94.0\n\nSpectral Up-Sampling \u0026 Recovery - ``colour.recovery``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReflectance Recovery\n********************\n\n.. code-block:: python\n\n    colour.XYZ_to_sd([0.20654008, 0.12197225, 0.05136952])\n\n.. code-block:: text\n\n    SpectralDistribution([[  3.60000000e+02,   8.52694330e-02],\n                          [  3.65000000e+02,   8.52203359e-02],\n                          [  3.70000000e+02,   8.52841304e-02],\n                          ...\n                          [  7.70000000e+02,   4.46546872e-01],\n                          [  7.75000000e+02,   4.46638451e-01],\n                          [  7.80000000e+02,   4.46641739e-01]],\n                         SpragueInterpolator,\n                         {},\n                         Extrapolator,\n                         {'method': 'Constant', 'left': None, 'right': None})\n\n.. code-block:: python\n\n    sorted(colour.REFLECTANCE_RECOVERY_METHODS)\n\n.. code-block:: text\n\n    ['Jakob 2019', 'Mallett 2019', 'Meng 2015', 'Otsu 2018', 'Smits 1999']\n\nCamera RGB Sensitivities Recovery\n*********************************\n\n.. code-block:: python\n\n    illuminant = colour.colorimetry.SDS_ILLUMINANTS[\"D65\"]\n    sensitivities = colour.characterisation.MSDS_CAMERA_SENSITIVITIES[\"Nikon 5100 (NPL)\"]\n    reflectances = [\n        sd.copy().align(colour.recovery.SPECTRAL_SHAPE_BASIS_FUNCTIONS_DYER2017)\n        for sd in colour.characterisation.SDS_COLOURCHECKERS[\"BabelColor Average\"].values()\n    ]\n    reflectances = colour.colorimetry.sds_and_msds_to_msds(reflectances)\n    RGB = colour.colorimetry.msds_to_XYZ(\n        reflectances,\n        method=\"Integration\",\n        cmfs=sensitivities,\n        illuminant=illuminant,\n        k=0.01,\n        shape=colour.recovery.SPECTRAL_SHAPE_BASIS_FUNCTIONS_DYER2017,\n    )\n    colour.recovery.RGB_to_msds_camera_sensitivities_Jiang2013(\n        RGB,\n        illuminant,\n        reflectances,\n        colour.recovery.BASIS_FUNCTIONS_DYER2017,\n        colour.recovery.SPECTRAL_SHAPE_BASIS_FUNCTIONS_DYER2017,\n    )\n\n.. code-block:: text\n\n    RGB_CameraSensitivities([[  4.00000000e+02,   7.04378461e-03,   9.21260449e-03,\n                               -7.64080878e-03],\n                             [  4.10000000e+02,  -8.76715607e-03,   1.12726694e-02,\n                                6.37434190e-03],\n                             [  4.20000000e+02,   4.58126856e-02,   7.18000418e-02,\n                                4.00001696e-01],\n                             ...\n                             [  6.80000000e+02,   4.00195568e-02,   5.55512389e-03,\n                                1.36794925e-03],\n                             [  6.90000000e+02,  -4.32240535e-03,   2.49731193e-03,\n                                3.80303275e-04],\n                             [  7.00000000e+02,  -6.00395414e-03,   1.54678227e-03,\n                                5.40394352e-04]],\n                            ['red', 'green', 'blue'],\n                            SpragueInterpolator,\n                            {},\n                            Extrapolator,\n                            {'method': 'Constant', 'left': None, 'right': None})\n\nCorrelated Colour Temperature Computation Methods - ``colour.temperature``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    colour.uv_to_CCT([0.1978, 0.3122])\n\n.. code-block:: text\n\n    array([  6.50747479e+03,   3.22334634e-03])\n\n.. code-block:: python\n\n    sorted(colour.UV_TO_CCT_METHODS)\n\n.. code-block:: text\n\n    ['Krystek 1985', 'Ohno 2013', 'Planck 1900', 'Robertson 1968', 'ohno2013', 'robertson1968']\n\n.. code-block:: python\n\n    sorted(colour.XY_TO_CCT_METHODS)\n\n.. code-block:: text\n\n    ['CIE Illuminant D Series',\n     'Hernandez 1999',\n     'Kang 2002',\n     'McCamy 1992',\n     'daylight',\n     'hernandez1999',\n     'kang2002',\n     'mccamy1992']\n\nColour Volume - ``colour.volume``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    colour.RGB_colourspace_volume_MonteCarlo(colour.RGB_COLOURSPACE_RGB[\"sRGB\"])\n\n.. code-block:: text\n\n    821958.30000000005\n\nGeometry Primitives Generation - ``colour.geometry``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    colour.primitive(\"Grid\")\n\n.. code-block:: text\n\n (array([ ([-0.5,  0.5,  0. ], [ 0.,  1.], [ 0.,  0.,  1.], [ 0.,  1.,  0.,  1.]),\n           ([ 0.5,  0.5,  0. ], [ 1.,  1.], [ 0.,  0.,  1.], [ 1.,  1.,  0.,  1.]),\n           ([-0.5, -0.5,  0. ], [ 0.,  0.], [ 0.,  0.,  1.], [ 0.,  0.,  0.,  1.]),\n           ([ 0.5, -0.5,  0. ], [ 1.,  0.], [ 0.,  0.,  1.], [ 1.,  0.,  0.,  1.])],\n          dtype=[('position', '\u003cf4', (3,)), ('uv', '\u003cf4', (2,)), ('normal', '\u003cf4', (3,)), ('colour', '\u003cf4', (4,))]), array([[0, 2, 1],\n           [2, 3, 1]], dtype=uint32), array([[0, 2],\n           [2, 3],\n           [3, 1],\n           [1, 0]], dtype=uint32))\n\n.. code-block:: python\n\n    sorted(colour.PRIMITIVE_METHODS)\n\n.. code-block:: text\n\n    ['Cube', 'Grid']\n\n.. code-block:: python\n\n    colour.primitive_vertices(\"Quad MPL\")\n\n.. code-block:: text\n\n    array([[ 0.,  0.,  0.],\n           [ 1.,  0.,  0.],\n           [ 1.,  1.,  0.],\n           [ 0.,  1.,  0.]])\n    sorted(colour.PRIMITIVE_VERTICES_METHODS)\n    ['Cube MPL', 'Grid MPL', 'Quad MPL', 'Sphere']\n\nPlotting - ``colour.plotting``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nMost of the objects are available from the ``colour.plotting`` namespace:\n\n.. code-block:: python\n\n    from colour.plotting import *\n\n    colour_style()\n\nVisible Spectrum\n****************\n\n.. code-block:: python\n\n    plot_visible_spectrum(\"CIE 1931 2 Degree Standard Observer\")\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Visible_Spectrum.png\n\nSpectral Distribution\n*********************\n\n.. code-block:: python\n\n    plot_single_illuminant_sd(\"FL1\")\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Illuminant_F1_SD.png\n\nBlackbody\n*********\n\n.. code-block:: python\n\n    blackbody_sds = [\n        colour.sd_blackbody(i, colour.SpectralShape(1, 10001, 10))\n        for i in range(1000, 15000, 1000)\n    ]\n    plot_multi_sds(\n        blackbody_sds,\n        y_label=\"W / (sr m$^2$) / m\",\n        plot_kwargs={\"use_sd_colours\": True, \"normalise_sd_colours\": True},\n        legend_location=\"upper right\",\n        bounding_box=(0, 1250, 0, 2.5e6),\n    )\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Blackbodies.png\n\nColour Matching Functions\n*************************\n\n.. code-block:: python\n\n    plot_single_cmfs(\n        \"Stockman \u0026 Sharpe 2 Degree Cone Fundamentals\",\n        y_label=\"Sensitivity\",\n        bounding_box=(390, 870, 0, 1.1),\n    )\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Cone_Fundamentals.png\n\nLuminous Efficiency\n*******************\n\n.. code-block:: python\n\n    sd_mesopic_luminous_efficiency_function = (\n        colour.sd_mesopic_luminous_efficiency_function(0.2)\n    )\n    plot_multi_sds(\n        (\n            sd_mesopic_luminous_efficiency_function,\n            colour.colorimetry.SDS_LEFS_PHOTOPIC[\"CIE 1924 Photopic Standard Observer\"],\n            colour.colorimetry.SDS_LEFS_SCOTOPIC[\"CIE 1951 Scotopic Standard Observer\"],\n        ),\n        y_label=\"Luminous Efficiency\",\n        legend_location=\"upper right\",\n        y_tighten=True,\n        margins=(0, 0, 0, 0.1),\n    )\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Luminous_Efficiency.png\n\nColour Checker\n**************\n\n.. code-block:: python\n\n    from colour.characterisation.dataset.colour_checkers.sds import (\n        COLOURCHECKER_INDEXES_TO_NAMES_MAPPING,\n    )\n\n    plot_multi_sds(\n        [\n            colour.SDS_COLOURCHECKERS[\"BabelColor Average\"][value]\n            for key, value in sorted(COLOURCHECKER_INDEXES_TO_NAMES_MAPPING.items())\n        ],\n        plot_kwargs={\n            \"use_sd_colours\": True,\n        },\n        title=(\"BabelColor Average - \" \"Spectral Distributions\"),\n    )\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_BabelColor_Average.png\n\n.. code-block:: python\n\n    plot_single_colour_checker(\"ColorChecker 2005\", text_kwargs={\"visible\": False})\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_ColorChecker_2005.png\n\nChromaticities Prediction\n*************************\n\n.. code-block:: python\n\n    plot_corresponding_chromaticities_prediction(2, \"Von Kries\", \"Bianco 2010\")\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Chromaticities_Prediction.png\n\nChromaticities\n**************\n\n.. code-block:: python\n\n    import numpy as np\n\n    RGB = np.random.random((32, 32, 3))\n    plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931(\n        RGB,\n        \"ITU-R BT.709\",\n        colourspaces=[\"ACEScg\", \"S-Gamut\", \"Pointer Gamut\"],\n    )\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Chromaticities_CIE_1931_Chromaticity_Diagram.png\n\nColour Rendering Index Bars\n***************************\n\n.. code-block:: python\n\n    plot_single_sd_colour_rendering_index_bars(colour.SDS_ILLUMINANTS[\"FL2\"])\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_CRI.png\n\nANSI/IES TM-30-18 Colour Rendition Report\n*****************************************\n\n.. code-block:: python\n\n    plot_single_sd_colour_rendition_report(colour.SDS_ILLUMINANTS[\"FL2\"])\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Colour_Rendition_Report.png\n\nGamut Section\n*************\n\n.. code-block:: python\n\n    plot_visible_spectrum_section(section_colours=\"RGB\", section_opacity=0.15)\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Plot_Visible_Spectrum_Section.png\n\n.. code-block:: python\n\n    plot_RGB_colourspace_section(\"sRGB\", section_colours=\"RGB\", section_opacity=0.15)\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_Plot_RGB_Colourspace_Section.png\n\nColour Temperature\n******************\n\n.. code-block:: python\n\n    plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS([\"A\", \"B\", \"C\"])\n\n..  image:: https://colour.readthedocs.io/en/develop/_static/Examples_Plotting_CCT_CIE_1960_UCS_Chromaticity_Diagram.png\n\nUser Guide\n----------\n\nInstallation\n~~~~~~~~~~~~\n\n**Colour** and its primary dependencies can be easily installed from the\n`Python Package Index \u003chttps://pypi.org/project/colour-science\u003e`__\nby issuing this command in a shell:\n\n.. code-block:: bash\n\n    $ pip install --user colour-science\n\nThe detailed installation procedure for the secondary dependencies is\ndescribed in the `Installation Guide \u003chttps://www.colour-science.org/installation-guide\u003e`__.\n\n**Colour** is also available for `Anaconda \u003chttps://www.anaconda.com/download\u003e`__\nfrom *Continuum Analytics* via `conda-forge \u003chttps://conda-forge.org\u003e`__:\n\n.. code-block:: bash\n\n    $ conda install -c conda-forge colour-science\n\nTutorial\n~~~~~~~~\n\nThe `static tutorial \u003chttps://colour.readthedocs.io/en/develop/tutorial.html\u003e`__\nprovides an introduction to **Colour**. An interactive version is available via\n`Google Colab \u003chttps://colab.research.google.com/notebook#fileId=1Im9J7or9qyClQCv5sPHmKdyiQbG4898K\u0026offline=true\u0026sandboxMode=true\u003e`__.\n\nHow-To\n~~~~~~\n\nThe `Google Colab How-To \u003chttps://colab.research.google.com/notebook#fileId=1NRcdXSCshivkwoU2nieCvC3y14fx1X4X\u0026offline=true\u0026sandboxMode=true\u003e`__\nguide for **Colour** shows various techniques to solve specific problems and\nhighlights some interesting use cases.\n\nContributing\n~~~~~~~~~~~~\n\nIf you would like to contribute to **Colour**, please refer to the following\n`Contributing \u003chttps://www.colour-science.org/contributing\u003e`__ guide.\n\nChanges\n~~~~~~~\n\nThe changes are viewable on the `Releases \u003chttps://github.com/colour-science/colour/releases\u003e`__ page.\n\nBibliography\n~~~~~~~~~~~~\n\nThe bibliography is available on the `Bibliography \u003chttps://www.colour-science.org/bibliography\u003e`__ page.\n\nIt is also viewable directly from the repository in\n`BibTeX \u003chttps://github.com/colour-science/colour/blob/develop/BIBLIOGRAPHY.bib\u003e`__\nformat.\n\nAPI Reference\n-------------\n\nThe main technical reference for **Colour** is the *API Reference*:\n\n- `Release \u003chttps://colour.readthedocs.io/en/master/reference.html\u003e`__\n- `Develop \u003chttps://colour.readthedocs.io/en/latest/reference.html\u003e`__\n\nSee Also\n--------\n\nSoftware\n~~~~~~~~\n\n**Python**\n\n- `ColorAide \u003chttps://facelessuser.github.io/coloraide\u003e`__ by Muse, I.\n- `ColorPy \u003chttp://markkness.net/colorpy/ColorPy.html\u003e`__ by Kness, M.\n- `Colorspacious \u003chttps://colorspacious.readthedocs.io\u003e`__ by Smith, N. J., et al.\n- `python-colormath \u003chttps://python-colormath.readthedocs.io\u003e`__ by Taylor, G., et al.\n\n**Go**\n\n- `go-colorful \u003chttps://github.com/lucasb-eyer/go-colorful\u003e`__  by Beyer, L., et al.\n\n**.NET**\n\n- `Colourful \u003chttps://github.com/tompazourek/Colourful\u003e`__ by Pažourek, T., et al.\n\n**Julia**\n\n- `Colors.jl \u003chttps://github.com/JuliaGraphics/Colors.jl\u003e`__ by Holy, T., et al.\n\n**Matlab \u0026 Octave**\n\n- `COLORLAB \u003chttps://www.uv.es/vista/vistavalencia/software/colorlab.html\u003e`__ by Malo, J., et al.\n- `Psychtoolbox \u003chttp://psychtoolbox.org\u003e`__ by Brainard, D., et al.\n- `The Munsell and Kubelka-Munk Toolbox \u003chttp://www.munsellcolourscienceforpainters.com/MunsellAndKubelkaMunkToolbox/MunsellAndKubelkaMunkToolbox.html\u003e`__ by Centore, P.\n\nCode of Conduct\n---------------\n\nThe *Code of Conduct*, adapted from the `Contributor Covenant 1.4 \u003chttps://www.contributor-covenant.org/version/1/4/code-of-conduct.html\u003e`__,\nis available on the `Code of Conduct \u003chttps://www.colour-science.org/code-of-conduct\u003e`__ page.\n\nContact \u0026 Social\n----------------\n\nThe *Colour Developers* can be reached via different means:\n\n- `Email \u003cmailto:colour-developers@colour-science.org\u003e`__\n- `Facebook \u003chttps://www.facebook.com/python.colour.science\u003e`__\n- `Github Discussions \u003chttps://github.com/colour-science/colour/discussions\u003e`__\n- `Gitter \u003chttps://gitter.im/colour-science/colour\u003e`__\n- `X \u003chttps://x.com/colour_science\u003e`__\n- `Bluesky \u003chttps://bsky.app/profile/colour-science.bsky.social\u003e`__\n\n.. begin-trim-long-description\n\nThank You!\n----------\n\n.. raw:: html\n\n    \u003ch3 align=\"center\"\u003eCoffee Sponsors\u003c/h3\u003e\n\n.. raw:: html\n\n    \u003ctable\u003e\n        \u003ctbody\u003e\n            \u003ctr\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://opencollective.com/static/images/default-anonymous-logo.svg\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://opencollective.com/static/images/default-anonymous-logo.svg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"\" target=\"_blank\"\u003eAnonymous\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://twitter.com/CLVPTY\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://pbs.twimg.com/profile_images/1828737659918774273/uML8EAPp_400x400.jpg\"\u003e\n                    \u003c/a\u003e\n                    \u003cp\u003e\u003ca href=\"https://twitter.com/CLVPTY\" target=\"_blank\"\u003eCedric Lejeune\u003c/a\u003e\u003c/p\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n                \u003ctd align=\"center\" valign=\"middle\"\u003e\n                    \u003ca href=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\" target=\"_blank\"\u003e\n                        \u003cimg width=\"98px\" src=\"https://dummyimage.com/98x55/f9f9fc/000000.png\u0026text=Your+Logo+Here\"\u003e\n                    \u003c/a\u003e\n                \u003c/td\u003e\n            \u003c/tr\u003e\n        \u003c/tbody\u003e\n    \u003c/table\u003e\n\n.. end-trim-long-description\n\nAbout\n-----\n\n| **Colour** by Colour Developers\n| Copyright 2013 Colour Developers – `colour-developers@colour-science.org \u003ccolour-developers@colour-science.org\u003e`__\n| This software is released under terms of BSD-3-Clause: https://opensource.org/licenses/BSD-3-Clause\n| `https://github.com/colour-science/colour \u003chttps://github.com/colour-science/colour\u003e`__\n","funding_links":["https://opencollective.com/colour-science","https://opencollective.com/guest-b971dc73","https://opencollective.com/joshua-pines"],"categories":["Science","Python","Colors"],"sub_categories":["Visual Python"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolour-science%2Fcolour","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolour-science%2Fcolour","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolour-science%2Fcolour/lists"}