def test_nan_reaction_rate_MichaelisMenten_Michaelis1913(self): """ Test :func:`colour.biochemistry.michaelis_menten.\ reaction_rate_MichaelisMenten_Michaelis1913` 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: v = np.array(case) V_max = np.array(case) K_m = np.array(case) reaction_rate_MichaelisMenten_Michaelis1913(v, V_max, K_m)
def lightness_Fairchild2010( Y: FloatingOrArrayLike, epsilon: FloatingOrArrayLike = 1.836 ) -> FloatingOrNDArray: """ Compute *Lightness* :math:`L_{hdr}` of given *luminance* :math:`Y` using *Fairchild and Wyble (2010)* method according to *Michaelis-Menten* kinetics. Parameters ---------- Y *Luminance* :math:`Y`. epsilon :math:`\\epsilon` exponent. Returns ------- :class:`numpy.floating` or :class:`numpy.ndarray` *Lightness* :math:`L_{hdr}`. Notes ----- +------------+-----------------------+---------------+ | **Domain** | **Scale - Reference** | **Scale - 1** | +============+=======================+===============+ | ``Y`` | [0, 1] | [0, 1] | +------------+-----------------------+---------------+ +------------+-----------------------+---------------+ | **Range** | **Scale - Reference** | **Scale - 1** | +============+=======================+===============+ | ``L_hdr`` | [0, 100] | [0, 1] | +------------+-----------------------+---------------+ References ---------- :cite:`Fairchild2010` Examples -------- >>> lightness_Fairchild2010(12.19722535 / 100) # doctest: +ELLIPSIS 31.9963902... """ Y = to_domain_1(Y) maximum_perception = 100 L_hdr = ( reaction_rate_MichaelisMenten_Michaelis1913( spow(Y, epsilon), maximum_perception, spow(0.184, epsilon) ) + 0.02 ) return as_float(from_range_100(L_hdr))
def test_reaction_rate_MichaelisMenten_Michaelis1913(self): """ Test :func:`colour.biochemistry.michaelis_menten.\ reaction_rate_MichaelisMenten_Michaelis1913` definition. """ self.assertAlmostEqual( reaction_rate_MichaelisMenten_Michaelis1913(0.25, 0.5, 0.25), 0.250000000000000, places=7, ) self.assertAlmostEqual( reaction_rate_MichaelisMenten_Michaelis1913(0.5, 0.5, 0.25), 0.333333333333333, places=7, ) self.assertAlmostEqual( reaction_rate_MichaelisMenten_Michaelis1913(0.65, 0.75, 0.35), 0.487500000000000, places=7, )
def test_n_dimensional_reaction_rate_MichaelisMenten_Michaelis1913(self): """ Test :func:`colour.biochemistry.michaelis_menten.\ reaction_rate_MichaelisMenten_Michaelis1913` definition n-dimensional arrays support. """ v = 0.5 V_max = 0.5 K_m = 0.25 S = reaction_rate_MichaelisMenten_Michaelis1913(v, V_max, K_m) v = np.tile(v, (6, 1)) S = np.tile(S, (6, 1)) np.testing.assert_almost_equal( reaction_rate_MichaelisMenten_Michaelis1913(v, V_max, K_m), S, decimal=7, ) V_max = np.tile(V_max, (6, 1)) K_m = np.tile(K_m, (6, 1)) np.testing.assert_almost_equal( reaction_rate_MichaelisMenten_Michaelis1913(v, V_max, K_m), S, decimal=7, ) v = np.reshape(v, (2, 3, 1)) V_max = np.reshape(V_max, (2, 3, 1)) K_m = np.reshape(K_m, (2, 3, 1)) S = np.reshape(S, (2, 3, 1)) np.testing.assert_almost_equal( reaction_rate_MichaelisMenten_Michaelis1913(v, V_max, K_m), S, decimal=7, )
def lightness_Fairchild2011( Y: FloatingOrArrayLike, epsilon: FloatingOrArrayLike = 0.474, method: Union[Literal["hdr-CIELAB", "hdr-IPT"], str] = "hdr-CIELAB", ) -> FloatingOrNDArray: """ Compute *Lightness* :math:`L_{hdr}` of given *luminance* :math:`Y` using *Fairchild and Chen (2011)* method according to *Michaelis-Menten* kinetics. Parameters ---------- Y *Luminance* :math:`Y`. epsilon :math:`\\epsilon` exponent. method *Lightness* :math:`L_{hdr}` computation method. Returns ------- :class:`numpy.floating` or :class:`numpy.ndarray` *Lightness* :math:`L_{hdr}`. Notes ----- +------------+-----------------------+---------------+ | **Domain** | **Scale - Reference** | **Scale - 1** | +============+=======================+===============+ | ``Y`` | [0, 1] | [0, 1] | +------------+-----------------------+---------------+ +------------+-----------------------+---------------+ | **Range** | **Scale - Reference** | **Scale - 1** | +============+=======================+===============+ | ``L_hdr`` | [0, 100] | [0, 1] | +------------+-----------------------+---------------+ References ---------- :cite:`Fairchild2011` Examples -------- >>> lightness_Fairchild2011(12.19722535 / 100) # doctest: +ELLIPSIS 51.8529584... >>> lightness_Fairchild2011(12.19722535 / 100, method='hdr-IPT') ... # doctest: +ELLIPSIS 51.6431084... """ Y = to_domain_1(Y) method = validate_method(method, ["hdr-CIELAB", "hdr-IPT"]) if method == "hdr-cielab": maximum_perception = 247 else: maximum_perception = 246 L_hdr = ( reaction_rate_MichaelisMenten_Michaelis1913( spow(Y, epsilon), maximum_perception, spow(2, epsilon) ) + 0.02 ) return as_float(from_range_100(L_hdr))