Principles governing the operation of synaptic inhibition in dendrites (Gidon & Segev 2012)

 Download zip file 
Help downloading and running models
Accession:226401
A simple result of Gidon & Segev 2012 was provided where distal (off-path) inhibition is demonstrated to be more effective than proximal (on-path) inhibition in a ball and stick neuron.
Reference:
1 . Gidon A, Segev I (2012) Principles governing the operation of synaptic inhibition in dendrites. Neuron 75:330-41 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Simplified Models; Synaptic Integration;
Implementer(s): Morse, Tom [Tom.Morse at Yale.edu];
COMMENT
  zoidsyn.mod
  Generates a train of symmetrically trapeZoidal conductance changes.
  User specifies trf (duration of rise/fall ramps), tp (duration of plateau),
  start (onset of first trapezoid), interval, i.e. period between 
  trapezoid onsets), and number of trapezoids.
  Error checking in INIT block ensures that interval is longer 
  than trapezoid duration.
  4/1/2012 NTC, minor modifications 4/3/2012 TMM
ENDCOMMENT

NEURON {
  POINT_PROCESS ZoidSyn
  RANGE trf, tp
  RANGE start, interval, number
  RANGE e, gmax, g, i
  NONSPECIFIC_CURRENT i
}

UNITS {
  (mV) = (millivolt)
  (nS) = (nanosiemens)
  (nA) = (nanoamp)
}

PARAMETER {
  trf (ms) <0, 1e9> : duration of rising and falling phases
  tp  (ms) <0, 1e9> : duration of plateau
  start (ms) <0, 1e9> : latency of first transient
  interval (ms) <0, 1e9> : period, i.e. interval between transient onsets
  number : how many to deliver
  e   (mV) : reversal potential
  gmax (nS) <0, 1e9> : conductance during plateau
}

ASSIGNED {
  v (mV)
  i (nA)
  on
  tally : how many more to deliver
  m (1/ms)
  b (1)
  dur (ms) : sum of twice the rise/fall time trp plus tp
  t0 (ms)
  g (nS)
}

INITIAL {
  if (trf <= 0) {
    trf = 1
UNITSOFF
    printf("trf must be longer than 0\n")
    printf("trf has been increased to %g ms\n", trf)
UNITSON
  }
  if (tp < 0) {
    tp = 0
UNITSOFF
    printf("tp must not be negative\n")
    printf("tp has been changed to %g ms\n", tp)
UNITSON
  }
  dur = 2*trf + tp
  if (interval <= dur) {
    interval = dur + 1 (ms)
UNITSOFF
    printf("interval must be longer than trapezoid duration\n")
    printf("interval has been increased to %g ms\n", interval)
UNITSON
  }
  on = 0
  m = 0
  b = 0
  tally = number
  if (tally > 0) {
    net_send(start, 1)
    tally = tally - 1
  }
}

BREAKPOINT {
  g = gmax * (m*(t-t0) + b)
  i = (0.001)*g*(v-e)
}

NET_RECEIVE (w) {
  if ((on == 0) && (flag == 1)) {
    : enter rising phase
    t0 = t
    m = 1/trf
    b = 0
    on = 1
    : prepare for plateau phase
    net_send(trf, 2)
  }
  if (flag == 2) {
    : enter plateau
    m = 0
    b = 1
    : prepare for falling phase
    net_send(tp, 3)
  }
  if (flag == 3) {
    : enter falling phase
    t0 = t
    m = -1/trf
    b = 1
    : prepare to end
    net_send(trf, 4)
  }
  if (flag == 4) {
    : end
    m = 0
    b = 0
    on = 0
    if (tally > 0) {
      : prepare to turn it on again
      net_send(interval - dur, 1)
      tally = tally - 1
    }
  }
}