Coverage for colour/quality/tests/test_cqs.py: 100%
29 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
1"""Define the unit tests for the :mod:`colour.quality.cqs` module."""
3from __future__ import annotations
5import numpy as np
7from colour.colorimetry import SDS_ILLUMINANTS, SDS_LIGHT_SOURCES
8from colour.constants import TOLERANCE_ABSOLUTE_TESTS
9from colour.quality import ColourRendering_Specification_CQS, colour_quality_scale
10from colour.quality.cqs import DataColorimetry_VS, DataColourQualityScale_VS
12__author__ = "Colour Developers"
13__copyright__ = "Copyright 2013 Colour Developers"
14__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
15__maintainer__ = "Colour Developers"
16__email__ = "colour-developers@colour-science.org"
17__status__ = "Production"
19__all__ = [
20 "TestColourQualityScale",
21]
24class TestColourQualityScale:
25 """
26 Define :func:`colour.quality.cqs.colour_quality_scale` definition unit
27 tests methods.
28 """
30 def test_colour_quality_scale(self) -> None:
31 """Test :func:`colour.quality.cqs.colour_quality_scale` definition."""
33 np.testing.assert_allclose(
34 colour_quality_scale(SDS_ILLUMINANTS["FL1"], additional_data=False),
35 74.982585798279914,
36 atol=TOLERANCE_ABSOLUTE_TESTS,
37 )
39 np.testing.assert_allclose(
40 colour_quality_scale(
41 SDS_ILLUMINANTS["FL1"], additional_data=False, method="NIST CQS 7.4"
42 ),
43 75.377089740493361,
44 atol=TOLERANCE_ABSOLUTE_TESTS,
45 )
47 np.testing.assert_allclose(
48 colour_quality_scale(SDS_ILLUMINANTS["FL2"], additional_data=False),
49 64.111822015662852,
50 atol=TOLERANCE_ABSOLUTE_TESTS,
51 )
53 np.testing.assert_allclose(
54 colour_quality_scale(
55 SDS_ILLUMINANTS["FL2"], additional_data=False, method="NIST CQS 7.4"
56 ),
57 64.774586908581369,
58 atol=TOLERANCE_ABSOLUTE_TESTS,
59 )
61 np.testing.assert_allclose(
62 colour_quality_scale(
63 SDS_LIGHT_SOURCES["Neodimium Incandescent"], additional_data=False
64 ),
65 89.737456186836681,
66 atol=TOLERANCE_ABSOLUTE_TESTS,
67 )
69 np.testing.assert_allclose(
70 colour_quality_scale(
71 SDS_LIGHT_SOURCES["Neodimium Incandescent"],
72 additional_data=False,
73 method="NIST CQS 7.4",
74 ),
75 87.700300087538821,
76 atol=TOLERANCE_ABSOLUTE_TESTS,
77 )
79 np.testing.assert_allclose(
80 colour_quality_scale(
81 SDS_LIGHT_SOURCES["F32T8/TL841 (Triphosphor)"], additional_data=False
82 ),
83 84.934928463428903,
84 atol=TOLERANCE_ABSOLUTE_TESTS,
85 )
87 np.testing.assert_allclose(
88 colour_quality_scale(
89 SDS_LIGHT_SOURCES["F32T8/TL841 (Triphosphor)"],
90 additional_data=False,
91 method="NIST CQS 7.4",
92 ),
93 83.255457439460713,
94 atol=TOLERANCE_ABSOLUTE_TESTS,
95 )
97 specification_r = ColourRendering_Specification_CQS(
98 name="FL1",
99 Q_a=75.37708974049329,
100 Q_f=76.387614864939863,
101 Q_p=74.266319651754912,
102 Q_g=84.236404852169287,
103 Q_d=84.137299859998564,
104 Q_as={
105 1: DataColourQualityScale_VS(
106 name="VS1",
107 Q_a=77.696843895396597,
108 D_C_ab=-1.4488382159802313,
109 D_E_ab=7.1866560767284948,
110 D_Ep_ab=7.1866560767284948,
111 ),
112 2: DataColourQualityScale_VS(
113 name="VS2",
114 Q_a=98.458786425718415,
115 D_C_ab=2.3828597530721822,
116 D_E_ab=2.4340762421637514,
117 D_Ep_ab=0.49669563100030184,
118 ),
119 3: DataColourQualityScale_VS(
120 name="VS3",
121 Q_a=85.114145145039103,
122 D_C_ab=2.0800948785243278,
123 D_E_ab=5.2279782355370283,
124 D_Ep_ab=4.7963487912771443,
125 ),
126 4: DataColourQualityScale_VS(
127 name="VS4",
128 Q_a=75.996470841598779,
129 D_C_ab=-1.5405082308077453,
130 D_E_ab=7.7347089860761855,
131 D_Ep_ab=7.7347089860761855,
132 ),
133 5: DataColourQualityScale_VS(
134 name="VS5",
135 Q_a=76.592736502399703,
136 D_C_ab=-5.9501334881332397,
137 D_E_ab=7.5425196871488174,
138 D_Ep_ab=7.5425196871488174,
139 ),
140 6: DataColourQualityScale_VS(
141 name="VS6",
142 Q_a=75.700247357264502,
143 D_C_ab=-7.777714756522542,
144 D_E_ab=7.8301903253053968,
145 D_Ep_ab=7.8301903253053968,
146 ),
147 7: DataColourQualityScale_VS(
148 name="VS7",
149 Q_a=74.888666225318985,
150 D_C_ab=-6.7678158335932963,
151 D_E_ab=8.0917938479197353,
152 D_Ep_ab=8.0917938479197353,
153 ),
154 8: DataColourQualityScale_VS(
155 name="VS8",
156 Q_a=85.018563761368782,
157 D_C_ab=-0.69329167385927803,
158 D_E_ab=4.8271479880620198,
159 D_Ep_ab=4.8271479880620198,
160 ),
161 9: DataColourQualityScale_VS(
162 name="VS9",
163 Q_a=95.598698383415993,
164 D_C_ab=3.2171709711080183,
165 D_E_ab=3.5158784941231844,
166 D_Ep_ab=1.4181722490931066,
167 ),
168 10: DataColourQualityScale_VS(
169 name="VS10",
170 Q_a=84.964267430208068,
171 D_C_ab=3.2356461456271859,
172 D_E_ab=5.8258030130410683,
173 D_Ep_ab=4.8446439257231608,
174 ),
175 11: DataColourQualityScale_VS(
176 name="VS11",
177 Q_a=76.736800445076625,
178 D_C_ab=0.87588476209290889,
179 D_E_ab=7.5470837614115442,
180 D_Ep_ab=7.496085590846417,
181 ),
182 12: DataColourQualityScale_VS(
183 name="VS12",
184 Q_a=74.434858693757448,
185 D_C_ab=-1.9423783441654692,
186 D_E_ab=8.238078426246771,
187 D_Ep_ab=8.238078426246771,
188 ),
189 13: DataColourQualityScale_VS(
190 name="VS13",
191 Q_a=71.82010326219509,
192 D_C_ab=-5.7426330500006273,
193 D_E_ab=9.081024809959402,
194 D_Ep_ab=9.081024809959402,
195 ),
196 14: DataColourQualityScale_VS(
197 name="VS14",
198 Q_a=53.401625187360011,
199 D_C_ab=-14.617738406753311,
200 D_E_ab=15.027848279487852,
201 D_Ep_ab=15.027848279487852,
202 ),
203 15: DataColourQualityScale_VS(
204 name="VS15",
205 Q_a=62.672288506573636,
206 D_C_ab=-10.059255730250122,
207 D_E_ab=12.031799070041069,
208 D_Ep_ab=12.031799070041069,
209 ),
210 },
211 colorimetry_data=(
212 (
213 DataColorimetry_VS(
214 name="VS1",
215 XYZ=np.array([0.13183826, 0.09887241, 0.22510560]),
216 Lab=np.array([37.63929023, 27.59987425, -26.20530751]),
217 C=np.array([38.058786112947161]),
218 ),
219 DataColorimetry_VS(
220 name="VS2",
221 XYZ=np.array([0.13061818, 0.10336027, 0.30741529]),
222 Lab=np.array([38.43888224, 23.35252921, -37.81858787]),
223 C=np.array([44.447566961689617]),
224 ),
225 DataColorimetry_VS(
226 name="VS3",
227 XYZ=np.array([0.10089287, 0.09200351, 0.32265558]),
228 Lab=np.array([36.36721207, 11.00392324, -43.53144829]),
229 C=np.array([44.900705083686788]),
230 ),
231 DataColorimetry_VS(
232 name="VS4",
233 XYZ=np.array([0.13339390, 0.15696027, 0.38421714]),
234 Lab=np.array([46.57313273, -9.89411460, -33.95550516]),
235 C=np.array([35.367638235231176]),
236 ),
237 DataColorimetry_VS(
238 name="VS5",
239 XYZ=np.array([0.18662999, 0.24708620, 0.40043676]),
240 Lab=np.array([56.79040832, -23.15964295, -18.30798276]),
241 C=np.array([29.522047597875542]),
242 ),
243 DataColorimetry_VS(
244 name="VS6",
245 XYZ=np.array([0.15843362, 0.24157338, 0.26933196]),
246 Lab=np.array([56.24498076, -36.24891195, -1.43946286]),
247 C=np.array([36.277481597875926]),
248 ),
249 DataColorimetry_VS(
250 name="VS7",
251 XYZ=np.array([0.14991085, 0.24929718, 0.13823961]),
252 Lab=np.array([57.00687838, -44.55799945, 24.99093151]),
253 C=np.array([51.087786926248803]),
254 ),
255 DataColorimetry_VS(
256 name="VS8",
257 XYZ=np.array([0.26141761, 0.36817692, 0.11429088]),
258 Lab=np.array([67.14003019, -33.22377274, 48.66064659]),
259 C=np.array([58.920943658800866]),
260 ),
261 DataColorimetry_VS(
262 name="VS9",
263 XYZ=np.array([0.42410903, 0.52851922, 0.11439812]),
264 Lab=np.array([77.78749106, -22.21024952, 66.98873308]),
265 C=np.array([70.5746806093467]),
266 ),
267 DataColorimetry_VS(
268 name="VS10",
269 XYZ=np.array([0.55367933, 0.62018757, 0.09672217]),
270 Lab=np.array([82.92339395, -8.84301088, 80.99721844]),
271 C=np.array([81.478513954529475]),
272 ),
273 DataColorimetry_VS(
274 name="VS11",
275 XYZ=np.array([0.39755898, 0.39521027, 0.05739407]),
276 Lab=np.array([69.12701310, 6.97471851, 71.51095397]),
277 C=np.array([71.850283480415115]),
278 ),
279 DataColorimetry_VS(
280 name="VS12",
281 XYZ=np.array([0.43757530, 0.38969458, 0.08630191]),
282 Lab=np.array([68.72913590, 20.83589132, 59.86354051]),
283 C=np.array([63.385943630694335]),
284 ),
285 DataColorimetry_VS(
286 name="VS13",
287 XYZ=np.array([0.34657727, 0.27547744, 0.08900676]),
288 Lab=np.array([59.47793328, 31.84647528, 43.02166812]),
289 C=np.array([53.526273138196274]),
290 ),
291 DataColorimetry_VS(
292 name="VS14",
293 XYZ=np.array([0.14271714, 0.09107438, 0.04949461]),
294 Lab=np.array([36.19033157, 40.77665898, 18.34813575]),
295 C=np.array([44.714539058373845]),
296 ),
297 DataColorimetry_VS(
298 name="VS15",
299 XYZ=np.array([0.13593948, 0.09214669, 0.11591665]),
300 Lab=np.array([36.39436371, 35.62220213, -4.79596673]),
301 C=np.array([35.94360278722214]),
302 ),
303 ),
304 (
305 DataColorimetry_VS(
306 name="VS1",
307 XYZ=np.array([0.15205130, 0.10842697, 0.21629425]),
308 Lab=np.array([39.31425803, 32.98285941, -21.74818073]),
309 C=np.array([39.507624328927392]),
310 ),
311 DataColorimetry_VS(
312 name="VS2",
313 XYZ=np.array([0.13187179, 0.10619377, 0.29945481]),
314 Lab=np.array([38.93186373, 22.05038057, -35.82206456]),
315 C=np.array([42.064707208617435]),
316 ),
317 DataColorimetry_VS(
318 name="VS3",
319 XYZ=np.array([0.10123263, 0.09853741, 0.32956604]),
320 Lab=np.array([37.57864252, 6.04766746, -42.39139508]),
321 C=np.array([42.82061020516246]),
322 ),
323 DataColorimetry_VS(
324 name="VS4",
325 XYZ=np.array([0.13144454, 0.16803553, 0.39315864]),
326 Lab=np.array([48.01155296, -17.36604069, -32.56734417]),
327 C=np.array([36.908146466038922]),
328 ),
329 DataColorimetry_VS(
330 name="VS5",
331 XYZ=np.array([0.18145723, 0.25845953, 0.41319313]),
332 Lab=np.array([57.89053983, -30.61152779, -17.92233237]),
333 C=np.array([35.472181086008781]),
334 ),
335 DataColorimetry_VS(
336 name="VS6",
337 XYZ=np.array([0.15184114, 0.25076481, 0.28160235]),
338 Lab=np.array([57.14986362, -44.01984887, -1.76443512]),
339 C=np.array([44.055196354398468]),
340 ),
341 DataColorimetry_VS(
342 name="VS7",
343 XYZ=np.array([0.13956282, 0.25328776, 0.14470413]),
344 Lab=np.array([57.39436644, -52.59240053, 24.11037488]),
345 C=np.array([57.8556027598421]),
346 ),
347 DataColorimetry_VS(
348 name="VS8",
349 XYZ=np.array([0.24672357, 0.36210726, 0.11976641]),
350 Lab=np.array([66.68062145, -37.45331629, 46.38001890]),
351 C=np.array([59.614235332660144]),
352 ),
353 DataColorimetry_VS(
354 name="VS9",
355 XYZ=np.array([0.40820163, 0.50861708, 0.11894288]),
356 Lab=np.array([76.59516365, -21.90847578, 63.69499819]),
357 C=np.array([67.357509638238682]),
358 ),
359 DataColorimetry_VS(
360 name="VS10",
361 XYZ=np.array([0.56036726, 0.60569219, 0.10169199]),
362 Lab=np.array([82.14661230, -3.82032735, 78.14954550]),
363 C=np.array([78.24286780890229]),
364 ),
365 DataColorimetry_VS(
366 name="VS11",
367 XYZ=np.array([0.40540651, 0.38003446, 0.05753983]),
368 Lab=np.array([68.02315451, 14.17690044, 69.54409225]),
369 C=np.array([70.974398718322206]),
370 ),
371 DataColorimetry_VS(
372 name="VS12",
373 XYZ=np.array([0.45407809, 0.37920609, 0.08621297]),
374 Lab=np.array([67.96206127, 28.93563884, 58.57062794]),
375 C=np.array([65.328321974859804]),
376 ),
377 DataColorimetry_VS(
378 name="VS13",
379 XYZ=np.array([0.37207030, 0.27413935, 0.08882217]),
380 Lab=np.array([59.35552778, 40.92542311, 42.87088737]),
381 C=np.array([59.268906188196901]),
382 ),
383 DataColorimetry_VS(
384 name="VS14",
385 XYZ=np.array([0.19307398, 0.11049957, 0.04883445]),
386 Lab=np.array([39.66448332, 53.96576475, 24.65796798]),
387 C=np.array([59.332277465127156]),
388 ),
389 DataColorimetry_VS(
390 name="VS15",
391 XYZ=np.array([0.17306027, 0.10700056, 0.11280793]),
392 Lab=np.array([39.07062485, 45.99788526, 0.67641984]),
393 C=np.array([46.002858517472262]),
394 ),
395 ),
396 ),
397 )
399 specification_t = colour_quality_scale(
400 SDS_ILLUMINANTS["FL1"], additional_data=True, method="NIST CQS 7.4"
401 )
403 np.testing.assert_allclose(
404 [data.Q_a for _index, data in sorted(specification_r.Q_as.items())],
405 [data.Q_a for _index, data in sorted(specification_t.Q_as.items())],
406 atol=TOLERANCE_ABSOLUTE_TESTS,
407 )
409 specification_r = ColourRendering_Specification_CQS(
410 name="FL1",
411 Q_a=74.982585798279871,
412 Q_f=75.945236961962692,
413 Q_p=None,
414 Q_g=83.880315530074398,
415 Q_d=None,
416 Q_as={
417 1: DataColourQualityScale_VS(
418 name="VS1",
419 Q_a=51.966399639139652,
420 D_C_ab=-14.617735662894113,
421 D_E_ab=15.027845447317082,
422 D_Ep_ab=15.027845447317082,
423 ),
424 2: DataColourQualityScale_VS(
425 name="VS2",
426 Q_a=70.949015257799516,
427 D_C_ab=-5.742631494382664,
428 D_E_ab=9.0810254398122403,
429 D_Ep_ab=9.0810254398122403,
430 ),
431 3: DataColourQualityScale_VS(
432 name="VS3",
433 Q_a=74.662762947552991,
434 D_C_ab=-0.18830304572394141,
435 D_E_ab=7.9196747607137059,
436 D_Ep_ab=7.9196747607137059,
437 ),
438 4: DataColourQualityScale_VS(
439 name="VS4",
440 Q_a=85.532024779429392,
441 D_C_ab=2.6056579409845568,
442 D_E_ab=5.2188636120497893,
443 D_Ep_ab=4.5218452091774983,
444 ),
445 5: DataColourQualityScale_VS(
446 name="VS5",
447 Q_a=95.462563991193164,
448 D_C_ab=3.2171678090164875,
449 D_E_ab=3.5158755402235844,
450 D_Ep_ab=1.4181720992074747,
451 ),
452 6: DataColourQualityScale_VS(
453 name="VS6",
454 Q_a=84.55525422632698,
455 D_C_ab=-0.69329228720708613,
456 D_E_ab=4.8271478805630519,
457 D_Ep_ab=4.8271478805630519,
458 ),
459 7: DataColourQualityScale_VS(
460 name="VS7",
461 Q_a=74.112296060906786,
462 D_C_ab=-6.7678218514458237,
463 D_E_ab=8.0917968864976295,
464 D_Ep_ab=8.0917968864976295,
465 ),
466 8: DataColourQualityScale_VS(
467 name="VS8",
468 Q_a=74.948915115579581,
469 D_C_ab=-7.7777262876453435,
470 D_E_ab=7.8302017501424785,
471 D_Ep_ab=7.8302017501424785,
472 ),
473 9: DataColourQualityScale_VS(
474 name="VS9",
475 Q_a=75.868964954677168,
476 D_C_ab=-5.9501389861388283,
477 D_E_ab=7.5425333918134534,
478 D_Ep_ab=7.5425333918134534,
479 ),
480 10: DataColourQualityScale_VS(
481 name="VS10",
482 Q_a=75.254253773456256,
483 D_C_ab=-1.540504353515054,
484 D_E_ab=7.7347311479094465,
485 D_Ep_ab=7.7347311479094465,
486 ),
487 11: DataColourQualityScale_VS(
488 name="VS11",
489 Q_a=78.159233353416667,
490 D_C_ab=1.7422491866669034,
491 D_E_ab=7.0453200659888839,
492 D_Ep_ab=6.8265000259125559,
493 ),
494 12: DataColourQualityScale_VS(
495 name="VS12",
496 Q_a=92.007574903997778,
497 D_C_ab=2.8431539673587451,
498 D_E_ab=3.7846096930430031,
499 D_Ep_ab=2.4979483674742524,
500 ),
501 13: DataColourQualityScale_VS(
502 name="VS13",
503 Q_a=81.483789597909151,
504 D_C_ab=-0.0084301917293103656,
505 D_E_ab=5.7872196432106016,
506 D_Ep_ab=5.7872196432106016,
507 ),
508 14: DataColourQualityScale_VS(
509 name="VS14",
510 Q_a=76.536988871102693,
511 D_C_ab=-5.0697802563888956,
512 D_E_ab=7.3336734748351624,
513 D_Ep_ab=7.3336734748351624,
514 ),
515 15: DataColourQualityScale_VS(
516 name="VS15",
517 Q_a=65.429713405731931,
518 D_C_ab=-9.4962363392015661,
519 D_E_ab=10.807718438492838,
520 D_Ep_ab=10.807718438492838,
521 ),
522 },
523 colorimetry_data=(
524 (
525 DataColorimetry_VS(
526 name="VS1",
527 XYZ=np.array([0.14271715, 0.09107438, 0.04949462]),
528 Lab=np.array([36.19033159, 40.77666015, 18.34813122]),
529 C=np.array([44.714538268056295]),
530 ),
531 DataColorimetry_VS(
532 name="VS2",
533 XYZ=np.array([0.34657727, 0.27547744, 0.08900676]),
534 Lab=np.array([59.47793328, 31.84647553, 43.02166698]),
535 C=np.array([53.526272364542265]),
536 ),
537 DataColorimetry_VS(
538 name="VS3",
539 XYZ=np.array([0.41050103, 0.38688447, 0.06613576]),
540 Lab=np.array([68.52498199, 13.58373774, 66.83110597]),
541 C=np.array([68.197614738277153]),
542 ),
543 DataColorimetry_VS(
544 name="VS4",
545 XYZ=np.array([0.45427132, 0.50401485, 0.08193287]),
546 Lab=np.array([76.31503360, -7.01311937, 74.42292542]),
547 C=np.array([74.752629859451574]),
548 ),
549 DataColorimetry_VS(
550 name="VS5",
551 XYZ=np.array([0.42410903, 0.52851922, 0.11439811]),
552 Lab=np.array([77.78749106, -22.21024992, 66.98873490]),
553 C=np.array([70.574682470722237]),
554 ),
555 DataColorimetry_VS(
556 name="VS6",
557 XYZ=np.array([0.26141761, 0.36817692, 0.11429088]),
558 Lab=np.array([67.14003019, -33.22377278, 48.66064673]),
559 C=np.array([58.920943801328043]),
560 ),
561 DataColorimetry_VS(
562 name="VS7",
563 XYZ=np.array([0.14991085, 0.24929718, 0.13823960]),
564 Lab=np.array([57.00687837, -44.55800078, 24.99093412]),
565 C=np.array([51.087789364109447]),
566 ),
567 DataColorimetry_VS(
568 name="VS8",
569 XYZ=np.array([0.15843361, 0.24157338, 0.26933192]),
570 Lab=np.array([56.24498073, -36.24891645, -1.43945699]),
571 C=np.array([36.277485856650493]),
572 ),
573 DataColorimetry_VS(
574 name="VS9",
575 XYZ=np.array([0.18662998, 0.24708620, 0.40043672]),
576 Lab=np.array([56.79040828, -23.15964795, -18.30797717]),
577 C=np.array([29.522048055967336]),
578 ),
579 DataColorimetry_VS(
580 name="VS10",
581 XYZ=np.array([0.13339389, 0.15696027, 0.38421709]),
582 Lab=np.array([46.57313267, -9.89412218, -33.95549821]),
583 C=np.array([35.367633681665495]),
584 ),
585 DataColorimetry_VS(
586 name="VS11",
587 XYZ=np.array([0.09900743, 0.09954465, 0.32039098]),
588 Lab=np.array([37.76058147, 3.51413565, -40.81527590]),
589 C=np.array([40.966277550944625]),
590 ),
591 DataColorimetry_VS(
592 name="VS12",
593 XYZ=np.array([0.11576390, 0.09613722, 0.31928926]),
594 Lab=np.array([37.14003664, 18.77460935, -41.73197608]),
595 C=np.array([45.760723157938472]),
596 ),
597 DataColorimetry_VS(
598 name="VS13",
599 XYZ=np.array([0.20975356, 0.16847879, 0.37267453]),
600 Lab=np.array([48.06778877, 25.97523691, -29.94366223]),
601 C=np.array([39.640078711661452]),
602 ),
603 DataColorimetry_VS(
604 name="VS14",
605 XYZ=np.array([0.32298108, 0.24163045, 0.36212750]),
606 Lab=np.array([56.25066973, 37.45976513, -14.49801776]),
607 C=np.array([40.167480906459893]),
608 ),
609 DataColorimetry_VS(
610 name="VS15",
611 XYZ=np.array([0.22039693, 0.15371392, 0.17553541]),
612 Lab=np.array([46.13873255, 39.31630210, -2.10769974]),
613 C=np.array([39.372757193029329]),
614 ),
615 ),
616 (
617 DataColorimetry_VS(
618 name="VS1",
619 XYZ=np.array([0.19307399, 0.11049957, 0.04883449]),
620 Lab=np.array([39.66448335, 53.96576813, 24.65795205]),
621 C=np.array([59.332273930950407]),
622 ),
623 DataColorimetry_VS(
624 name="VS2",
625 XYZ=np.array([0.37207030, 0.27413935, 0.08882218]),
626 Lab=np.array([59.35552779, 40.92542394, 42.87088336]),
627 C=np.array([59.268903858924929]),
628 ),
629 DataColorimetry_VS(
630 name="VS3",
631 XYZ=np.array([0.42080177, 0.37272049, 0.06618662]),
632 Lab=np.array([67.48063529, 21.22017785, 65.01028998]),
633 C=np.array([68.385917784001094]),
634 ),
635 DataColorimetry_VS(
636 name="VS4",
637 XYZ=np.array([0.46201298, 0.49481812, 0.08588402]),
638 Lab=np.array([75.75009449, -2.36998858, 72.10803500]),
639 C=np.array([72.146971918467017]),
640 ),
641 DataColorimetry_VS(
642 name="VS5",
643 XYZ=np.array([0.40820163, 0.50861708, 0.11894286]),
644 Lab=np.array([76.59516364, -21.90847694, 63.69500310]),
645 C=np.array([67.35751466170575]),
646 ),
647 DataColorimetry_VS(
648 name="VS6",
649 XYZ=np.array([0.24672357, 0.36210726, 0.11976641]),
650 Lab=np.array([66.68062144, -37.45331655, 46.38001966]),
651 C=np.array([59.614236088535129]),
652 ),
653 DataColorimetry_VS(
654 name="VS7",
655 XYZ=np.array([0.13956281, 0.25328776, 0.14470409]),
656 Lab=np.array([57.39436642, -52.59240564, 24.11038403]),
657 C=np.array([57.855611215555271]),
658 ),
659 DataColorimetry_VS(
660 name="VS8",
661 XYZ=np.array([0.15184111, 0.25076481, 0.28160222]),
662 Lab=np.array([57.14986354, -44.01986548, -1.76441495]),
663 C=np.array([44.055212144295837]),
664 ),
665 DataColorimetry_VS(
666 name="VS9",
667 XYZ=np.array([0.18145720, 0.25845953, 0.41319296]),
668 Lab=np.array([57.89053974, -30.61154597, -17.92231311]),
669 C=np.array([35.472187042106164]),
670 ),
671 DataColorimetry_VS(
672 name="VS10",
673 XYZ=np.array([0.13144449, 0.16803553, 0.39315843]),
674 Lab=np.array([48.01155280, -17.36606803, -32.56732004]),
675 C=np.array([36.908138035180549]),
676 ),
677 DataColorimetry_VS(
678 name="VS11",
679 XYZ=np.array([0.09725029, 0.10655822, 0.32331756]),
680 Lab=np.array([38.99463289, -3.20501320, -39.09286753]),
681 C=np.array([39.224028364277721]),
682 ),
683 DataColorimetry_VS(
684 name="VS12",
685 XYZ=np.array([0.11497971, 0.09965866, 0.31509326]),
686 Lab=np.array([37.78109906, 15.45054732, -40.03995920]),
687 C=np.array([42.917569190579727]),
688 ),
689 DataColorimetry_VS(
690 name="VS13",
691 XYZ=np.array([0.23125767, 0.17972670, 0.36038776]),
692 Lab=np.array([49.46294201, 29.95248104, -25.97793559]),
693 C=np.array([39.648508903390763]),
694 ),
695 DataColorimetry_VS(
696 name="VS14",
697 XYZ=np.array([0.35887695, 0.25609884, 0.35518732]),
698 Lab=np.array([57.66488716, 43.83765559, -11.16556087]),
699 C=np.array([45.237261162848789]),
700 ),
701 DataColorimetry_VS(
702 name="VS15",
703 XYZ=np.array([0.26552457, 0.17192965, 0.17300682]),
704 Lab=np.array([48.50225789, 48.80528996, 2.49443403]),
705 C=np.array([48.868993532230895]),
706 ),
707 ),
708 ),
709 )
711 specification_t = colour_quality_scale(
712 SDS_ILLUMINANTS["FL1"], additional_data=True, method="NIST CQS 9.0"
713 )
715 np.testing.assert_allclose(
716 [data.Q_a for _index, data in sorted(specification_r.Q_as.items())],
717 [data.Q_a for _index, data in sorted(specification_t.Q_as.items())],
718 atol=TOLERANCE_ABSOLUTE_TESTS,
719 )