Coverage for quality/tests/test_cqs.py: 100%

29 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-16 22:49 +1300

1"""Define the unit tests for the :mod:`colour.quality.cqs` module.""" 

2 

3from __future__ import annotations 

4 

5import numpy as np 

6 

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 

11 

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" 

18 

19__all__ = [ 

20 "TestColourQualityScale", 

21] 

22 

23 

24class TestColourQualityScale: 

25 """ 

26 Define :func:`colour.quality.cqs.colour_quality_scale` definition unit 

27 tests methods. 

28 """ 

29 

30 def test_colour_quality_scale(self) -> None: 

31 """Test :func:`colour.quality.cqs.colour_quality_scale` definition.""" 

32 

33 np.testing.assert_allclose( 

34 colour_quality_scale(SDS_ILLUMINANTS["FL1"], additional_data=False), 

35 74.982585798279914, 

36 atol=TOLERANCE_ABSOLUTE_TESTS, 

37 ) 

38 

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 ) 

46 

47 np.testing.assert_allclose( 

48 colour_quality_scale(SDS_ILLUMINANTS["FL2"], additional_data=False), 

49 64.111822015662852, 

50 atol=TOLERANCE_ABSOLUTE_TESTS, 

51 ) 

52 

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 ) 

60 

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 ) 

68 

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 ) 

78 

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 ) 

86 

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 ) 

96 

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 ) 

398 

399 specification_t = colour_quality_scale( 

400 SDS_ILLUMINANTS["FL1"], additional_data=True, method="NIST CQS 7.4" 

401 ) 

402 

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 ) 

408 

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 ) 

710 

711 specification_t = colour_quality_scale( 

712 SDS_ILLUMINANTS["FL1"], additional_data=True, method="NIST CQS 9.0" 

713 ) 

714 

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 )