July 2023
Volume 23, Issue 7
Open Access
Methods  |   July 2023
PySilSub: An open-source Python toolbox for implementing the method of silent substitution in vision and nonvisual photoreception research
Author Affiliations
  • Joel T. Martin
    Department of Psychology, University of York, York, UK
    [email protected]
  • Geoffrey M. Boynton
    Department of Psychology, University of Washington, Seattle, WA, USA
    [email protected]
  • Daniel H. Baker
    Department of Psychology, University of York, York, UK
    York Biomedical Research Institute, University of York, York, UK
    [email protected]
  • Alex R. Wade
    Department of Psychology, University of York, York, UK
    York Biomedical Research Institute, University of York, York, UK
    [email protected]
  • Manuel Spitschan
    Max Planck Institute for Biological Cybernetics, Tübingen, Germany
    TUM Department of Sport and Health Sciences (TUM SG), Technical University of Munich, Munich, Germany
    TUM Institute for Advanced Study (TUM-IAS), Technical University of Munich, Garching, Germany
    [email protected]
Journal of Vision July 2023, Vol.23, 10. doi:https://doi.org/10.1167/jov.23.7.10
  • Views
  • PDF
  • Share
  • Tools
    • Alerts
      ×
      This feature is available to authenticated users only.
      Sign In or Create an Account ×
    • Get Citation

      Joel T. Martin, Geoffrey M. Boynton, Daniel H. Baker, Alex R. Wade, Manuel Spitschan; PySilSub: An open-source Python toolbox for implementing the method of silent substitution in vision and nonvisual photoreception research. Journal of Vision 2023;23(7):10. https://doi.org/10.1167/jov.23.7.10.

      Download citation file:


      © ARVO (1962-2015); The Authors (2016-present)

      ×
  • Supplements
Abstract

The normal human retina contains several classes of photosensitive cell—rods for low-light vision, three cone classes for daylight vision, and intrinsically photosensitive retinal ganglion cells (ipRGCs) expressing melanopsin for non-image-forming functions, including pupil control, melatonin suppression, and circadian photoentrainment. The spectral sensitivities of the photoreceptors overlap significantly, which means that most lights will stimulate all photoreceptors to varying degrees. The method of silent substitution is a powerful tool for stimulating individual photoreceptor classes selectively and has found much use in research and clinical settings. The main hardware requirement for silent substitution is a spectrally calibrated light stimulation system with at least as many primaries as there are photoreceptors under consideration. Device settings that will produce lights to selectively stimulate the photoreceptor(s) of interest can be found using a variety of analytic and algorithmic approaches. Here we present PySilSub (https://github.com/PySilentSubstitution/pysilsub), a novel Python package for silent substitution featuring flexible support for individual colorimetric observer models (including human and mouse observers), multiprimary stimulation devices, and solving silent substitution problems with linear algebra and constrained numerical optimization. The toolbox is registered with the Python Package Index and includes example data sets from various multiprimary systems. We hope that PySilSub will facilitate the application of silent substitution in research and clinical settings.

Introduction
Human vision begins when light from a retinal image is absorbed by photopigments present in the outer segments of rod and cone photoreceptors in the retina (Grünert & Martin, 2020; Jindrová, 1998; Sung & Chuang, 2010). Quantal absorption within the photoreceptors gives rise to electrochemical signals whose integration in functionally and anatomically specialized pathways provides visual cortex with information on brightness, spatial frequency, color, and other dimensions of visual experience (Hubel & Wiesel, 1962; Derrington et al., 1984; Krauskopf et al., 1982; Webster & Mollon, 1994). At scotopic light levels (e.g., starlight), vision is mediated primarily by rods. Although absent from the fovea, rods are most numerous of the photoreceptors and otherwise widely distributed across the retina. At photopic light levels (e.g., daylight), the rod photopigment becomes saturated, and it is the short (S), medium (M), and long (L) wavelength light-sensitive cones that mediate vision. Cone cells are packed densely into the fovea and distributed more sparsely elsewhere. At mesopic light levels (e.g., full moon, nighttime urban lighting), vision is served by complex interactions of signals from rod and cone photoreceptors (Zele & Cao, 2015). 
Humans also possess a third class of photoreceptor. A relatively small population of intrinsically photosensitive retinal ganglion cells (ipRGCs) express the photopigment melanopsin in their axons and soma (Provencio et al., 2000). The ipRGCs provide an additional light-sensing pathway with an important role in “nonvisual” functions, including circadian photoentrainment and control of pupil size, via their direct projections to the suprachiasmatic nucleus of the hypothalamus and the olivary pretectal nucleus of the midbrain, respectively (Gamlin et al., 2007; Ruby et al., 2002). Although ipRGCs do not mediate vision in the same way as rods and cones, laboratory studies have shown that melanopsin activation can facilitate the processing of cone signals and influence brightness perception (Allen et al., 2014; Brown et al., 2012; Davis et al., 2015). 
As illustrated in Figure 1, the photoreceptor classes have different spectral sensitivities. The curve for each type of photoreceptor describes the probability of it capturing a photon at a given wavelength, so S cones are about 10 times more likely than L cones to capture photons at 450 nm, and the likelihood of L and M cones capturing at 550 nm is roughly the same. Because the spectral sensitivities of the photoreceptors overlap, most lights in the visible spectrum will stimulate all types of photoreceptors, albeit to varying degrees. However, with the method of silent substitution, it is possible to prepare light stimuli that selectively target individual photoreceptor classes (Estévez & Spekreijse, 1982). 
Figure 1.
 
Photoreceptors and their spectral sensitivities (adapted from Figure 3 of Blume et al., 2019; reproduced under the CC BY 4.0 license, http://creativecommons.org/licenses/by/4.0/). (A) Human eye with inset showing the three types of retinal photoreceptor: rods, cones, and ipRGCs. (B) Overlapping spectral sensitivities of retinal photoreceptors. The curve for each photoreceptor describes the relative probability of photon capture at a given wavelength.
Figure 1.
 
Photoreceptors and their spectral sensitivities (adapted from Figure 3 of Blume et al., 2019; reproduced under the CC BY 4.0 license, http://creativecommons.org/licenses/by/4.0/). (A) Human eye with inset showing the three types of retinal photoreceptor: rods, cones, and ipRGCs. (B) Overlapping spectral sensitivities of retinal photoreceptors. The curve for each photoreceptor describes the relative probability of photon capture at a given wavelength.
Silent substitution is an elegant technique that involves using a spectrally calibrated multiprimary stimulation system to produce spectra that selectively stimulate one class of retinal photoreceptor while maintaining a constant level of activation in the others. The method exploits Rushton's (1972) principle of univariance, which states that the output of a photoreceptor is one-dimensional and depends on quantum catch, not on which quanta are caught. In other words, different spectra will have an identical effect on a photoreceptor, providing they lead to the same number of photons being absorbed. The principle of univariance and its relevance to silent substitution is covered in greater detail by Estévez and Spekreijse (1982), along with a treatment of the method's history. In vision science, silent substitution has contributed to our understanding of human color vision mechanisms (Horiguchi et al., 2013), and it has enabled researchers to examine how targeted photoreceptor stimulation affects physiological responses such as the electroretinogram (Maguire et al., 2017) and the pupillary light reflex (Spitschan et al., 2014). 
The method of silent substitution can be used to generate metamers: spectra that have different wavelength distributions but produce the same cone excitation (the principle underlying all modern color display devices). Such lights can be used to stimulate pathways contributing to “nonvisual” responses to light, including melatonin suppression (Allen et al., 2018; Blume et al., 2022; Souman et al., 2018), sleep (Blume et al., 2022; Schöllhorn et al., 2023), and other neuroendocrine and circadian functions (Zandi et al., 2021). The method of silent substitution can also be used to investigate the contribution of melanopsin signaling to canonical visual processing (Allen et al., 2019; Brown et al., 2012; DeLawyer et al., 2020; Spitschan et al., 2017; Uprety et al., 2022; Vincent et al., 2021), and its potential as a diagnostic tool for retinal disease has garnered attention in recent years (Kuze et al., 2017; Wise et al., 2021). 
The main hardware requirement for silent substitution is a spectrally calibrated stimulation system with at least as many primaries as there are photoreceptors of interest. With three cone classes in addition to rods and ipRGCs, this generally means that five primaries are needed, but four may suffice when working in the photopic range and sufficient measures are taken to ensure the rods are saturated (see Adelson, 1982; Aguilar & Stiles, 1954; Kremers et al., 2009; Shapiro, 2002; Sharpe et al., 1989). The primaries should be independently addressable, additive, and ideally stable over time with a linear input–output function. Peak wavelength and bandwidth of the primaries are key considerations that will define the gamut and available contrast (Evéquoz et al., 2021), and the light source should be integrated into an optical system for stimulus delivery (Barrionuevo et al., 2022)—usually a Ganzfeld (e.g., Agrici et al., 2019; Martin et al., 2021), specialized Maxwellian view (e.g., Cao et al., 2015; Nugent & Zele, 2022), projector (Allen et al., 2018; Allen et al., 2019; DeLawyer et al., 2020; Hexley et al., 2020; Spitschan et al., 2019; Yamakawa et al., 2019), or display (Blume et al., 2022; Schöllhorn et al., 2023) system. In a review on stimulation devices used in the literature, Conus and Geiser (2020) found that in most cases, the device had four or five primaries and was built from scratch using LEDs, optical bench components, and microprocessors (e.g., Arduino) with intensity controlled by pulse width modulation. 
Also required for silent substitution are estimates of the photoreceptor action spectra of the observer, which, in humans, vary even among color-normal observers due to differences in ocular physiology. Before striking the retina, incident light must first travel through the lens and ocular media pigment of the observer, which act as prereceptoral filters to effectively shift the spectral sensitivity of the underlying photoreceptors. The crystalline lens of the eye accumulates its yellow pigment with age due to absorption of near-UV radiation (Norren & Vos, 1974; Pokorny et al., 1987; Weale, 1988), and a yellower lens transmits less short-wavelength light. The macula pigment is a yellow carotenoid spot that sits above foveal photoreceptors and reduces the spectral sensitivity of underlying cones in a manner that becomes more pronounced for smaller stimulus field sizes (Chen et al., 2001; Whitehead et al., 2006). Observer age and stimulus field size therefore combine to alter the effective spectral sensitivity functions of a given observer under particular viewing conditions (Figure 2; see also Figures 5A,B). 
Figure 2.
 
Prereceptoral filtering of light by ocular media. Spectral transmittance functions of (A) the human lens for ages 20 to 80 years (older lenses transmit less light) and (B) the macula pigment for field sizes 2° to 10°. The human lens naturally accumulates a yellow pigment with age due to absorption of near-UV radiation (Lerman, 1980; Feldman et al., 2022), and the macula pigment is a yellow carotenoid spot at the position of the fovea (see Grünert & Martin, 2020Figure 1). All transmittance functions were calculated in accordance with CIEPO06 (CIE, 2006).
Figure 2.
 
Prereceptoral filtering of light by ocular media. Spectral transmittance functions of (A) the human lens for ages 20 to 80 years (older lenses transmit less light) and (B) the macula pigment for field sizes 2° to 10°. The human lens naturally accumulates a yellow pigment with age due to absorption of near-UV radiation (Lerman, 1980; Feldman et al., 2022), and the macula pigment is a yellow carotenoid spot at the position of the fovea (see Grünert & Martin, 2020Figure 1). All transmittance functions were calculated in accordance with CIEPO06 (CIE, 2006).
The International Commission on Illumination (CIE) defines average colorimetric observer models with estimates of photoreceptor spectral sensitivities for a given age and field size. The CIE observers are based on decades of research involving predominantly psychophysical methods (Smith & Pokorny, 1975; Stiles & Burch, 1959; Stockman et al., 1993, 1999; Stockman & Sharpe, 2000; Vos & Walraven, 1970) but also techniques such as suction electrode recording and microspectrophotometry of photoreceptors (e.g., Baylor et al., 1984; Bowmaker et al., 1978; Bowmaker & Dartnall, 1980). The CIE 2006 Physiological Observer (developed in CIE 170-1:2006 and abbreviated here as CIEPO06: CIE, 2006) defines fundamental cone spectral sensitivity functions for 2° and 10° field sizes and outlines a framework for calculating average spectral sensitivity functions for any age between 20 and 80 years and any field size between 1° and 10°. More recently, prompted by the pioneering research into melanopsin-containing ipRGCs (e.g., Al Enezi et al., 2011; Berson et al., 2002; Brown et al., 2013; Dacey et al., 2005; Gamlin et al., 2007; Lucas et al., 2014; Provencio et al., 2000; Spitschan, 2019), the CIE released an International Standard—CIE S 026/E:2018 (CIE, 2018)—that includes the melanopic and rhodopic action spectra alongside the CIEPO06 cone action spectra and outlines best practices for documenting photoreceptor responses to light. 
With an accurately calibrated multiprimary system, one can predict E(λ),  the spectral output of the device (radiance or irradiance, in energy units), for any combination of primary gain settings using interpolation followed by a linear combination of primary spectra. Then, with photoreceptor action spectra appropriate to the intended observer, one can compute the activation level for each class of photoreceptors following the equation:  
\begin{eqnarray}{E}_\alpha = \mathop \sum \limits_{380}^{780} E\left( \lambda \right){S}_\alpha \left( \lambda \right){\Delta }_\lambda \quad \end{eqnarray}
(1)
where Eα is a scalar representing the photoreceptor activation for photoreceptor class α (e.g., one of the five photoreceptors: S cones, M cones, L cones, rods, ipRGCs), Sα(λ) is the estimated photoreceptor action spectrum, and Δλ is the width of the spectral sampling. By convention (CIE, 2018; Lucas et al., 2014), when this computation concerns the spectral sensitivity functions of retinal photoreceptors, the resulting measures may be called α-opic irradiance. Figure 3 shows an example spectral measurement alongside the α-opic action spectra and the resulting α-opic irradiance measures that follow from Equation 1
Figure 3.
 
Calculating α-opic irradiance in accordance with CIE S 026 (CIE, 2018). (A) A spectral measurement is weighted against each of the (B) photoreceptor sensitivity functions to obtain (C) the respective α-opic quantities, following Equation 1.
Figure 3.
 
Calculating α-opic irradiance in accordance with CIE S 026 (CIE, 2018). (A) A spectral measurement is weighted against each of the (B) photoreceptor sensitivity functions to obtain (C) the respective α-opic quantities, following Equation 1.
The goal of silent substitution is to invert this process to determine the device input settings to produce two spectra—a background spectrum and a modulation spectrum—where the resulting α-opic quantities will be the same for all but the targeted photoreceptor(s). In the case where linearity holds across the entire α-opic computation, silent substitution is typically computed using linear algebra, by inverting a fully or overdetermined set of equations describing the mapping from primaries to photoreceptor responses (e.g., Cao et al., 2015; Maguire et al., 2016; Shapiro et al., 1996). However, where linearity fails at some point in the system—for example, if the spectrum of a particular primary changes as a function of its intensity—then it may still be possible to obtain a solution using constrained numerical optimization (e.g., Spitschan et al., 2015). 
In this Methods article, we introduce PySilSub (Martin et al., 2023), a Python toolbox that eases the computational burden of silent substitution by taking a structured approach to dealing with the various confounds and challenges outlined above. The toolbox provides flexible object-oriented support for multiprimary stimulation devices and individual colorimetric observer models, example calibration data for a range of devices, an intuitive interface for defining and solving silent substitution problems with linear algebra and constrained numerical optimization, and methods for accessing relevant standards and visualizing solutions. The code is actively maintained on GitHub (https://github.com/PySilentSubstitution/pysilsub) under the MIT License and comes with a comprehensive testing suite and extensive online documentation with detailed examples. It is also registered with the Python Package Index (https://pypi.org/project/pysilsub/) and can therefore be installed with the pip packaging tool. Here, we provide an overview of the toolbox, describe key features, and demonstrate how it can be used. 
Overview
PySilSub (Martin et al., 2023) is written in Python3 and depends on widely used libraries from the scientific Python ecosystem (numpy: Harris et al., 2020; matplotlib: Hunter, 2007; pandas: McKinney, 2010; scipy: Virtanen et al., 2020) and optionally some functionality from the color-science package (Mansencal et al., 2022). Three core modules support colorimetric observer models (observers.py), multiprimary stimulation devices (devices.py), and defining, solving, and visualizing silent substitution problems (problems.py). Additional modules support CIE standards (CIE.py), prereceptoral filters (preceps.py), color computations (colorfuncs.py), and stimulus design (waves.py). Figure 4 lays out the anatomy of the package and highlights key features. The following sections describe the rationale and implementation of the core modules and key features. 
Figure 4.
 
Anatomy and key features of PySilSub.
Figure 4.
 
Anatomy and key features of PySilSub.
Colorimetric observers (observers.py)
PySilSub consolidates the CIEOP06 (CIE, 2006) and CIE S 026 (CIE, 2018) observers in a ColorimetricObserver class that internally computes photoreceptor action spectra appropriate to a given age and field size. Cone fundamentals are constructed from the photopigment absorbance spectra (Stockman & Sharpe, 2000), taking account of the peak axial density of the respective photopigments, as well as lens (Pokorny et al., 1987; Stockman et al., 1999; Stockman & Sharpe, 2000) and macular pigment (Bone et al., 1988; Stockman et al., 1999) density, in accordance with the CIEPO06 model (CIE, 2006). The melanopic and rhodopic action spectra of the 32-year-old standard observer are taken from CIE S 026 (CIE, 2018) and adjusted for lens transmittance with a spectral correction function, in accordance with the standard. Note that, for consistency with the melanopic existing standards, a slightly different lens density function is used by default to correct the melanopic and rhodopic action spectra (for more information, see CIE S 026, CIE, 2018). Macular pigment correction is not applied to the rhodopic and melanopic action spectra as rods are not present at the fovea and ipRGCs are positioned above the retinal pigment layer (Trieschmann et al., 2008). 
The ColorimetricObserver class stores the photoreceptor action spectra in a pandas DataFrame (McKinney, 2010), which interacts with other parts of the toolbox as required. This enables the toolbox to flexibly adapt to scenarios that may require alternative action spectra, such as targeting cones in the shadow of retinal blood vessels (Figure 5C: Adams & Horton, 2002; Spitschan et al., 2015), performing silent substitution with nonhuman animals (Figure 5D: e.g., Allen & Lucas, 2016; Mouland et al., 2019, 2021; Wise et al., 2021), or using alternative action spectra for any conceivable reason (e.g., to account for individual differences in spectral sensitivity arising from opsin gene polymorphisms), in which case one need only create a modified observer class with the relevant photoreceptor action spectra (see examples online). Incidentally, the ColorimetricObserver class is also a convenient open-source means of obtaining a full set of tabulated CIEPO06- and CIE S 026–compliant photoreceptor action spectra for a human observer for any age between 20 and 80 years and for any field size from 1° to 10°. Note that for field sizes larger than 10°, the effects of the macula pigment are considered negligible, so one can safely assume a 10° field size. 
Figure 5.
 
Spectral sensitivity of photoreceptors depends on the ocular physiology of the observer. (A) Lens yellowing with age causes a rightward shift in peak sensitivity of photopigments and alters the overall shape of sensitivity functions (shaded areas show the range of the spectral shift for ages 20 to 80 years). (B) Decreasing stimulus field size causes a small shift in S cone sensitivity and a marked dampening of the left-hand slopes of the sensitivity functions for M and L cones (shaded areas show the range of the spectral shift for field sizes 10° to 2°). Note that the effects of macular pigment absorption are considered negligible for rhodopsin and melanopsin, as rods are absent from the fovea and ipRGCs sit above the retinal pigment layer (Trieschmann et al., 2008). (C) Cones in the shadow of retinal blood vessels (sc*, mc*, lc*) have altered spectral sensitivity functions due to prefiltering of light by blood. Targeting these cones produces the entopic Purkinje tree percept (Adams & Horton, 2002; Spitschan et al., 2015). (D) Spectral sensitivity functions are species dependent. The example shown is for mice (from the Rodent Toolbox v2.2: Lucas et al., 2014). Note that mice do not possess a third cone and that the spectral sensitivity of photoreceptors peaks at different locations in the visual spectrum in comparison to humans. S cone sensitivity is shifted leftward toward the near-UV portion of the spectrum and there is increased overlap of the M cone, melanopic, and rhodopic action spectra.
Figure 5.
 
Spectral sensitivity of photoreceptors depends on the ocular physiology of the observer. (A) Lens yellowing with age causes a rightward shift in peak sensitivity of photopigments and alters the overall shape of sensitivity functions (shaded areas show the range of the spectral shift for ages 20 to 80 years). (B) Decreasing stimulus field size causes a small shift in S cone sensitivity and a marked dampening of the left-hand slopes of the sensitivity functions for M and L cones (shaded areas show the range of the spectral shift for field sizes 10° to 2°). Note that the effects of macular pigment absorption are considered negligible for rhodopsin and melanopsin, as rods are absent from the fovea and ipRGCs sit above the retinal pigment layer (Trieschmann et al., 2008). (C) Cones in the shadow of retinal blood vessels (sc*, mc*, lc*) have altered spectral sensitivity functions due to prefiltering of light by blood. Targeting these cones produces the entopic Purkinje tree percept (Adams & Horton, 2002; Spitschan et al., 2015). (D) Spectral sensitivity functions are species dependent. The example shown is for mice (from the Rodent Toolbox v2.2: Lucas et al., 2014). Note that mice do not possess a third cone and that the spectral sensitivity of photoreceptors peaks at different locations in the visual spectrum in comparison to humans. S cone sensitivity is shifted leftward toward the near-UV portion of the spectrum and there is increased overlap of the M cone, melanopic, and rhodopic action spectra.
Multiprimary stimulation devices (devices.py)
PySilSub supports multiprimary stimulation devices through a generic StimulationDevice class that, given a set of accurate spectral calibration measurements, serves as a forward model for the device. The required format of the calibration data is a CSV file where the first row describes the wavelength sampling (e.g., 380, 381, … 780), and every other row is a spectral measurement (see Table 1) with units of radiance (e.g., W · m−2 · sr) or irradiance (e.g., W · m−2 · nm) in energy units. Note that if measurements are available in photon units only, they should be converted to energy units for agreement with the photoreceptor action spectra. Also required in the first row of the CSV file are the column headers Primary and Setting, whose corresponding values identify the source of the spectral measurements. As devices may not be linear, it is prudent to obtain measurements across the entire range of primary intensities. If sampling with an OceanOptics (Ocean Insight, Inc., Oxford, UK) or a JETI (JETI Technische Instrumente, GmbH, Jena, Germany) spectrometer, one may be able to automate these measurements with the help of interfaces in Python packages such as LuxPy (Smet, 2020), Seabreeze (Poehlmann, 2019), and our own PyPlr (Martin et al., 2021; Martin & Spitschan, 2021). 
Table 1.
 
Calibration file format. A minimal example is shown for a hypothetical 4-primary device with 8-bit resolution. Each primary is assigned an ordinal index starting at zero and has a spectral measurement for the maximum (255) and minimum (0) input setting, where the minimum setting should reflect the ambient spectral power distribution (i.e., when all channels are off). A reasonable number of intermediary measurements should also be included to account for nonlinearity in the device.
Table 1.
 
Calibration file format. A minimal example is shown for a hypothetical 4-primary device with 8-bit resolution. Each primary is assigned an ordinal index starting at zero and has a spectral measurement for the maximum (255) and minimum (0) input setting, where the minimum setting should reflect the ambient spectral power distribution (i.e., when all channels are off). A reasonable number of intermediary measurements should also be included to account for nonlinearity in the device.
StimulationDevice has methods for predicting and visualizing the spectral and colorimetric output of a device, each of which responds to native device settings (e.g., 0–255 for a device with 8-bit resolution) or floating-point input weights between 0.0 and 1.0. The basis of all forward predictions is a method called .predict_primary_spd(…), which uses input-wise linear interpolation on the calibration spectra to predict the spectral power distribution for a given primary at a given setting. A similar method called .predict_multiprimary_spd(…) returns the spectral power distribution for a linear combination of all primaries. Following the same pattern, .predict_multiprimary_aopic(…) computes a multiprimary spectrum and returns the predicted α-opic irradiances for the assigned observer. By default, this is the CIEPO06 Standard Observer (age = 32, field size = 10°), but a custom observer may be assigned when building the class. Additional methods make it easy to perform gamma correction, change back and forth between weights and settings, visualize the calibration spectral power distributions (SPDs) and gamut of the device, and instantiate from a preconfigured JSON file. Note that PySilSub includes example data for a range of multiprimary systems (Figure 6), which makes it easy to explore how the toolbox functions without having to develop one's own system. 
Figure 6.
 
Example package data for multiprimary systems, showing calibration spectra (left) and gamut (right): (A) SpectraTuneLab 10-primary light engine (LEDMOTIVE Technologies, LLC, Barcelona, Spain), (B) VISX Spectra Digital Light Engine (OneLight Corporation, Vancouver, Canada; calibration spectra from Spitschan et al., 2015), (C) VPixx ProPixx projector (VPixx Technologies, Inc., Quebec, Canada), and (D) BGRW VirtualSky (Fraunhofer IAO, Stuttgart, Germany; Stefani et al., 2012).
Figure 6.
 
Example package data for multiprimary systems, showing calibration spectra (left) and gamut (right): (A) SpectraTuneLab 10-primary light engine (LEDMOTIVE Technologies, LLC, Barcelona, Spain), (B) VISX Spectra Digital Light Engine (OneLight Corporation, Vancouver, Canada; calibration spectra from Spitschan et al., 2015), (C) VPixx ProPixx projector (VPixx Technologies, Inc., Quebec, Canada), and (D) BGRW VirtualSky (Fraunhofer IAO, Stuttgart, Germany; Stefani et al., 2012).
Silent substitution problems (problems.py)
Stimuli in a silent substitution protocol typically take the form of pulses (e.g., Maguire et al., 2017; McAdams et al., 2018) or sinusoidal modulations (e.g., Barrionuevo et al., 2018; Spitschan et al., 2014) of photoreceptor-directed contrast presented against a background spectrum to which an observer has adapted. The background spectrum serves to maintain a set pattern of photoreceptor activations, and the modulation spectrum increases activation of the targeted photoreceptor(s) without altering activation of the others. Michelson contrast, \({C}_M = \frac{{max - min}}{{max + min}}\), is the preferred metric for describing photoreceptor activations in bipolar modulations around a mean background, whereas Weber contrast, \({C}_W = \frac{{max - min}}{{min}},\ \ \)is more suitable for describing unipolar pulses against a relatively dim background. For transparency and consistency in silent substitution studies, it is important to state which contrast definition is used (Conus & Geiser, 2020). 
Finding the native device inputs for the background and modulation spectra is a computational problem whose definition depends on one's research aims and stimulus requirements. Above all, one must nominate which photoreceptor(s) to target, which to silence, and which to ignore (if any, see Discussion), but it may also be advantageous to refine the problem by specifying a particular background spectrum, how much and of what kind of contrast to aim for on the targeted photoreceptor(s), and whether to impose any bounds on the primary inputs. These decisions then guide the development of a computational algorithm whose execution will return a solution—a set of native device settings for the background and modulation spectra—that satisfies the constraints in the problem specification. 
With PySilSub, this process is streamlined by a SilentSubstitutionProblem class that inherits from StimulationDevice, has a ColorimetricObserver assigned to it, and incorporates properties for defining, as well as methods for solving and visualizing, silent substitution problems. After instantiating, a problem is conditioned by setting several basic and well-documented properties (i.e., managed attributes), including which photoreceptors to target, silence, and ignore, and optionally the background spectrum, target contrast, and primary input bounds. A solution is then obtained with a call to one of the two solver methods described below (see Figure 7 for a set of examples). 
Figure 7.
 
Defining and solving silent substitution problems with PySilSub’s example package data. (A) Using a BGRW VirtualSky (Fraunhofer IAO; Stefani et al., 2012) to maximize melanopic contrast while ignoring rods and minimizing cones. Solved with numerical optimization without having specified a background spectrum (the background is optimized and included in the solution). (B) Using a VPixx ProPixx projector to target the L–M postreceptoral pathway while minimizing S cone contrast and ignoring rods and melanopsin, against a background spectrum defined as each of the three primaries at their half-maximum setting. Solved with linear algebra. (C) Using a SpectraTuneLAB 10-primary light engine (LEDMOTIVE Technologies, LLC) to target S cones with 20% contrast, for a 50-year-old observer and field size of 8 degrees, while ignoring rods and minimizing melanopsin and M–L cones, against a background spectrum defined as all primaries at their half-maximum setting. Solved with linear algebra. (D) Using a VISX Spectra Digital Light Engine (OneLight Corporation; calibration spectra from Spitschan et al., 2015) to target M and L cones in the shadow of retinal blood vessels for a 41-year-old observer and a field size of 10 degrees.
Figure 7.
 
Defining and solving silent substitution problems with PySilSub’s example package data. (A) Using a BGRW VirtualSky (Fraunhofer IAO; Stefani et al., 2012) to maximize melanopic contrast while ignoring rods and minimizing cones. Solved with numerical optimization without having specified a background spectrum (the background is optimized and included in the solution). (B) Using a VPixx ProPixx projector to target the L–M postreceptoral pathway while minimizing S cone contrast and ignoring rods and melanopsin, against a background spectrum defined as each of the three primaries at their half-maximum setting. Solved with linear algebra. (C) Using a SpectraTuneLAB 10-primary light engine (LEDMOTIVE Technologies, LLC) to target S cones with 20% contrast, for a 50-year-old observer and field size of 8 degrees, while ignoring rods and minimizing melanopsin and M–L cones, against a background spectrum defined as all primaries at their half-maximum setting. Solved with linear algebra. (D) Using a VISX Spectra Digital Light Engine (OneLight Corporation; calibration spectra from Spitschan et al., 2015) to target M and L cones in the shadow of retinal blood vessels for a 41-year-old observer and a field size of 10 degrees.
Linear algebra: .linalg_solve()
Linear algebra is a fast and efficient means of solving silent substitution problems (Cao et al., 2015; Evéquoz et al., 2021; Shapiro et al., 1996). The .linalg_solve() method applies specifically for situations where the background spectrum and target contrast are already known. To illustrate how it works, suppose we have a 5-primary system and that for a background spectrum, we wish to use the mixture of all primaries at half-power, αbg = [.5 .5 .5 .5 .5]. First, we generate the matrix Pbg, where the rows of Pbg are the predicted spectral power distributions for each primary component of the background spectrum Pbg = [p1(λ) p2(λ) p3(λ) p4(λ) p5(λ)]. We then compute the matrix of α-opic irradiances:  
\begin{eqnarray*}A = {P}_{bg} \cdot {S}_\alpha \end{eqnarray*}
where the columns of Sα are the photoreceptor action spectra of the observer, Sα = [sc(λ) mc(λ) lc(λ) rh(λ) mel(λ)]T. Given a set of scaling coefficients for the primaries, αsc = [p1p2 p3 p4 p5], the forward model predicts that the output modulation β = [scmclcrhmel] is β =  αscA. To invert this process, we calculate αsc = βA−1, which provides the desired scaling coefficients that must be added to the primary weights for the background to produce the desired output modulation β. Finally, the solution is given as αmod = αbg + αsc
The .linalg_solve() method relies on functionality from numpy’s linalg module (Harris et al., 2020). Specifically, in the case of square matrices (e.g., five primaries and five photoreceptors), the inv function is used to perform matrix inversion, whereas nonsquare (i.e., overdetermined) matrices require the pinv (Moore–Penrose pseudo-inverse) function, which finds the least squares solution. 
Constrained numerical optimization: .optim_solve()
Linear algebra cannot provide a direct solution in the case where nonlinearities exist in the forward model. An example of this occurs when the spectrum of the primaries changes as a function of their intensity. In this case, it is still possible to obtain a solution through a numerical search procedure by solving a multidimensional error minimization problem of the following form:  
\begin{eqnarray}\begin{array}{@{}*{1}{c}@{}} {Minimize}\\ {x \in {\mathbb{R}}^n}\\ {subject\,to} \end{array}\begin{array}{@{}*{1}{c}@{}} {f\left( x \right)}\\ {gL \le g\left( x \right) \le {g}^U}\\ {{x}^L \le x \le {x}^U} \end{array}, \quad \end{eqnarray}
(2)
where xRn are the optimization variables (i.e., the primary input weights) whose lower and upper bounds, xL and xU, are between 0 and 1 to ensure that the solution is within the gamut of the device; f(x) is the objective function (which in this case is a class method that is conditioned through setting the properties outlined above) that aims to maximize contrast on the target photoreceptor(s); and g(x) is a constraint function (also a class method) that calculates contrast for the nominally silenced photoreceptor(s), where gL and gU should be zero. In all cases, x is a vector containing the primary input weights for the proposed modulation spectrum (and the background spectrum if it is not specified). 
By default, .optim_solve() performs a local optimization from a random starting point on the function landscape using scipy’s (Virtanen et al., 2020) minimize function with the SLSQP (Sequential Least Squares Quadratic Programming) solver. The method may also be instructed via a keyword argument to perform a global search with scipy’s basinhopping algorithm, in which case a series of local optimizations are performed in conjunction with a global stepping algorithm and the best solution returned (Olson et al., 2012). Optimization parameters are preconfigured with sensible values but may be changed via keyword arguments, and for full flexibility, one can set up an optimization externally and pass it the objective and constraint functions from the problem class. As well as permitting the solution to silent substitution problems in cases where there are nonlinearities in the forward model, .optim_solve() is also a convenient way to identify background and modulation spectra that maximize unipolar amplitudes along a particular direction in photoreceptor space. 
Discussion
Silent substitution is a powerful technique for stimulating individual classes of retinal photoreceptor (Estévez & Spekreijse, 1982), but theoretical confounds and technical challenges often stand in the way of its effective application (Spitschan & Woelders, 2018). In this Methods article, we have described PySilSub, a new and open-source Python toolbox for performing the method of silent substitution in vision and nonvisual photoreception research. The core features described—ColorimetricObserver, StimulationDevice, and SilentSubstitutionProblem—treat with separate problem domains of the method of silent substitution and ultimately work together to relieve the computational burden and make it easier to define, solve, and visualize observer- and device-specific problems. While there is plenty of scope for extensions and improvements with respect to efficiency and organization, the names and primary functions of these core features will not change in future updates to the toolbox. 
The ColorimetricObserver code computes and stores photoreceptor action spectra appropriate to observer age (20 to 80 years) and stimulus field size (1° to 10°) in compliance with the CIEPO06 (CIE, 2006) and CIE S 026 (CIE, 2018) observer models. Previous studies vary considerably in the action spectra that are assumed for observers (Spitschan & Woelders, 2018Table 1), which may in part be due to the difficulty in obtaining full CIE-compliant sets. Although versions of these data are maintained at various locations on the web (e.g., www.cvrl.com) or can be accessed or computed from openly available software implementations (Asano et al., 2016; Price et al., 2020; Smet, 2020), we could not find a single implementation providing a full set of photoreceptor action spectra—cones, rods, and ipRGCs—appropriate to a given age and field size. Developing our own implementation afforded native support for most human colorimetric observers. To our knowledge, this is one of few open-source methods of obtaining photoreceptor action spectra appropriate to observer age and stimulus field size and therefore has broad relevance in color and vision science, not just silent substitution. Future improvements to the ColorimetricObserver code may involve increasing flexibility of the wavelength sampling specification for computed action spectra, new methods for applying filter functions, and support for conversions between the radiometric and photon systems. 
The main requirement for using the toolbox in one's own research is a set of accurate calibration spectra for a multiprimary stimulation system. With these spectra, the StimulationDevice code can act as a forward model for the device. Various methods allow for output to be predicted for both independent primaries and multiple primaries. By default, α-opic irradiances are computed for the CIE Standard Physiological Observer, but if a custom observer is assigned, the appropriate action spectra will be used for the calculations. Overall, this part of the toolbox is best thought of as a predictive engine that performs the basic computations underlying silent substitution. As such, the output is only as good as the input, and it is important to ensure that the calibration spectra are representative of what an observer actually sees, that they are obtained with a wavelength- and irradiance-calibrated spectrometer, and that the wavelength sampling resolution agrees with that of the observer action spectra. Currently, there is limited support for designing and optimizing background spectra for specifying background luminance and chromaticity, but existing functionality could be extended in future updates or the matter outsourced to packages that already specialize in this area (e.g., LuxPy: Smet, 2020). 
SilentSubstitutionProblem brings everything together and serves as an interface for defining, solving, and visualizing silent substitution problems for a given observer and stimulation device. A problem is first conditioned by specifying which photoreceptors to ignore, silence, and target and optionally a background spectrum, the target contrast, and any restrictive bounds on the primary inputs. A solution to the problem is then obtained via a call to one of two solver methods based either on linear algebra or on constrained numerical optimization. It is important to note that the behavior of the solvers depends on the values that were set for the aforementioned properties. This is an intuitive, albeit nonstandard, design pattern that facilitates quick and easy experimentation as compared to calling functions with long lists of arguments. The predicted spectral power distribution, chromaticity coordinates, and α-opic irradiances for the background and modulation spectra of a solution can be visualized via a single method call (e.g., see Figure 7) and likewise converted to native device settings when ready for use in an experiment. 
The ability to ignore photoreceptors has practical advantages. For example, if studying cone-mediated vision with a standard RGB display, one could ignore both rods and melanopsin to precompute cone contrast settings for use with stimulus display software such as the Psychophysics Toolbox (Brainard & Vision, 1997; Kleiner et al., 2007) or PsychoPy (Peirce, 2009). If performing silent substitution in dichromats (e.g., Huchzermeyer et al., 2018; Kremers et al., 1999; Usui et al., 1998), one can simply ignore the nonfunctioning cone class. Similarly, if administering stimuli in the photopic range, one may wish to ignore rod photoreceptors, which are often assumed to be incapable of signaling above certain light levels (see Adelson, 1982; Aguilar & Stiles, 1954). In latter cases, ignoring the inactive photoreceptor(s) will allow for more contrast to be directed toward the targeted photoreceptor(s). Imposing limits on the primary bounds is another convenient feature that can be used to ensure that solutions avoid the hard edges of a device's gamut, which may recede as the device ages (this is especially the case with LED-based systems). 
The linear algebra and optimization solvers are complementary, but each comes with drawbacks and scope for improvement. Although solving algebraically is fast and replicable, it currently requires a background spectrum to be specified and is not suited to finding the maximum contrast available in the gamut of the device. The algebra of the toolbox could be improved in future updates by integrating more elegant examples from the literature (e.g., Evéquoz et al., 2021; Nugent et al., 2023) or by embracing the “A-matrix” approach (see Cao et al., 2015; Nugent et al., 2023) for individual observers at a more fundamental level. Optimization, on the other hand, is good for finding maximum contrast but can be slow (especially with more primaries) and may give different solutions each time if the initial starting point is not fixed. Improving the speed of optimizations and supporting additional constraints (e.g., background luminance, chromaticity) may prove fruitful directions for future developments. 
As a final note, we stress that PySilSub is a generic toolbox for dealing with the computational aspect of a challenging vision science technique. Researchers should take the usual care when designing, planning, and interpreting the results of an experiment. Accurate calibration spectra are an essential requirement to valid solutions, and it is always prudent to obtain validation measurements for a solution to ensure that the actual α-opic irradiances are as predicted by the toolbox. When interpreting the results of an experiment, researchers should acknowledge that silencing photoreceptors at the pigment level does not necessarily silence photoreceptor output (Kamar et al., 2019). The complex circuitry of the retina is such that cone cells receive feedback from other cells via horizontal cells, which means that receptor output is not dependent on quantum catch alone. That said, there is converging evidence from human experiments that the method of silent substitution can yield highly specific, photoreceptor-level characterizations. In their recent protocol study, Nugent et al. (2023) provide a comprehensive treatment of the method of silent substitution covering also display development, calibration, and potential methods to fine-tune stimuli to individual-observer characteristics. 
To conclude, we have developed an open-source Python toolbox for implementing the method of silent substitution in vision and nonvisual photoreception research. For further information on the toolbox, we refer readers to its GitHub repository (https://github.com/PySilentSubstitution/pysilsub) and online documentation pages (https://pypi.org/project/pysilsub/). Feedback and contributions in the form of issues and pull requests are warmly encouraged. 
Acknowledgments
Supported by funding from the Biotechnology and Biological Sciences Research Council (BBSRC: BB/V007580/1), the Engineering and Physical Sciences Research Council (EPSRC: EP/S021507/1), the Wellcome Trust (204686/Z/16/Z), and John Fell OUP Research Fund, University of Oxford (0005460). 
Commercial relationships: none. 
Corresponding author: Joel T. Martin. 
Address: Joel T. Martin, Department of Psychology, University of York, York, UK. 
References
Adams, D. L., & Horton, J. C. (2002). Shadows cast by retinal blood vessels mapped in primary visual cortex. Science, 298(5593), 572–576, https://doi.org/10.1126/science.107488. [CrossRef] [PubMed]
Adelson, E. H. (1982). Saturation and adaptation. Vision Research, 22, 1299–1312. [CrossRef] [PubMed]
Agrici, S., Truffer, F., Balachandran, C., Kawasaki, A., & Geiser, M. (2019). Device for silent substitution excitation of melanopsin for human eye. Ophthalmic Technologies XXIX (SPIE), 10858(February), 37–43, https://doi.org/10.1117/12.2511654.
Aguilar, M., & Stiles, W. S. (1954). Saturation of the rod mechanism of the retina at high levels of stimulation. Optica Acta: International Journal of Optics, 1(1), 59–65, https://doi.org/10.1080/713818657. [CrossRef]
Al Enezi, J., Revell, V., Brown, T., Wynne, J., Schlangen, L., & Lucas, R. J. (2011). A “melanopic” spectral efficiency function predicts the sensitivity of melanopsin photoreceptors to polychromatic lights. Journal of Biological Rhythms, 26(4), 314–323, https://doi.org/10.1177/0748730411409719. [CrossRef] [PubMed]
Allen, A. E., Hazelhoff, E. M., Martial, F. P., Cajochen, C., & Lucas, R. J. (2018). Exploiting metamerism to regulate the impact of a visual display on alertness and melatonin suppression independent of visual appearance. Sleep, 41(8), 1–7, https://doi.org/10.1093/sleep/zsy100. [CrossRef]
Allen, A. E., Martial, F. P., & Lucas, R. J. (2019). Form vision from melanopsin in humans. Nature Communications, 10(1), 2274, https://doi.org/10.1038/s41467-019-10113-3. [CrossRef] [PubMed]
Allen, A. E., & Lucas, R. J. (2016). Using silent substitution to track the mesopic transition from rod- to cone-based vision in mice. Investigative Ophthalmology and Visual Science, 57(1), 276–287, https://doi.org/10.1167/iovs.15-18197. [CrossRef]
Allen, A. E., Storchi, R., Martial, F. P., Petersen, R. S., Montemurro, M. A., Brown, T. M., & Lucas, R. J. (2014). Melanopsin-driven light adaptation in mouse vision. Current Biology, 24(21), 2481–2490, https://doi.org/10.1016/j.cub.2014.09.015. [CrossRef]
Asano, Y., Fairchild, M. D., & Blondé, L. (2016). Individual colorimetric observer model. PLoS ONE, 11(2), 1–19, https://doi.org/10.1371/journal.pone.0145671. [CrossRef]
Barrionuevo, P. A., McAnany, J. J., Zele, A. J., & Cao, D. (2018). Non-linearities in the rod and cone photoreceptor inputs to the afferent pupil light response. Frontiers in Neurology, 9, 1–8, https://doi.org/10.3389/fneur.2018.01140. [CrossRef] [PubMed]
Barrionuevo, P. A., Preciado, O. U., Sandoval Salinas, M. L., & Issolio, L. A. (2022). Optical stimulation systems for studying human vision. Progress in Brain Research, 273(1), 13–36, https://doi.org/10.1016/bs.pbr.2022.04.003. [PubMed]
Baylor, D. A., Nunn, B. J., & Schnapf, J. L. (1984). The photocurrent, noise and spectral sensitivity of rods of the monkey Macaca fascicularis. The Journal of Physiology, 357(1), 575–607, https://doi.org/10.1113/jphysiol.1984.sp015518. [CrossRef] [PubMed]
Berson, D. M., Dunn, F. A., & Takao, M. (2002). Phototransduction by retinal ganglion cells that set the circadian clock. Science, 295(5557), 1070–1073, https://doi.org/10.1126/science.1067262. [CrossRef] [PubMed]
Blume, C., Garbazza, C., & Spitschan, M. (2019). Effects of light on human circadian rhythms, sleep and mood. Somnologie, 23(3), 147–156, https://doi.org/10.1007/s11818-019-00215-x. [CrossRef]
Blume, C., Niedernhuber, M., Spitschan, M., Slawik, H. C., Meyer, M. P., Bekinschtein, T. A., & Cajochen, C. (2022). Melatonin suppression does not automatically alter sleepiness, vigilance, sensory processing, or sleep. Sleep, 45(11), zsac199, https://doi.org/10.1093/sleep/zsac199. [CrossRef] [PubMed]
Bone, R. A., Landrum, J. T., Fernandez, L., & Tarsis, S. L. (1988). Analysis of the macular pigment by HPLC: Retinal distribution and age study. Investigative Ophthalmology and Visual Science, 29(6), 843–849, https://iovs.arvojournals.org/article.aspx?articleid=2160043.
Bowmaker, J. K., & Dartnall, H. J. (1980). Visual pigments of rods and cones in a human retina. The Journal of Physiology, 298(1), 501–511, https://doi.org/10.1113/jphysiol.1980.sp013097. [CrossRef] [PubMed]
Bowmaker, J. K., Dartnall, H. J., Lythgoe, J. N., & Mollon, J. D. (1978). The visual pigments of rods and cones in the rhesus monkey, Macaca mulatta. The Journal of Physiology, 274(1), 329–348, https://doi.org/10.1113/jphysiol.1978.sp012151. [CrossRef] [PubMed]
Brainard, D. H., & Vision, S. (1997). The psychophysics toolbox. Spatial Vision, 10(4), 433–436, https://doi.org/10.1163/156856897x00357. [CrossRef] [PubMed]
Brown, T. M., Allen, A. E., Al-Enezi, J., Wynne, J., Schlangen, L., Hommes, V., & Lucas, R. J. (2013). The melanopic sensitivity function accounts for melanopsin-driven responses in mice under diverse lighting conditions. PLoS ONE, 8(1), 1–8, https://doi.org/10.1371/journal.pone.0053583.
Brown, T. M., Tsujimura, S., Allen, A. E., Wynne, J., Bedford, R., Vickery, G., & Lucas, R. J. (2012). Melanopsin-based brightness discrimination in mice and humans. Current Biology, 22(12), 1134–1141, https://doi.org/10.1016/j.cub.2012.04.039. [CrossRef]
Cao, D., Nicandro, N., & Barrionuevo, P. A. (2015). A five-primary photostimulator suitable for studying intrinsically photosensitive retinal ganglion cell functions in humans. Journal of Vision, 15(1), 1–13, https://doi.org/10.1167/15.1.27. [CrossRef]
Chen, S. F., Chang, Y., & Wu, J. C. (2001). The spatial distribution of macular pigment in humans. Current Eye Research, 23(6), 422–434, https://doi.org/10.1076/ceyr.23.6.422.6963. [CrossRef] [PubMed]
CIE. (2006). Fundamental chromaticity diagram with physiological axes. https://cie.co.at/publications/fundamental-chromaticity-diagram-physiological-axes-part-1.
CIE. (2018). CIE system for metrology of optical radiation for ipRGC-influenced responses to light. CIE Central Bureau: Vienna, https://doi.org/10.25039/S026.2018.
Conus, V., & Geiser, M. (2020). A review of silent substitution devices for melanopsin stimulation in humans. Photonics, 7(4), 1–10, https://doi.org/10.3390/photonics7040121. [CrossRef]
Davis, K. E., Eleftheriou, C. G., Allen, A. E., Procyk, C. A., & Lucas, R. J. (2015). Melanopsin-derived visual responses under light adapted conditions in the mouse dLGN. PLoS ONE, 10(3), 1–21, https://doi.org/10.1371/journal.pone.0123424.
Dacey, D. M., Liao, H. W., Peterson, B. B., Robinson, F. R., Smith, V. C., Pokorny, J., & Gamlin, P. D. R. (2005). Melanopsin-expressing ganglion cells in primate retina signal colour and irradiance and project to the LGN. Nature, 433(7027), 749–754, https://doi.org/10.1038/nature03344. [CrossRef] [PubMed]
DeLawyer, T., Tsujimura, S. I., & Shinomori, K. (2020). Relative contributions of melanopsin to brightness discrimination when hue and luminance also vary. Journal of the Optical Society of America A, 37(4), A81–A88, https://doi.org/10.1364/JOSAA.382349. [CrossRef]
Derrington, A. M., Krauskopf, J., & Lennie, P. (1984). Chromatic mechanisms in lateral geniculate nucleus of macaque. The Journal of Physiology, 357(1), 241–265, https://doi.org/10.1113/jphysiol.1984.sp015499. [CrossRef] [PubMed]
Estévez, O., & Spekreijse, H. (1982). The “Silent Substitution” method in research. Vision Research, 22(6), 681–691, https://doi.org/10.1016/0042-6989(82)90104-3. [CrossRef] [PubMed]
Evéquoz, G., Truffer, F., & Geiser, M. (2021). Maximum possible contrast level for silent substitution: A theoretical model applied to melanopsin stimulation. Journal of the Optical Society of America A, 38(9), 1312, https://doi.org/10.1364/josaa.420373. [CrossRef]
Feldman, B. H., Heersink, S., Patel, A. S., DelMonte, D. W., Hossain, K., Baartman, B., & Stelzner, S. K. (2022). Cataract. https://eyewiki.aao.org/Cataract.
Gamlin, P. D. R., McDougal, D. H., Pokorny, J., Smith, V. C., Yau, K. W., & Dacey, D. M. (2007). Human and macaque pupil responses driven by melanopsin-containing retinal ganglion cells. Vision Research, 47(7), 946–954, https://doi.org/10.1016/j.visres.2006.12.015. [CrossRef] [PubMed]
Grünert, U., & Martin, P. R. (2020). Cell types and cell circuits in human and non-human primate retina. Progress in Retinal and Eye Research, 78, 100844, https://doi.org/10.1016/j.preteyeres.2020.100844. [CrossRef]
Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362, https://doi.org/10.1038/s41586-020-2649-2. [CrossRef] [PubMed]
Hexley, A. C., Yöntem, A. Ö., Spitschan, M., Smithson, H. E., & Mantiuk, R. (2020). Demonstrating a multi-primary high dynamic range display system for vision experiments. Journal of the Optical Society of America A, 37(4), A271–A284, https://doi.org/10.1364/JOSAA.384022. [CrossRef]
Horiguchi, H., Winawer, J., Dougherty, R. F., & Wandell, B. A. (2013). Human trichromacy revisited. Proceedings of the National Academy of Sciences of the United States of America, 110(3), E260–E269, https://doi.org/10.1073/pnas.1214240110. [PubMed]
Hubel, D. H., & Wiesel, T. (1962). Receptive fields, binocular interaction and functional architecture in the cat's visual cortex. Journal of Physiology, 160, 106–154. [CrossRef]
Huchzermeyer, C., Martins, C. M. G., Nagy, B., Barboni, M. T. S., Ventura, D. F., Costa, M. F., & Kremers, J. (2018). Photoreceptor-specific light adaptation of critical flicker frequency in trichromat and dichromat observers. Journal of the Optical Society of America A, 35(4), B106, https://doi.org/10.1364/josaa.35.00b106. [CrossRef]
Hunter, J. D. (2007). Matplotlib: A 2D graphics environment. Computing in Science and Engineering, 9(3), 90–95, https://doi.org/10.1109/MCSE.2007.55. [CrossRef]
Jindrová, H. (1998). Vertebrate phototransduction: Activation, recovery, and adaptation. Physiological Research, 47, 155–168. [PubMed]
Kamar, S., Howlett, M. H. C., & Kamermans, M. (2019). Silent-substitution stimuli silence the light responses of cones but not their output. Journal of Vision, 19(5), 1–11, https://doi.org/10.1167/19.5.14. [CrossRef]
Kleiner, M., Brainard, D., Pelli, D., Ingling, A., Murray, R., & Broussard, C. (2007). What's new in Psychtoolbox-3? Perception, 36(14), 1–16.
Krauskopf, J., Williams, D. R., & Heeley, D. W. (1982). Cardinal directions of color space. Cahiers d’études Africaines, 22, 1123–1131, https://doi.org/10.4000/etudesafricaines.16187.
Kremers, J., Czop, D., & Link, B. (2009). Rod and S-cone driven ERG signals at high retinal illuminances. Documenta Ophthalmologica, 118(3), 205–216, https://doi.org/10.1007/s10633-008-9159-0. [CrossRef]
Kremers, J., Usui, T., Scholl, H. P. N., & Sharpe, L. T. (1999). Cone signal contributions to electrograms in dichromats and trichromats. Investigative Ophthalmology and Visual Science, 40(5), 920–930.
Kuze, M., Morita, T., Fukuda, Y., Kondo, M., Tsubota, K., & Ayaki, M. (2017). Electrophysiological responses from intrinsically photosensitive retinal ganglion cells are diminished in glaucoma patients. Journal of Optometry, 10(4), 226–232, https://doi.org/10.1016/j.optom.2016.07.004. [CrossRef] [PubMed]
Lerman, S. (1980). Radiant energy and the eye (Vol. 1). Macmillan: New York.
Lucas, R. J., Peirson, S. N., Berson, D. M., Brown, T. M., Cooper, H. M., Czeisler, C. A., & Brainard, G. C. (2014). Measuring and using light in the melanopsin age. Trends in Neurosciences, 37(1), 1–9, https://doi.org/10.1016/j.tins.2013.10.004. [CrossRef] [PubMed]
Maguire, J., Parry, N. R. A., Kremers, J., Kommanapalli, D., Murray, I. J., & McKeefry, D. J. (2016). Rod electroretinograms elicited by silent substitution stimuli from the light-adapted human eye. Translational Vision Science and Technology, 5(4), 13, https://doi.org/10.1167/tvst.5.4.13.
Maguire, J., Parry, N. R. A., Kremers, J., Murray, I. J., & McKeefry, D. (2017). The morphology of human rod ERGs obtained by silent substitution stimulation. Documenta Ophthalmologica, 134(1), 11–24, https://doi.org/10.1007/s10633-017-9571-4. [CrossRef]
Mansencal, T., Mauderer, M., Parsons, M., Shaw, N., Wheatley, K., Cooper, S., … Downs, T. (2022). Colour 0.4.2 [Computer software]. Zenodo, https://doi.org/10.5281/zenodo.7367239.
Martin, J. T., Pinto, J., Bulte, D., & Spitschan, M. (2021). PyPlr: A versatile, integrated system of hardware and software for researching the human pupillary light reflex. Behavior Research Methods, 54(6), 2720–2739, https://doi.org/10.3758/s13428-021-01759-3. [CrossRef] [PubMed]
Martin, J. T., & Spitschan, M. (2021). PyPlr (v1.0.0) [Computer software]. Zenodo, https://doi.org/10.5281/zenodo.1234.
Martin, J. T., Boynton, G. M., Baker, D. H., & Wade, A., & Spitschan, M. (2023). PySilSub (Version 1.0.0) [Computer software]. Zenodo, https://doi.org/10.5281/zenodo.1234.
McAdams, H., Igdalova, A., Spitschan, M., Brainard, D. H., & Aguirre, G. K. (2018). Pulses of melanopsin-directed contrast produce highly reproducible pupil responses that are insensitive to a change in background radiance. Investigative Ophthalmology and Visual Science, 59(13), 5615–5626, https://doi.org/10.1167/iovs.18-25219. [CrossRef]
McKinney, W. (2010). Data structures for statistical computing in Python. Proceedings of the 9th Python in Science Conference, 1(Scipy), 56–61, https://doi.org/10.25080/majora-92bf1922-00a.
Mouland, J. W., Martial, F. P., Lucas, R. J., & Brown, T. M. (2021). Modulations in irradiance directed at melanopsin, but not cone photoreceptors, reliably alter electrophysiological activity in the suprachiasmatic nucleus and circadian behaviour in mice. Journal of Pineal Research, 70(4), 1–12, https://doi.org/10.1111/jpi.12735. [CrossRef]
Mouland, J. W., Martial, F., Watson, A., Lucas, R. J., & Brown, T. M. (2019). Cones support alignment to an inconsistent world by suppressing mouse circadian responses to the blue colors associated with twilight. Current Biology, 29(24), 4260–4267.e4, https://doi.org/10.1016/j.cub.2019.10.028. [CrossRef]
Norren, D. V., & Vos, J. J. (1974). Spectral transmission of the human ocular media. Vision Research, 14(11), 1237–1244, https://doi.org/10.1016/0042-6989(74)90222-3. [CrossRef] [PubMed]
Nugent, T. W., & Zele, A. J. (2022). A five-primary Maxwellian-view display for independent control of melanopsin, rhodopsin, and three-cone opsins on a fine spatial scale. Journal of Vision, 22, 1–22, https://doi.org/10.1167/jov.22.12.20. [CrossRef]
Nugent, T. W., Carter, D. D., Uprety, S., Adhikari, P., Feigl, B., & Zele, A. J. (2023). Protocol for isolation of melanopsin and rhodopsin in the human eye using silent substitution. STAR Protocols, 4(1), 102126, https://doi.org/10.1016/j.xpro.2023.102126. [CrossRef] [PubMed]
Olson, B., Hashmi, I., Molloy, K., & Shehu, A. (2012). Basin hopping as a general and versatile optimization framework for the characterization of biological macromolecules. Advances in Artificial Intelligence, 2012, 1–19, https://doi.org/10.1155/2012/674832. [CrossRef]
Peirce, J. W. (2009). Generating stimuli for neuroscience using PsychoPy. Frontiers in Neuroinformatics, 2, 10, https://doi.org/10.3389/neuro.11.010.2008.
Poehlmann, A. (2019). Seabreeze (v1.3.0) [Computer software]. GitHub, https://github.com/ap-/python-seabreeze/releases/tag/v1.3.0.
Pokorny, J., Smith, V. C., & Lutze, M. (1987). Aging of the human lens. Applied Optics, 26(8), 1437, https://doi.org/10.1364/ao.26.001437. [CrossRef] [PubMed]
Price, L. L. A., Peirson, S. N., Schlangen, L. J. M., Spitschan, M., Lang, D., & Blattner, P. (2020). User guide to the alpha-opic toolbox for implementing CIE S 026. (v1.049a). CIE Central Bureau: Vienna, https://doi.org/10.25039/S026.2018.TB.
Provencio, I., Rodriguez, I. R., Jiang, G., Hayes, W. P., Moreira, E. F., & Rollag, M. D. (2000). A novel human opsin in the inner retina. Journal of Neuroscience, 20(2), 600–605, https://doi.org/10.1523/jneurosci.20-02-00600.2000. [CrossRef]
Ruby, N. F., Brennan, T. J., Xie, X., Cao, V., Franken, P., Heller, H. C., et al. (2002). Role of melanopsin in circadian responses to light. Science, 298(5601), 2211–2213, https://doi.org/10.1126/science.1076701. [CrossRef] [PubMed]
Rushton, W. A. H. (1972). Pigments and signals in colour vision. The Journal of Physiology, 220(3), 1–31, https://doi.org/10.1113/jphysiol.1972.sp009719. [CrossRef] [PubMed]
Schöllhorn, I., Stefani, O., Lucas, R. J., Spitschan, M., Slawik, H. C., & Cajochen, C. (2023). Melanopic irradiance defines the impact of evening display light on sleep latency, melatonin and alertness. Communications Biology, 6(1), 228, https://doi.org/10.1038/s42003-023-04598-4. [CrossRef] [PubMed]
Shapiro, A. G. (2002). Cone-specific mediation of rod sensitivity in trichromatic observers. Investigative Ophthalmology and Visual Science, 43(3), 898–905.
Shapiro, A. G., Pokorny, J., & Smith, V. C. (1996). Cone–rod receptor spaces with illustrations and light-emitting-diode spectra evaluation of rod excitation. Journal of the Optical Society of America, 13(12), 2319–2328. [CrossRef]
Sharpe, L. T., Fach, C., Nordby, K., & Stockman, A. (1989). The incremental threshold of the rod visual system and Weber's law. Science, 244(4902), 354–356, https://doi.org/10.1126/science.2711186. [CrossRef] [PubMed]
Smet, K. A. G. (2020). Tutorial: The LuxPy Python toolbox for lighting and color science. LEUKOS—Journal of Illuminating Engineering Society of North America, 16(3), 179–201, https://doi.org/10.1080/15502724.2018.1518717. [CrossRef]
Smith, V. C., & Pokorny, J. (1975). Spectral sensitivity of the foveal cone photopigments between 400 and 500 nm. Vision Research, 15(2), 161–171, https://doi.org/10.1016/0042-6989(75)90203-5. [CrossRef] [PubMed]
Souman, J. L., Borra, T., de Goijer, I., Schlangen, L. J., Vlaskamp, B. N., & Lucassen, M. P. (2018). Spectral tuning of white light allows for strong reduction in melatonin suppression without changing illumination level or color temperature. Journal of Biological Rhythms, 33(4), 420–431, https://doi.org/10.1177/0748730418784041. [CrossRef] [PubMed]
Spitschan, M. (2019). Melanopsin contributions to non-visual and visual function. Current Opinion in Behavioral Sciences, 30, 67–72, https://doi.org/10.1016/j.cobeha.2019.06.004. [CrossRef] [PubMed]
Spitschan, M., Aguirre, G. K., & Brainard, D. H. (2015). Selective stimulation of penumbral cones reveals perception in the shadow of retinal blood vessels. PLoS ONE, 10(4), 1–22, https://doi.org/10.1371/journal.pone.0124328. [CrossRef]
Spitschan, M., Bock, A. S., Ryan, J., Frazzetta, G., Brainard, D. H., & Aguirre, G. K. (2017). The human visual cortex response to melanopsin-directed stimulation is accompanied by a distinct perceptual experience. Proceedings of the National Academy of Sciences, 114(46), 12291–12296, https://doi.org/10.1073/pnas.1711522114. [CrossRef]
Spitschan, M., Gardasevic, M., Martial, F. P., Lucas, R. J., & Allen, A. E. (2019). Pupil responses to hidden photoreceptor-specific modulations in movies. PLoS ONE, 14(5), e0216307, https://doi.org/10.1371/journal.pone.0216307. [CrossRef] [PubMed]
Spitschan, M., Jain, S., Brainard, D. H., & Aguirre, G. K. (2014). Opponent melanopsin and S-cone signals in the human pupillary light response. Proceedings of the National Academy of Sciences of the United States of America, 111(43), 15568–15572, https://doi.org/10.1073/pnas.1400942111. [CrossRef] [PubMed]
Spitschan, M., & Woelders, T. (2018). The method of silent substitution for examining melanopsin contributions to pupil control. Frontiers in Neurology, 9, 941, https://doi.org/10.3389/fneur.2018.00941. [CrossRef] [PubMed]
Stefani, O., Bues, M., Pross, A., Mebben, S., Westner, P., Dudel, H., & Rudolph, H. (2012). Moving clouds on a virtual sky affect well-being and subjective tiredness positively. In Proceedings of CIE Lighting Quality and Energy Efficiency, Hangzhou, China, (pp. 19–21).
Stiles, W. S., & Burch, J. M. (1959). N.P.L. Colour-matching investigation: Final report (1958). Optica Acta: International Journal of Optics, 6(1), 1–26, https://doi.org/10.1080/713826267. [CrossRef]
Stockman, A., MacLeod, D. I. A., & Johnson, N. E. (1993). Spectral sensitivities of the human cones. Journal of the Optical Society of America A, 10(12), 2491, https://doi.org/10.1364/josaa.10.002491. [CrossRef]
Stockman, A., & Sharpe, L. T. (2000). The spectral sensitivities of the middle- and long-wavelength-sensitive cones derived from measurements in observers of known genotype. Vision Research, 40(13), 1711–1737, https://doi.org/10.1016/S0042-6989(00)00021-3. [CrossRef] [PubMed]
Stockman, A., Sharpe, L. T., & Fach, C. (1999). The spectral sensitivity of the human short-wavelength sensitive cones derived from thresholds and color matches. Vision Research, 39(17), 2901–2927, https://doi.org/10.1016/S0042-6989(98)00225-9. [CrossRef] [PubMed]
Sung, C. H., & Chuang, J. Z. (2010). The cell biology of vision. Journal of Cell Biology, 190(6), 953–963, https://doi.org/10.1083/jcb.201006020. [CrossRef]
Trieschmann, M., Van Kuijk, F. J. G. M., Alexander, R., Hermans, P., Luthert, P., Bird, A. C., & Pauleikhoff, D. (2008). Macular pigment in the human retina: histological evaluation of localization and distribution. Eye, 22(1), 132–137, https://doi.org/10.1038/sj.eye.6702780. [CrossRef]
Uprety, S., Adhikari, P., Feigl, B., & Zele, A. J. (2022). Melanopsin photoreception differentially modulates rod-mediated and cone-mediated human temporal vision. Iscience, 25(7), 104529, https://doi.org/10.1016/j.isci.2022.104529. [CrossRef] [PubMed]
Usui, T., Kremers, J., Sharpe, L. T., & Zrenner, E. (1998). Flicker cone electroretinogram in dichromats and trichromats. Vision Research, 38, 3391–3396. [CrossRef] [PubMed]
Vincent, J., Haggerty, E. B., Brainard, D. H., & Aguirre, G. K. (2021). Melanopic stimulation does not alter psychophysical threshold sensitivity for luminance flicker. Scientific Reports, 11(1), 20167, https://doi.org/10.1038/s41598-021-99684-0. [CrossRef] [PubMed]
Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., … Vázquez-Baeza, Y. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods, 17(3), 261–272, https://doi.org/10.1038/s41592-019-0686-2. [CrossRef] [PubMed]
Vos, J. J., & Walraven, P. L. (1970). On the derivation of the foveal receptor primaries. Vision Research, 11(2), 799–818.
Weale, R. A. (1988). Age and the transmittance of the human crystalline lens. The Journal of Physiology, 395(1), 577–587, https://doi.org/10.1113/jphysiol.1988.sp016935. [CrossRef] [PubMed]
Webster, M. A., & Mollon, J. D. (1994). The influence of contrast adaptation on color appearance. Vision Research, 34(15), 1993–2020, https://doi.org/10.1016/0042-6989(94)90028-0. [CrossRef] [PubMed]
Whitehead, A. J., Mares, J. A., & Danis, R. P. (2006). Macular pigment: A review of current knowledge. JAMA Ophthalmology, 124(7), 1038–1045, https://doi.org/10.1001/archopht.124.7.1038.
Wise, E. N., Foster, M. L., Kremers, J., & Mowat, F. M. (2021). A modified silent substitution electroretinography protocol to separate photoreceptor subclass function in lightly sedated dogs. Veterinary Ophthalmology, 24(1), 103–107, https://doi.org/10.1111/vop.12847. [CrossRef] [PubMed]
Yamakawa, M., Tsujimura, S. I., & Okajima, K. (2019). A quantitative analysis of the contribution of melanopsin to brightness perception. Scientific Reports, 9(1), 7568, https://doi.org/10.1038/s41598-019-44035-3. [CrossRef] [PubMed]
Zandi, B., Stefani, O., Herzog, A., Schlangen, L. J., Trinh, Q. V., & Khanh, T. Q. (2021). Optimising metameric spectra for integrative lighting to modulate the circadian system without affecting visual appearance. Scientific Reports, 11(1), 23188, https://doi.org/10.1038/s41598-021-02136-y. [CrossRef] [PubMed]
Zele, A. J., & Cao, D. (2015). Vision under mesopic and scotopic illumination. Frontiers in Psychology, 5(January), 1–15, https://doi.org/10.3389/fpsyg.2014.01594. [CrossRef]
Figure 1.
 
Photoreceptors and their spectral sensitivities (adapted from Figure 3 of Blume et al., 2019; reproduced under the CC BY 4.0 license, http://creativecommons.org/licenses/by/4.0/). (A) Human eye with inset showing the three types of retinal photoreceptor: rods, cones, and ipRGCs. (B) Overlapping spectral sensitivities of retinal photoreceptors. The curve for each photoreceptor describes the relative probability of photon capture at a given wavelength.
Figure 1.
 
Photoreceptors and their spectral sensitivities (adapted from Figure 3 of Blume et al., 2019; reproduced under the CC BY 4.0 license, http://creativecommons.org/licenses/by/4.0/). (A) Human eye with inset showing the three types of retinal photoreceptor: rods, cones, and ipRGCs. (B) Overlapping spectral sensitivities of retinal photoreceptors. The curve for each photoreceptor describes the relative probability of photon capture at a given wavelength.
Figure 2.
 
Prereceptoral filtering of light by ocular media. Spectral transmittance functions of (A) the human lens for ages 20 to 80 years (older lenses transmit less light) and (B) the macula pigment for field sizes 2° to 10°. The human lens naturally accumulates a yellow pigment with age due to absorption of near-UV radiation (Lerman, 1980; Feldman et al., 2022), and the macula pigment is a yellow carotenoid spot at the position of the fovea (see Grünert & Martin, 2020Figure 1). All transmittance functions were calculated in accordance with CIEPO06 (CIE, 2006).
Figure 2.
 
Prereceptoral filtering of light by ocular media. Spectral transmittance functions of (A) the human lens for ages 20 to 80 years (older lenses transmit less light) and (B) the macula pigment for field sizes 2° to 10°. The human lens naturally accumulates a yellow pigment with age due to absorption of near-UV radiation (Lerman, 1980; Feldman et al., 2022), and the macula pigment is a yellow carotenoid spot at the position of the fovea (see Grünert & Martin, 2020Figure 1). All transmittance functions were calculated in accordance with CIEPO06 (CIE, 2006).
Figure 3.
 
Calculating α-opic irradiance in accordance with CIE S 026 (CIE, 2018). (A) A spectral measurement is weighted against each of the (B) photoreceptor sensitivity functions to obtain (C) the respective α-opic quantities, following Equation 1.
Figure 3.
 
Calculating α-opic irradiance in accordance with CIE S 026 (CIE, 2018). (A) A spectral measurement is weighted against each of the (B) photoreceptor sensitivity functions to obtain (C) the respective α-opic quantities, following Equation 1.
Figure 4.
 
Anatomy and key features of PySilSub.
Figure 4.
 
Anatomy and key features of PySilSub.
Figure 5.
 
Spectral sensitivity of photoreceptors depends on the ocular physiology of the observer. (A) Lens yellowing with age causes a rightward shift in peak sensitivity of photopigments and alters the overall shape of sensitivity functions (shaded areas show the range of the spectral shift for ages 20 to 80 years). (B) Decreasing stimulus field size causes a small shift in S cone sensitivity and a marked dampening of the left-hand slopes of the sensitivity functions for M and L cones (shaded areas show the range of the spectral shift for field sizes 10° to 2°). Note that the effects of macular pigment absorption are considered negligible for rhodopsin and melanopsin, as rods are absent from the fovea and ipRGCs sit above the retinal pigment layer (Trieschmann et al., 2008). (C) Cones in the shadow of retinal blood vessels (sc*, mc*, lc*) have altered spectral sensitivity functions due to prefiltering of light by blood. Targeting these cones produces the entopic Purkinje tree percept (Adams & Horton, 2002; Spitschan et al., 2015). (D) Spectral sensitivity functions are species dependent. The example shown is for mice (from the Rodent Toolbox v2.2: Lucas et al., 2014). Note that mice do not possess a third cone and that the spectral sensitivity of photoreceptors peaks at different locations in the visual spectrum in comparison to humans. S cone sensitivity is shifted leftward toward the near-UV portion of the spectrum and there is increased overlap of the M cone, melanopic, and rhodopic action spectra.
Figure 5.
 
Spectral sensitivity of photoreceptors depends on the ocular physiology of the observer. (A) Lens yellowing with age causes a rightward shift in peak sensitivity of photopigments and alters the overall shape of sensitivity functions (shaded areas show the range of the spectral shift for ages 20 to 80 years). (B) Decreasing stimulus field size causes a small shift in S cone sensitivity and a marked dampening of the left-hand slopes of the sensitivity functions for M and L cones (shaded areas show the range of the spectral shift for field sizes 10° to 2°). Note that the effects of macular pigment absorption are considered negligible for rhodopsin and melanopsin, as rods are absent from the fovea and ipRGCs sit above the retinal pigment layer (Trieschmann et al., 2008). (C) Cones in the shadow of retinal blood vessels (sc*, mc*, lc*) have altered spectral sensitivity functions due to prefiltering of light by blood. Targeting these cones produces the entopic Purkinje tree percept (Adams & Horton, 2002; Spitschan et al., 2015). (D) Spectral sensitivity functions are species dependent. The example shown is for mice (from the Rodent Toolbox v2.2: Lucas et al., 2014). Note that mice do not possess a third cone and that the spectral sensitivity of photoreceptors peaks at different locations in the visual spectrum in comparison to humans. S cone sensitivity is shifted leftward toward the near-UV portion of the spectrum and there is increased overlap of the M cone, melanopic, and rhodopic action spectra.
Figure 6.
 
Example package data for multiprimary systems, showing calibration spectra (left) and gamut (right): (A) SpectraTuneLab 10-primary light engine (LEDMOTIVE Technologies, LLC, Barcelona, Spain), (B) VISX Spectra Digital Light Engine (OneLight Corporation, Vancouver, Canada; calibration spectra from Spitschan et al., 2015), (C) VPixx ProPixx projector (VPixx Technologies, Inc., Quebec, Canada), and (D) BGRW VirtualSky (Fraunhofer IAO, Stuttgart, Germany; Stefani et al., 2012).
Figure 6.
 
Example package data for multiprimary systems, showing calibration spectra (left) and gamut (right): (A) SpectraTuneLab 10-primary light engine (LEDMOTIVE Technologies, LLC, Barcelona, Spain), (B) VISX Spectra Digital Light Engine (OneLight Corporation, Vancouver, Canada; calibration spectra from Spitschan et al., 2015), (C) VPixx ProPixx projector (VPixx Technologies, Inc., Quebec, Canada), and (D) BGRW VirtualSky (Fraunhofer IAO, Stuttgart, Germany; Stefani et al., 2012).
Figure 7.
 
Defining and solving silent substitution problems with PySilSub’s example package data. (A) Using a BGRW VirtualSky (Fraunhofer IAO; Stefani et al., 2012) to maximize melanopic contrast while ignoring rods and minimizing cones. Solved with numerical optimization without having specified a background spectrum (the background is optimized and included in the solution). (B) Using a VPixx ProPixx projector to target the L–M postreceptoral pathway while minimizing S cone contrast and ignoring rods and melanopsin, against a background spectrum defined as each of the three primaries at their half-maximum setting. Solved with linear algebra. (C) Using a SpectraTuneLAB 10-primary light engine (LEDMOTIVE Technologies, LLC) to target S cones with 20% contrast, for a 50-year-old observer and field size of 8 degrees, while ignoring rods and minimizing melanopsin and M–L cones, against a background spectrum defined as all primaries at their half-maximum setting. Solved with linear algebra. (D) Using a VISX Spectra Digital Light Engine (OneLight Corporation; calibration spectra from Spitschan et al., 2015) to target M and L cones in the shadow of retinal blood vessels for a 41-year-old observer and a field size of 10 degrees.
Figure 7.
 
Defining and solving silent substitution problems with PySilSub’s example package data. (A) Using a BGRW VirtualSky (Fraunhofer IAO; Stefani et al., 2012) to maximize melanopic contrast while ignoring rods and minimizing cones. Solved with numerical optimization without having specified a background spectrum (the background is optimized and included in the solution). (B) Using a VPixx ProPixx projector to target the L–M postreceptoral pathway while minimizing S cone contrast and ignoring rods and melanopsin, against a background spectrum defined as each of the three primaries at their half-maximum setting. Solved with linear algebra. (C) Using a SpectraTuneLAB 10-primary light engine (LEDMOTIVE Technologies, LLC) to target S cones with 20% contrast, for a 50-year-old observer and field size of 8 degrees, while ignoring rods and minimizing melanopsin and M–L cones, against a background spectrum defined as all primaries at their half-maximum setting. Solved with linear algebra. (D) Using a VISX Spectra Digital Light Engine (OneLight Corporation; calibration spectra from Spitschan et al., 2015) to target M and L cones in the shadow of retinal blood vessels for a 41-year-old observer and a field size of 10 degrees.
Table 1.
 
Calibration file format. A minimal example is shown for a hypothetical 4-primary device with 8-bit resolution. Each primary is assigned an ordinal index starting at zero and has a spectral measurement for the maximum (255) and minimum (0) input setting, where the minimum setting should reflect the ambient spectral power distribution (i.e., when all channels are off). A reasonable number of intermediary measurements should also be included to account for nonlinearity in the device.
Table 1.
 
Calibration file format. A minimal example is shown for a hypothetical 4-primary device with 8-bit resolution. Each primary is assigned an ordinal index starting at zero and has a spectral measurement for the maximum (255) and minimum (0) input setting, where the minimum setting should reflect the ambient spectral power distribution (i.e., when all channels are off). A reasonable number of intermediary measurements should also be included to account for nonlinearity in the device.
×
×

This PDF is available to Subscribers Only

Sign in or purchase a subscription to access this content. ×

You must be signed into an individual account to use this feature.

×