#!/usr/bin/python
"""
test and plot hcno stuff

"""
import numpy as np
import matplotlib.pyplot as plt

# Parameters#
gbar = 0.0005  # (mho/cm2)

vhalf1 = -50  # (mV)        # v 1/2 for forward
vhalf2 = -84  # (mV)        # v 1/2 for backward
gm1 = 0.3  ## (mV)           # slope for forward
gm2 = 0.6  #    # (mV)      # slope for backward
zeta1 = 3  #   (/ms)
#    zeta2   = 3 #   (/ms)
a01 = 0.008  # (/ms)
a02 = 0.0029  # (/ms)
frac = 0.0
c0 = 273.16  # (degC)
thinf = -66  # (mV)        # inact inf slope
qinf = 7  # (mV)        # inact inf slope
q10tau = 4.5  # from Magee (1998)
# v       # (mV)
q10g = 4.5  # Cao and Oertel
celsius = 35.0

F = 9.648e4
R = 8.314

ct = 1e-3 * zeta1 * F / (R * (c0 + celsius))

q10 = q10tau ** (
    (celsius - 33.0) / 10.0
)  # (degC)) : if you don't like room temp, it can be changed!


def rates(v):  # (mV)) {
    tau1 = bet1(v) / (q10 * a01 * (1.0 + alp1(v)))
    tau2 = bet2(v) / (q10 * a02 * (1.0 + alp2(v)))
    hinf = 1.0 / (1.0 + np.exp((v - thinf) / qinf))
    return tau1, tau2, hinf


def alp1(v):  # (mV)) {
    alp1 = np.exp((v - vhalf1) * ct)
    return alp1


def bet1(v):  # (mV)) {
    bet1 = np.exp(gm1 * (v - vhalf1) * ct)
    return bet1


def alp2(v):  # (mV)) {
    alp2 = np.exp((v - vhalf2) * ct)
    return alp2


def bet2(v):  # (mV)) {
    bet2 = np.exp(gm2 * (v - vhalf2) * ct)
    return bet2


def plots():
    v = np.linspace(-120.0, 0.0, 120)

    t1, t2, hi = rates(v)
    #     print(v)
    plt.figure(1)
    plt.plot(v, t1)
    plt.plot(v, t2)
    plt.figure(2)
    plt.plot(v, hi)
    plt.show()


# prevent sphinx from running this script at first build
if __name__ == "__main__":
    plots()
