/*----------------------------------------------------------------------------

    Simplified kinetic synapse mechanism
    ------------------------------------

    Demo file to show the behavior of a synaptic currents mediated by
    glutamate AMPA/kainate receptors, modeled using a minimal two-state 
    kinetic model.

    Kinetic model from Destexhe, A., Mainen, Z.F. and Sejnowski, T.J.
    Neural Computation, 6: 14-18, 1994.

  See details in:

  Destexhe, A., Mainen, Z.F. and Sejnowski, T.J.  Kinetic models of 
  synaptic transmission.  In: Methods in Neuronal Modeling (2nd edition; 
  edited by Koch, C. and Segev, I.), MIT press, Cambridge, 1998, pp. 1-25.

  (electronic copy available at http://cns.iaf.cnrs-gif.fr)


  Written by Alain Destexhe, Laval University, 1995

----------------------------------------------------------------------------*/



//----------------------------------------------------------------------------
//  load and define general graphical procedures
//----------------------------------------------------------------------------

// xopen("$(NEURONHOME)/lib/hoc/stdrun.hoc")

objectvar g[20]         // max 20 graphs
ngraph = 0

proc addgraph() { local ii  // define subroutine to add a new graph
                // addgraph("variable", minvalue, maxvalue)
    ngraph = ngraph+1
    ii = ngraph-1
    g[ii] = new Graph()
    g[ii].size(0,tstop,$2,$3)
    g[ii].xaxis()
    g[ii].yaxis()
    g[ii].addvar($s1,1,0)
    g[ii].save_name("graphList[0].")
    graphList[0].append(g[ii])
}

if(ismenu==0) {
  nrnmainmenu()         // create main menu
  nrncontrolmenu()      // crate control menu
  ismenu=1
}


//----------------------------------------------------------------------------
//  general parameters
//----------------------------------------------------------------------------

dt=0.025
tstop = 40      // 15 for single psp, 25 for train
runStopAt = tstop
steps_per_ms = 1/dt
celsius = 36
v_init = -70



//----------------------------------------------------------------------------
//  create compartments and insert passive properties
//----------------------------------------------------------------------------

create PRE,POST
forall {
  diam=10
  L=10
  insert pas
  g_pas=1/5000
  e_pas=v_init
}



//----------------------------------------------------------------------------
//  insert presynaptic mechanisms
//----------------------------------------------------------------------------

access PRE      // insert Hodgk-Hux. Na+ and K+ currents for spikes
insert hh2
ek = -90
gnabar_hh2 = 0.1
gkbar_hh2 = 0.03

objectvar stim      // insert current injection
PRE stim = new IClamp(.5)
// note: for older versions of neuron, use PulseStim instead of IClamp
stim.del = 2
stim.dur = 2        // 2 ms for single psp, 10 ms for train of psps
stim.amp = 0.1




//----------------------------------------------------------------------------
//  insert postsynaptic mechansisms
//----------------------------------------------------------------------------

objectvar c
c = new AMPA()          // create synapse
POST c.loc(0.5)         // assign postsynaptic compartment
setpointer c.pre, PRE.v(0.5)    // assign presynaptic compartment

Cmax_AMPA   = 1 //  (mM)     max transmitter concentration
Cdur_AMPA   = 1 //  (ms)     transmitter duration (rising phase)
Alpha_AMPA  = 1.1   //  (/ms mM)     forward (binding) rate
Beta_AMPA   = 0.19  //  (/ms)        backward (unbinding) rate
Erev_AMPA   = 0 //  (mV)         reversal potential
Prethresh_AMPA  = 0     //  (mV)         voltage level nec for release
Deadtime_AMPA   = 1 //  (ms)     mimimum time between release events
c.gmax      = 0.0001 // (umho)       maximum conductance



//----------------------------------------------------------------------------
//  add graphs
//----------------------------------------------------------------------------

addgraph("PRE.v(0.5)",-90,40)
addgraph("c.C",0,1)
g[1].addvar("c.R",1,0)

addgraph("c.i",-0.005,0.00001)
addgraph("POST.v(0.5)",v_init-2,v_init+8)