schrodinger.application.matsci.colorutils module

Contains utilities for color manipulation and conversion

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.application.matsci.colorutils.get_distance(point_1, point_2)

Get the distance between points 1 and 2. Accepts points as arbitrary-length lists or tuples and calculates the distance between them.

Parameters:
  • point_1 (list or tuple) – The first point

  • point_2 (list or tuple) – The second point

Return type:

float

Returns:

The distance between the two points

schrodinger.application.matsci.colorutils.luminance_level(color_tuple)

Returns the luminance level of an RGB color tuple. Grabbed from the web, it is supposedly used to convert color TV to B&W. Luminance runs from 0 to X, where X is the upper limit of a color_tuple value (typically 255 or 65535). One place this algorithm is found is in the W3C accessibility working draft for color contrast in webpages.

Parameters:

color_tuple (tuple) – The color’s RGB as a tuple

Return type:

float

Returns:

The luminance of the color

schrodinger.application.matsci.colorutils.color_distance(color1_rgb, color2_rgb)

Calculates the distance in u’v’ space between two colors

Parameters:
  • color1_rgb (tuple) – The RGB tuple of color 1

  • color2_rgb (tuple) – The RGB tuple of color 2

Return type:

float

Returns:

The distance between the two colors in u’v’ space

schrodinger.application.matsci.colorutils.ciexy_to_upvp(ciex, ciey)

Converts CIE(x,y) to CIE(u’v’), returns CIEu’ and CIEv’. Note that u’v’ are from the CIELUV color space (1976).

Parameters:
  • ciex (float) – CIE’s x component

  • ciey (float) – CIE’s y component

Return type:

float, float

Returns:

CIEu’ and CIEv’

schrodinger.application.matsci.colorutils.web_cie_to_rgb(color_tuple, whitepoint=(0.333, 0.333), xyz_to_rgb=True)

Converts CIEx,y,z data to RGB values if xyz_to_rgb is True. If false, the other way around.

Parameters:
  • color_tuple (tuple) – CIEx,y,z or RGB tuple for the color

  • whitepoint (tuple) – CIEx,y for white

  • xyz_to_rgb (bool) – Whether CIEx,y,z should be converted to RGB or the other way around

Return type:

tuple

Returns:

Converted CIEx,y,z or RGB tuple for the color

schrodinger.application.matsci.colorutils.calculate_ciexy(x_vals, y_vals)

Calculates the CIE coordinates of the passed x and y data.

Parameters:
  • x_vals (list) – X values of the spectrum

  • y_vals (list) – Y values of the spectrum

Return type:

tuple

Returns:

Tuple containing CIEx, CIEy, CIEX, CIEY and CIEZ

schrodinger.application.matsci.colorutils.calculate_nits(x_vals, y_vals)

Calculates and returns Candelas/m2 assuming x_vals is in nm and y_vals is in W-Light/Sr/m2

Parameters:
  • x_vals (list) – X values of the spectrum

  • y_vals (list) – Y values of the spectrum

Return type:

float

Returns:

The nits of the spectrum

schrodinger.application.matsci.colorutils.color_temperature(cie_x, cie_y)

Calculates the correlated color temperature (CCT) from CIEx and CIEy values

Parameters:
  • cie_x (float) – The CIEx value of the spectrum

  • cie_y (float) – The CIEy value of the spectrum

Return type:

float, bool

Returns:

CCT and a boolean that tells whether CCT falls within the required tolerance (0.05 in CIE1960 uv space) for valid CCT

schrodinger.application.matsci.colorutils.distance_from_planckian(cie_x, cie_y, cct=None)

Determines the distance of the point (cie_x, cie_y) from the Planckian locus in CIE 1960 uv space.

If the correlated color temperature of cie_x, cie_y is known, it can be supplied as cct, otherwise it is calculated.

Parameters:
  • cie_x (float) – The CIEx value of the spectrum

  • cie_y (float) – The CIEy value of the spectrum

  • cct (float or None) – Correlated color temperature of the spectrum

Return type:

float

Returns:

Distance from the Planckian locus

schrodinger.application.matsci.colorutils.ciexy_to_cie1960uv(cie_x, cie_y)

Converts cie(x,y) to cie(uv).

Parameters:
  • cie_x (float) – The CIEx value of the spectrum

  • cie_y (float) – The CIEy value of the spectrum

Return type:

float, float

Returns:

CIEu, CIEv of the spectrum. Note that u’v’ are from the 1960 USC color space.

schrodinger.application.matsci.colorutils.planckian_locus(temperature=None, delta=50)

” If temperature is given, returns the CIEx and CIEy values of the Planckian locus at that temperature. If temperature is not given, returns a list of (color, (CIEx, CIEy)) tuples of the Planckian locus from 1000K to 25000K at every delta CCT degrees.

Parameters:
  • temperature (float or None) – The temperature to get CIEx and CIEy values at

  • delta (int) – The temperature step between each (CIEx, CIEy) tuple if temperature is not provided

Return type:

tuple or list

Returns:

CIEx and CIEy at the given temperature, or a list of (color, (CIEx, CIEy)) tuples

schrodinger.application.matsci.colorutils.get_gamut_area(cie_pairs, xy_space=True)

Calculates the area of the triangle formed by the provided CIEx,y pairs.

Parameters:
  • cie_pairs (tuple) – Tuple of three (CIEx, CIEy) pairs

  • xy_space (bool) – Whether the CIE is given and the gamut is returned in the x,y space, or the u’v’ space

Return type:

float

Returns:

The area of triangle formed by the cie pairs

schrodinger.application.matsci.colorutils.calculate_cri(intensities, cct=None)

Calculates the CIE Color Rendering Index of the spectrum. Calculates cct if it is not supplied.

Parameters:
  • intensities (list) – Spectrum intensities from 400-700 nm in arbitrary units.

  • cct (float or None) – Correlated color temperature

Return type:

int, bool

Returns:

CRI and a boolean that tells whether CRI falls within the required tolerance

schrodinger.application.matsci.colorutils.planckian_radiator(temp, low=400, high=700, step=1)

Returns the normalized spectrum of a Planckian (black body) radiator at the given color temperature.

The spectrum is a list of intensities returned starting at low nm and ending at high nm every step nm. The intensities are normalized. intensity = 2*pi*h*(c^2) / (L^5 * (exp(hc/Lkt) - 1)) Where L is the wavelength in meters

Parameters:
  • temp (float) – The color temperature for the Planckian radiator

  • low (int) – The lower nm cutoff of the returned values

  • high (int) – The higher nm cutoff of the returned values

  • step (int) – The step between returned values

Return type:

list

Returns:

The normalized spectrum of a Planckian radiator

schrodinger.application.matsci.colorutils.daylight_radiator(temp, low=400, high=700, step=1)

Returns the normalized spectrum of a illuminant D (daylight) radiator at the given color temperature.

The spectrum is a list of intensities returned starting at low nm and ending at high nm every step nm. The intensities are normalized.

Parameters:
  • temp (float) – The color temperature for the radiator

  • low (int) – The lower nm cutoff of the returned values

  • high (int) – The higher nm cutoff of the returned values

  • step (int) – The step in nm between returned values

Return type:

list

Returns:

The normalized spectrum of a illuminant D radiator

schrodinger.application.matsci.colorutils.daylight_locus(temperature=None, delta=50)

If temperature is given, returns the CIEx and CIEy values of the daylight locus at that temperature. If temperature is not given, returns a list of (color, (CIEx, CIEy)) tuples of the daylight locus from 4000K to 25000K at every delta CCT degrees

Parameters:
  • temperature (float or None) – The temperature to get CIEx and CIEy values at

  • delta (int) – The temperature step between each (CIEx, CIEy) tuple if temperature is not provided

schrodinger.application.matsci.colorutils.get_complete_spectrum(x_vals, y_vals, data_min, data_max)

Fills in the missing values of a spectrum using a cubic interpolation, so that it has data for every nm.

Makes sure all y values are > 0, all x values are between data_min and data_max, and no x value is repeated.

Parameters:
  • x_vals (list) – X values of the spectrum

  • y_vals (list) – Y values of the spectrum

  • data_min (int) – The low cut-off for x values

  • data_max (int) – The high cut-off for x values

Return type:

list, list

Returns:

The completed x and y values for the spectrum