Source code for cleo.opto.opsin_library

"""A bunch of fitted opsin models."""
from typing import Callable

from attrs import field, define
from brian2.units import (
    nsiemens,
    mm,
    mm2,
    nmeter,
    meter,
    kgram,
    Quantity,
    second,
    ms,
    second,
    psiemens,
    mV,
    volt,
    amp,
    mwatt,
)
from cleo.light.light_dependence import plot_spectra, equal_photon_flux_spectrum

from cleo.opto.opsins import (
    FourStateOpsin,
    BansalFourStateOpsin,
)


[docs]def chr2_4s() -> FourStateOpsin: """Returns a 4-state ChR2 model. Params taken from try.projectpyrho.org's default 4-state configuration. Action spectrum from `Nagel et al., 2003, Fig. 4a <https://www.pnas.org/doi/full/10.1073/pnas.1936192100>`_, extracted using `Plot Digitizer <https://plotdigitizer.com/>`_. Parameters can be changed after initialization but *before injection*. """ return FourStateOpsin( g0=114000 * psiemens, gamma=0.00742, phim=2.33e17 / mm2 / second, # *photon, not in Brian2 k1=4.15 / ms, k2=0.868 / ms, p=0.833, Gf0=0.0373 / ms, kf=0.0581 / ms, Gb0=0.0161 / ms, kb=0.063 / ms, q=1.94, Gd1=0.105 / ms, Gd2=0.0138 / ms, Gr0=0.00033 / ms, E=0 * mV, v0=43 * mV, v1=17.1 * mV, name="ChR2", spectrum=[ (400, 0.34), (422, 0.65), (460, 0.96), (470, 1), (473, 1), (500, 0.57), (520, 0.22), (540, 0.06), (560, 0.01), ], )
[docs]def chr2_b4s() -> BansalFourStateOpsin: """Returns a 4-state Vf-Chrimson model. Params given in Bansal et al., 2020. Action spectrum from `Nagel et al., 2003, Fig. 4a <https://www.pnas.org/doi/full/10.1073/pnas.1936192100>`_, extracted using `Plot Digitizer <https://plotdigitizer.com/>`_. Parameters can be changed after initialization but *before injection*. """ return BansalFourStateOpsin( Gd1=0.066 / ms, Gd2=0.01 / ms, Gr0=3.33e-4 / ms, g0=3.2 * nsiemens, phim=1e16 / mm2 / second, # *photon, not in Brian2 k1=0.4 / ms, k2=0.12 / ms, Gf0=0.018 / ms, Gb0=0.008 / ms, kf=0.01 / ms, kb=0.008 / ms, gamma=0.05, p=1, q=1, E=0 * mV, name="ChR2", spectrum=[ (400, 0.34), (422, 0.65), (460, 0.96), (470, 1), (473, 1), (500, 0.57), (520, 0.22), (540, 0.06), (560, 0.01), ], )
[docs]def vfchrimson_4s() -> BansalFourStateOpsin: """Returns a 4-state Vf-Chrimson model. Params given in Bansal et al., 2020. Action spectrum from `Mager et al., 2018, Supp. Fig. 1a <https://static-content.springer.com/esm/art%3A10.1038%2Fs41467-018-04146-3/MediaObjects/41467_2018_4146_MOESM1_ESM.docx>`_, extracted using `Plot Digitizer <https://plotdigitizer.com/>`_. Parameters can be changed after initialization but *before injection*. """ return BansalFourStateOpsin( Gd1=0.37 / ms, Gd2=0.175 / ms, Gr0=6.67e-7 / ms, g0=17.5 * nsiemens, phim=1.5e16 / mm2 / second, k1=3 / ms, k2=0.2 / ms, Gf0=0.02 / ms, Gb0=3.2e-3 / ms, kf=0.01 / ms, kb=0.01 / ms, gamma=0.05, p=1, q=1, E=0 * mV, name="VfChrimson", spectrum=equal_photon_flux_spectrum( [ (470, 0.34), (490, 0.51), (510, 0.71), (530, 0.75), (550, 0.86), (570, 1), (590, 1), (610, 0.8), (630, 0.48), ] ), )
[docs]def chrimson_4s() -> BansalFourStateOpsin: """Returns a 4-state Chrimson model. Params given in Bansal et al., 2020. Action spectrum from `Mager et al., 2018, Supp. Fig. 1a <https://static-content.springer.com/esm/art%3A10.1038%2Fs41467-018-04146-3/MediaObjects/41467_2018_4146_MOESM1_ESM.docx>`_, extracted using `Plot Digitizer <https://plotdigitizer.com/>`_. Parameters can be changed after initialization but *before injection*. """ return BansalFourStateOpsin( Gd1=0.041 / ms, Gd2=0.01 / ms, Gr0=6.67e-7 / ms, g0=22 * nsiemens, phim=0.2e15 / mm2 / second, k1=0.05 / ms, k2=0.5 / ms, Gf0=0.001 / ms, Gb0=0.01 / ms, kf=0.01 / ms, kb=0.004 / ms, gamma=0.05, p=1, q=1, E=0 * mV, name="Chrimson", spectrum=equal_photon_flux_spectrum( [ (470, 0.31), (490, 0.47), (510, 0.69), (530, 0.75), (550, 0.88), (570, 0.97), (590, 1), (610, 0.88), (630, 0.55), ] ), )
[docs]def gtacr2_4s() -> BansalFourStateOpsin: """Returns a 4-state model of GtACR2, an anion channel. Params given in Bansal et al., 2020. Action spectra from `Govorunova et al., 2015, Fig. 1f <https://www.science.org/doi/10.1126/science.aaa7484#F1>`_, extracted using `Plot Digitizer <https://plotdigitizer.com/>`_. Parameters can be changed after initialization but *before injection*. """ return BansalFourStateOpsin( Gd1=0.017 / ms, Gd2=0.01 / ms, Gr0=5.8e-4 / ms, g0=44 * nsiemens, phim=2e17 / mm2 / second, k1=40 / ms, k2=20 / ms, Gf0=0.001 / ms, Gb0=0.003 / ms, kf=0.001 / ms, kb=0.005 / ms, gamma=0.05, p=1, q=0.1, E=-69.5 * mV, name="GtACR2", spectrum=[ (400, 0.40), (410, 0.49), (420, 0.56), (430, 0.65), (440, 0.82), (450, 0.88), (460, 0.88), (470, 1.0), (480, 0.91), (490, 0.67), (500, 0.41), (510, 0.21), (520, 0.12), (530, 0.06), (540, 0.02), (550, 0.00), (560, 0.00), ], )
if __name__ == "__main__": import matplotlib.pyplot as plt plot_spectra(chr2_4s(), chr2_b4s(), vfchrimson_4s(), chrimson_4s(), gtacr2_4s()) plt.show()