Skip to main content

Software for performing silent substitution in Python.

Project description

Welcome to PySilentSubstitution!

DOI PyPI version Contributor Covenant PyPi license PyPI status

photoreceptor-characters

PySilSub is a Python toolbox for performing the method of silent substitution in vision and circadian research.

Note: See also, PyPlr, a sister project offering a Python framework for researching the pupillary light reflex with the Pupil Core eye tracking platform.

With PySilSub, observer- and device-specific solutions to silent substitution problems are found with linear algebra or numerical optimisation via a configurable, intuitive interface.

# Example 1 - Target melanopsin with 100% contrast (no background 
# specified), whilst ignoring rods and minimizing cone contrast, 
# for a 42-year-old observer and field size of 10 degrees. Solved
# with numerical optimization.

from pysilsub import observers, problems

ssp = problems.SilentSubstitutionProblem.from_package_data('STLAB_1_York')  # Load example data
ssp.observer = observers.ColorimetricObserver(age=42, field_size=10)  # Assign custom observer model
ssp.ignore = ['rh']  # Ignore rod photoreceptors
ssp.silence = ['sc', 'mc', 'lc']  # Minimise cone contrast
ssp.target = ['mel']  # Target melanopsin
ssp.target_contrast = 1.0  # With 100% contrast 
solution = ssp.optim_solve()  # Solve with optimisation
fig = ssp.plot_solution(solution.x)  # Plot the solution
Example 1

Another example:

# Example 2 - Target S-cones with 45% contrast against a specified 
# background spectrum (all primaries, half max) whilst ignoring rods 
# and minimizing contrast on L/M cones and melanopsin, assuming 
# 32-year-old observer and 10-degree field size. Solved with linear 
# algebra.

from pysilsub import problems

ssp = problems.SilentSubstitutionProblem.from_package_data('STLAB_1_York')  # Load example data
ssp.background = [.5] * ssp.nprimaries  # Specify background spectrum
ssp.ignore = ['rh']  # Ignore rod photoreceptors
ssp.silence = ['sc', 'mc', 'lc']  # Minimise cone contrast
ssp.target = ['mel']  # Target melanopsin
ssp.target_contrast = .45  # With 45% contrast 
solution = ssp.linalg_solve()  # Solve with linear algebra
fig = ssp.plot_solution(solution)  # Plot the solution
Example 2

Some features may serve a broader purpose in vision and circadian research. For example, computing and saving a full set of CIEPO06- and CIES026-compliant action spectra for a given observer age and field size.

from pysilsub.observers import ColorimetricObserver

ColorimetricObserver(age=32, field_size=10).save_action_spectra()

For more information, check out the code, read the docs, and run pip install pysilsub to try out the examples above.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysilsub-0.0.15.tar.gz (9.2 MB view details)

Uploaded Source

File details

Details for the file pysilsub-0.0.15.tar.gz.

File metadata

  • Download URL: pysilsub-0.0.15.tar.gz
  • Upload date:
  • Size: 9.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.0.0 pkginfo/1.8.3 requests/2.28.1 requests-toolbelt/0.9.1 tqdm/4.64.1 CPython/3.10.9

File hashes

Hashes for pysilsub-0.0.15.tar.gz
Algorithm Hash digest
SHA256 65b0d1debefa1f78f6f699c47fae48233784a9843380d83aef96762e3518430d
MD5 21e58628d279c3c1560c2df39315b69e
BLAKE2b-256 32e0bbb860b536f58d6b949a1caf11ca886a3c3ad799c80888b70cf4ca7943c1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page