from neuron import h
h.load_file('stdrun.hoc')
import matplotlib.pyplot as plt
plt.ion()
import numpy as np

weight = 0.2

def nmda_test(weight, Tau2, Cdur, Beta, Alpha, title):

    sece2s = h.Section(name="sece2s")
    secdms = h.Section(name="secdms")

    e2s = h.MyExp2SynNMDABB(0.5, sec=sece2s)
    dms = h.NMDA(0.5, sec=secdms)
    
    e2s.tau2NMDA = Tau2
    dms.Cdur = Cdur
    dms.Beta = Beta
    dms.Alpha = Alpha

    t_vec = h.Vector()
    t_vec.record(h._ref_t)

    v_vece2s = h.Vector()
    v_vece2s.record(sece2s(0.5)._ref_v)

    v_vecdms = h.Vector()
    v_vecdms.record(secdms(0.5)._ref_v)

    dms_vec = h.Vector()
    dms_vec.record(dms._ref_g)
    dms_ivec = h.Vector()
    dms_ivec.record(dms._ref_iNMDA)
    dms_icavec = h.Vector()
    dms_icavec.record(dms._ref_ica)

    e2s_vec = h.Vector()
    e2s_vec.record(e2s._ref_g)
    e2s_ivec = h.Vector()
    e2s_ivec.record(e2s._ref_iNMDA)
    e2s_icavec = h.Vector()
    e2s_icavec.record(e2s._ref_ica)

    ns = h.NetStim() 
    ns.number = 1
    ns.interval = 200
    ns.start = 50
    ns.noise = 0

    nc1 = h.NetCon(ns, dms)
    nc1.delay = 1.0
    nc1.weight[0] = weight

    nc2 = h.NetCon(ns, e2s)
    nc2.delay = 1.0
    nc2.weight[0] = weight

def plot ():
    plt.figure()
    plt.plot(t_vec, dms_vec, 'b-', linewidth=1.5, label="DMS g")
    plt.plot(t_vec, e2s_vec, 'r-', linewidth=1.0, label="E2S g")
    plt.title(title)
    plt.legend()
    
    '''
    plt.figure()
    plt.plot(t_vec, dms_ivec, 'b-', linewidth=1.5, label="DMS iNMDA")
    plt.plot(t_vec, e2s_ivec, 'r-', linewidth=1.0, label="E2S iNMDA")
    plt.title(title)
    plt.legend()

    plt.figure()
    plt.plot(t_vec, dms_icavec, 'b-', linewidth=1.5, label="DMS iCa")
    plt.plot(t_vec, e2s_icavec, 'r-', linewidth=1.0, label="E2S iCa")
    plt.title(title)
    plt.legend()

    plt.figure()
    plt.plot(t_vec, v_vecdms, 'b-', linewidth=1.5, label="DMS V")
    plt.plot(t_vec, v_vece2s, 'r-', linewidth=1.0, label="E2S V")
    plt.title(title)
    plt.legend()        
    '''

# default values
Tau2 = 150
Cdur = 1.0
Beta = 0.01
Alpha = 4.0
title = "Default: Tau2=150, Cdur=1.0, Beta=0.01, Alpha=4.0"

#nmda_test(weight, Tau2, Cdur, Beta, Alpha, title)

# new values
Tau2 = 600
Cdur = 1.0 #40.0
Beta = 0.001667 #0.0015
Alpha = 1.0 #0.065
title = "New: Tau2=600, Cdur=40.0, Beta=0.001667, Alpha=0.065"

#nmda_test(weight, Tau2, Cdur, Beta, title)

weights = [0.1] #[0.06, 0.08, 0.10, 0.12]

def test ():
  for weight in weights:
    title = "Weight: " + str(weight)
    nmda_test(weight, Tau2, Cdur, Beta, Alpha, title)