def test_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition. """ np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( np.array([0.07049534, 0.10080000, 0.09558313]) * 100, np.array([1.09846607, 1.00000000, 0.35582280]) * 100, np.array([0.95042855, 1.00000000, 1.08890037]) * 100, 200), np.array([8.35782287, 10.21428897, 29.25065668]), decimal=7) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( np.array([0.47097710, 0.34950000, 0.11301649]) * 100, np.array([0.99092745, 1.00000000, 0.85313273]) * 100, np.array([1.01679082, 1.00000000, 0.67610122]) * 100, 200), np.array([49.00577034, 35.03909328, 8.95647114]), decimal=7) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( np.array([0.25506814, 0.19150000, 0.08849752]) * 100, np.array([0.98070597, 1.00000000, 1.18224949]) * 100, np.array([0.92833635, 1.00000000, 1.03664720]) * 100, 200), np.array([24.79473034, 19.13024207, 7.75984317]), decimal=7)
def test_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition. """ np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( np.array([19.53, 23.07, 24.97]), np.array([111.15, 100.00, 35.20]), np.array([94.81, 100.00, 107.30]), 200), np.array([23.32526349, 23.32455819, 76.11593750]), decimal=7) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( np.array([0.14222010, 0.23042768, 0.10495772]) * 100, np.array([0.95045593, 1.00000000, 1.08905775]) * 100, np.array([1.09846607, 1.00000000, 0.35582280]) * 100, 200), np.array([19.28089326, 22.91583715, 3.42923503]), decimal=7) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( np.array([0.07818780, 0.06157201, 0.28099326]) * 100, np.array([0.95045593, 1.00000000, 1.08905775]) * 100, np.array([0.99144661, 1.00000000, 0.67315942]) * 100, 200), np.array([6.35093475, 6.13061347, 17.36852430]), decimal=7)
def test_nan_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition nan support. """ cases = [-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan] cases = set(permutations(cases * 3, r=3)) for case in cases: XYZ_1 = np.array(case) XYZ_n = np.array(case) XYZ_r = np.array(case) Y_n = case[0] chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n)
def corresponding_chromaticities_prediction_Fairchild1990(experiment=1, **kwargs): """ Returns the corresponding chromaticities prediction for Fairchild (1990) chromatic adaptation model. Parameters ---------- experiment : integer, optional {1, 2, 3, 4, 6, 8, 9, 11, 12} Breneman (1987) experiment number. \**kwargs : dict, optional Keywords arguments. Returns ------- tuple Corresponding chromaticities prediction. Examples -------- >>> from pprint import pprint >>> pr = corresponding_chromaticities_prediction_Fairchild1990(2) >>> pr = [(p.uvp_m, p.uvp_p) for p in pr] >>> pprint(pr) # doctest: +SKIP [((0.207, 0.486), (0.2089528677990308, 0.47240345174230519)), ((0.449, 0.511), (0.43756528098582792, 0.51210303139041924)), ((0.263, 0.505), (0.26213623665658092, 0.49725385033264224)), ((0.322, 0.545), (0.3235312762825191, 0.54756652922585702)), ((0.316, 0.537), (0.3151390992740366, 0.53983332031574016)), ((0.265, 0.553), (0.26347459238415272, 0.55443357809543037)), ((0.221, 0.538), (0.22115956537655593, 0.53244703908294599)), ((0.135, 0.532), (0.13969494108553854, 0.52072342107668024)), ((0.145, 0.472), (0.1512288710743511, 0.45330415352961834)), ((0.163, 0.331), (0.17156913711903982, 0.30262647410866889)), ((0.176, 0.431), (0.18257922398137369, 0.40778921192793854)), ((0.244, 0.349), (0.24189049501108895, 0.34134012046930529))] """ experiment_results = list(BRENEMAN_EXPERIMENTS.get(experiment)) illuminants = experiment_results.pop(0) XYZ_n = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_t)) * 100 XYZ_r = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_m)) * 100 xy_r = XYZ_to_xy(XYZ_r) Y_n = BRENEMAN_EXPERIMENTS_PRIMARIES_CHROMATICITIES.get(experiment).Y prediction = [] for result in experiment_results: XYZ_1 = xy_to_XYZ(Luv_uv_to_xy(result.uvp_t)) * 100 XYZ_2 = chromatic_adaptation_Fairchild1990( XYZ_1, XYZ_n, XYZ_r, Y_n) uvp = Luv_to_uv(XYZ_to_Luv(XYZ_2, xy_r), xy_r) prediction.append(CorrespondingChromaticitiesPrediction( result.name, result.uvp_t, result.uvp_m, uvp)) return tuple(prediction)
def corresponding_chromaticities_prediction_Fairchild1990(experiment=1): """ Returns the corresponding chromaticities prediction for *Fairchild (1990)* chromatic adaptation model. Parameters ---------- experiment : integer, optional {1, 2, 3, 4, 6, 8, 9, 11, 12} *Breneman (1987)* experiment number. Returns ------- tuple Corresponding chromaticities prediction. References ---------- :cite:`Breneman1987b`, :cite:`Fairchild1991a`, :cite:`Fairchild2013s` Examples -------- >>> from pprint import pprint >>> pr = corresponding_chromaticities_prediction_Fairchild1990(2) >>> pr = [(p.uvp_m, p.uvp_p) for p in pr] >>> pprint(pr) # doctest: +SKIP [((0.207, 0.486), (0.2089528..., 0.4724034...)), ((0.449, 0.511), (0.4375652..., 0.5121030...)), ((0.263, 0.505), (0.2621362..., 0.4972538...)), ((0.322, 0.545), (0.3235312..., 0.5475665...)), ((0.316, 0.537), (0.3151390..., 0.5398333...)), ((0.265, 0.553), (0.2634745..., 0.5544335...)), ((0.221, 0.538), (0.2211595..., 0.5324470...)), ((0.135, 0.532), (0.1396949..., 0.5207234...)), ((0.145, 0.472), (0.1512288..., 0.4533041...)), ((0.163, 0.331), (0.1715691..., 0.3026264...)), ((0.176, 0.431), (0.1825792..., 0.4077892...)), ((0.244, 0.349), (0.2418904..., 0.3413401...))] """ with domain_range_scale(1): experiment_results = list(BRENEMAN_EXPERIMENTS[experiment]) illuminants = experiment_results.pop(0) XYZ_n = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_t)) XYZ_r = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_m)) xy_r = XYZ_to_xy(XYZ_r) Y_n = BRENEMAN_EXPERIMENTS_PRIMARIES_CHROMATICITIES[experiment].Y prediction = [] for result in experiment_results: XYZ_1 = xy_to_XYZ(Luv_uv_to_xy(result.uvp_t)) XYZ_2 = chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n) uvp = Luv_to_uv(XYZ_to_Luv(XYZ_2, xy_r), xy_r) prediction.append( CorrespondingChromaticitiesPrediction( result.name, result.uvp_t, result.uvp_m, uvp)) return tuple(prediction)
def corresponding_chromaticities_prediction_Fairchild1990(experiment=1, **kwargs): """ Returns the corresponding chromaticities prediction for Fairchild (1990) chromatic adaptation model. Parameters ---------- experiment : integer, optional {1, 2, 3, 4, 6, 8, 9, 11, 12} Breneman (1987) experiment number. \*\*kwargs : \*\* Keywords arguments. Returns ------- tuple Corresponding chromaticities prediction. Examples -------- >>> from pprint import pprint >>> pr = corresponding_chromaticities_prediction_Fairchild1990(2) >>> pr = [(p.uvp_m, p.uvp_p) for p in pr] >>> pprint(pr) # doctest: +SKIP [((0.207, 0.486), (0.2089528677990308, 0.47240345174230519)), ((0.449, 0.511), (0.43756528098582792, 0.51210303139041924)), ((0.263, 0.505), (0.26213623665658092, 0.49725385033264224)), ((0.322, 0.545), (0.3235312762825191, 0.54756652922585702)), ((0.316, 0.537), (0.3151390992740366, 0.53983332031574016)), ((0.265, 0.553), (0.26347459238415272, 0.55443357809543037)), ((0.221, 0.538), (0.22115956537655593, 0.53244703908294599)), ((0.135, 0.532), (0.13969494108553854, 0.52072342107668024)), ((0.145, 0.472), (0.1512288710743511, 0.45330415352961834)), ((0.163, 0.331), (0.17156913711903982, 0.30262647410866889)), ((0.176, 0.431), (0.18257922398137369, 0.40778921192793854)), ((0.244, 0.349), (0.24189049501108895, 0.34134012046930529))] """ experiment_results = list(BRENEMAN_EXPERIMENTS.get(experiment)) illuminants = experiment_results.pop(0) XYZ_n = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_t)) * 100 XYZ_r = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_m)) * 100 xy_r = XYZ_to_xy(XYZ_r) Y_n = BRENEMAN_EXPERIMENTS_PRIMARIES_CHROMATICITIES.get(experiment).Y prediction = [] for result in experiment_results: XYZ_1 = xy_to_XYZ(Luv_uv_to_xy(result.uvp_t)) * 100 XYZ_2 = chromatic_adaptation_Fairchild1990( XYZ_1, XYZ_n, XYZ_r, Y_n) uvp = Luv_to_uv(XYZ_to_Luv(XYZ_2, xy_r), xy_r) prediction.append(CorrespondingChromaticitiesPrediction( result.name, result.uvp_t, result.uvp_m, uvp)) return tuple(prediction)
def test_nan_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition nan support. """ cases = [-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan] cases = set(permutations(cases * 3, r=3)) for case in cases: XYZ_1 = np.array(case) XYZ_n = np.array(case) XYZ_r = np.array(case) Y_n = case[0] try: chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n) except np.linalg.linalg.LinAlgError: pass
def corresponding_chromaticities_prediction_Fairchild1990(experiment=1): """ Returns the corresponding chromaticities prediction for Fairchild (1990) chromatic adaptation model. Parameters ---------- experiment : integer, optional {1, 2, 3, 4, 6, 8, 9, 11, 12} Breneman (1987) experiment number. Returns ------- tuple Corresponding chromaticities prediction. Examples -------- >>> from pprint import pprint >>> pr = corresponding_chromaticities_prediction_Fairchild1990(2) >>> pr = [(p.uvp_m, p.uvp_p) for p in pr] >>> pprint(pr) # doctest: +SKIP [((0.207, 0.486), (0.2089528..., 0.4724034...)), ((0.449, 0.511), (0.4375652..., 0.5121030...)), ((0.263, 0.505), (0.2621362..., 0.4972538...)), ((0.322, 0.545), (0.3235312..., 0.5475665...)), ((0.316, 0.537), (0.3151390..., 0.5398333...)), ((0.265, 0.553), (0.2634745..., 0.5544335...)), ((0.221, 0.538), (0.2211595..., 0.5324470...)), ((0.135, 0.532), (0.1396949..., 0.5207234...)), ((0.145, 0.472), (0.1512288..., 0.4533041...)), ((0.163, 0.331), (0.1715691..., 0.3026264...)), ((0.176, 0.431), (0.1825792..., 0.4077892...)), ((0.244, 0.349), (0.2418904..., 0.3413401...))] """ experiment_results = list(BRENEMAN_EXPERIMENTS.get(experiment)) illuminants = experiment_results.pop(0) XYZ_n = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_t)) * 100 XYZ_r = xy_to_XYZ(Luv_uv_to_xy(illuminants.uvp_m)) * 100 xy_r = XYZ_to_xy(XYZ_r) Y_n = BRENEMAN_EXPERIMENTS_PRIMARIES_CHROMATICITIES.get(experiment).Y prediction = [] for result in experiment_results: XYZ_1 = xy_to_XYZ(Luv_uv_to_xy(result.uvp_t)) * 100 XYZ_2 = chromatic_adaptation_Fairchild1990( XYZ_1, XYZ_n, XYZ_r, Y_n) uvp = Luv_to_uv(XYZ_to_Luv(XYZ_2, xy_r), xy_r) prediction.append(CorrespondingChromaticitiesPrediction( result.name, result.uvp_t, result.uvp_m, uvp)) return tuple(prediction)
def test_domain_range_scale_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition domain and range scale support. """ XYZ_1 = np.array([19.53, 23.07, 24.97]) XYZ_n = np.array([111.15, 100.00, 35.20]) XYZ_r = np.array([94.81, 100.00, 107.30]) Y_n = 200 XYZ_c = chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n) d_r = (('reference', 1), (1, 0.01), (100, 1)) for scale, factor in d_r: with domain_range_scale(scale): np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990( XYZ_1 * factor, XYZ_n * factor, XYZ_r * factor, Y_n), XYZ_c * factor, decimal=7)
def test_nan_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition nan support. """ cases = [-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan] cases = set(permutations(cases * 3, r=3)) for case in cases: XYZ_1 = np.array(case) XYZ_n = np.array(case) XYZ_r = np.array(case) Y_n = case[0] try: chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n) except np.linalg.linalg.LinAlgError: import traceback from colour.utilities import warning warning(traceback.format_exc())
def test_n_dimensional_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.chromatic_adaptation_Fairchild1990` # noqa definition n-dimensional arrays support. """ XYZ_1 = np.array([19.53, 23.07, 24.97]) XYZ_n = np.array([111.15, 100.00, 35.20]) XYZ_r = np.array([94.81, 100.00, 107.30]) Y_n = 200 XYZ_c = np.array([23.32526349, 23.32455819, 76.11593750]) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7) XYZ_1 = np.tile(XYZ_1, (6, 1)) XYZ_c = np.tile(XYZ_c, (6, 1)) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7) XYZ_n = np.tile(XYZ_n, (6, 1)) XYZ_r = np.tile(XYZ_r, (6, 1)) Y_n = np.tile(Y_n, 6) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7) XYZ_1 = np.reshape(XYZ_1, (2, 3, 3)) XYZ_n = np.reshape(XYZ_n, (2, 3, 3)) XYZ_r = np.reshape(XYZ_r, (2, 3, 3)) Y_n = np.reshape(Y_n, (2, 3)) XYZ_c = np.reshape(XYZ_c, (2, 3, 3)) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7)
def test_nan_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.chromatic_adaptation_Fairchild1990` # noqa definition nan support. """ cases = [-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan] cases = set(permutations(cases * 3, r=3)) for case in cases: XYZ_1 = np.array(case) XYZ_n = np.array(case) XYZ_r = np.array(case) Y_n = case[0] try: chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n) except np.linalg.linalg.LinAlgError: import traceback from colour.utilities import warning warning(traceback.format_exc())
def test_n_dimensional_chromatic_adaptation_Fairchild1990(self): """ Tests :func:`colour.adaptation.fairchild1990.\ chromatic_adaptation_Fairchild1990` definition n-dimensional arrays support. """ XYZ_1 = np.array([19.53, 23.07, 24.97]) XYZ_n = np.array([111.15, 100.00, 35.20]) XYZ_r = np.array([94.81, 100.00, 107.30]) Y_n = 200 XYZ_c = np.array([23.32526349, 23.32455819, 76.11593750]) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7) XYZ_1 = np.tile(XYZ_1, (6, 1)) XYZ_c = np.tile(XYZ_c, (6, 1)) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7) XYZ_n = np.tile(XYZ_n, (6, 1)) XYZ_r = np.tile(XYZ_r, (6, 1)) Y_n = np.tile(Y_n, 6) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7) XYZ_1 = np.reshape(XYZ_1, (2, 3, 3)) XYZ_n = np.reshape(XYZ_n, (2, 3, 3)) XYZ_r = np.reshape(XYZ_r, (2, 3, 3)) Y_n = np.reshape(Y_n, (2, 3)) XYZ_c = np.reshape(XYZ_c, (2, 3, 3)) np.testing.assert_almost_equal( chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_n, XYZ_r, Y_n), XYZ_c, decimal=7)
def corresponding_chromaticities_prediction_Fairchild1990(experiment=1): """ Returns the corresponding chromaticities prediction for *Fairchild (1990)* chromatic adaptation model. Parameters ---------- experiment : integer or CorrespondingColourDataset, optional {1, 2, 3, 4, 6, 8, 9, 11, 12} *Breneman (1987)* experiment number or :class:`colour.CorrespondingColourDataset` class instance. Returns ------- tuple Corresponding chromaticities prediction. References ---------- :cite:`Breneman1987b`, :cite:`Fairchild1991a`, :cite:`Fairchild2013s` Examples -------- >>> from pprint import pprint >>> pr = corresponding_chromaticities_prediction_Fairchild1990(2) >>> pr = [(p.uv_m, p.uv_p) for p in pr] >>> pprint(pr) # doctest: +ELLIPSIS [(array([ 0.207, 0.486]), array([ 0.2089528..., 0.4724034...])), (array([ 0.449, 0.511]), array([ 0.4375652..., 0.5121030...])), (array([ 0.263, 0.505]), array([ 0.2621362..., 0.4972538...])), (array([ 0.322, 0.545]), array([ 0.3235312..., 0.5475665...])), (array([ 0.316, 0.537]), array([ 0.3151391..., 0.5398333...])), (array([ 0.265, 0.553]), array([ 0.2634745..., 0.5544335...])), (array([ 0.221, 0.538]), array([ 0.2211595..., 0.5324470...])), (array([ 0.135, 0.532]), array([ 0.1396949..., 0.5207234...])), (array([ 0.145, 0.472]), array([ 0.1512288..., 0.4533041...])), (array([ 0.163, 0.331]), array([ 0.1715691..., 0.3026264...])), (array([ 0.176, 0.431]), array([ 0.1825792..., 0.4077892...])), (array([ 0.244, 0.349]), array([ 0.2418905..., 0.3413401...]))] """ experiment_results = (convert_experiment_results_Breneman1987(experiment) if is_numeric(experiment) else experiment) with domain_range_scale(1): XYZ_t, XYZ_r = experiment_results.XYZ_t, experiment_results.XYZ_r xy_t, xy_r = XYZ_to_xy([XYZ_t, XYZ_r]) uv_t = Luv_to_uv(XYZ_to_Luv(experiment_results.XYZ_ct, xy_t), xy_t) uv_m = Luv_to_uv(XYZ_to_Luv(experiment_results.XYZ_cr, xy_r), xy_r) Y_n = experiment_results.Y_t XYZ_1 = experiment_results.XYZ_ct XYZ_2 = chromatic_adaptation_Fairchild1990(XYZ_1, XYZ_t, XYZ_r, Y_n) uv_p = Luv_to_uv(XYZ_to_Luv(XYZ_2, xy_r), xy_r) return tuple([ CorrespondingChromaticitiesPrediction(experiment_results.name, uv_t[i], uv_m[i], uv_p[i]) for i in range(len(uv_t)) ])