Activity dependent conductances in a neuron model (Liu et al. 1998)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:93321
"... We present a model of a stomatogastric ganglion (STG) neuron in which several Ca2+-dependent pathways are used to regulate the maximal conductances of membrane currents in an activity-dependent manner. Unlike previous models of this type, the regulation and modification of maximal conductances by electrical activity is unconstrained. The model has seven voltage-dependent membrane currents and uses three Ca2+ sensors acting on different time scales. ... The model suggests that neurons may regulate their conductances to maintain fixed patterns of electrical activity, rather than fixed maximal conductances, and that the regulation process requires feedback systems capable of reacting to changes of electrical activity on a number of different time scales."
Reference:
1 . Liu Z, Golowasch J, Marder E, Abbott LF (1998) A model neuron with activity-dependent conductances regulated by multiple calcium sensors. J Neurosci 18:2309-20 [PubMed]
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): I Na,t; I L high threshold; I T low threshold; I A; I K; I K,Ca; I Potassium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Bursting; Temporal Pattern Generation; Homeostasis;
Implementer(s): Morse, Tom [Tom.Morse at Yale.edu];
Search NeuronDB for information about:  I Na,t; I L high threshold; I T low threshold; I A; I K; I K,Ca; I Potassium;
// cntrl_buttons.hoc
objref fig3bottom_g[7]

freeze_state=0 // turns to 1 when model is frozen
fig3bottom_keep_lines = 0 // turns to 1 when keep lines for fig3bottom is on
xpanel("Figure 3 Liu, Golowasch, Marder, Abbott 1998")
xbutton("Resting model run: fig 3 A (top left)", "fig3topleft()")
xbutton("Resting model run: fig 3 B (top right)", "fig3topright()")
xbutton("Bursting model run: fig 3 A middle (left)", "fig3middleleft()")
xbutton("Bursting model run: fig 3 B middle (right)", "fig3middleright()")
xlabel("For the below, first, set the Scrn update interval")
xlabel("in the RunControl box to 100. That way it only takes 5 minutes.")
xbutton("fig 3 bottom","fig3bottom()")
xlabel("The below buttons allow a finer level of control")
xlabel("over the model.  These can be useful to set the model")
xlabel("to a particular state and examine that or the")
xlabel("activity dependent changes from there.")
xlabel("The below four buttons will set the max conductances:")
xbutton("fig 3 initialize to model A starting values","initial_model_A()")
xbutton("fig 3 initialize to model B starting values","initial_model_B()")
xbutton("fig 3 set model to papers final model A","final_model_A()")
xbutton("fig 3 set model to papers final model B","final_model_B()")
xbutton("fig 3 conductance labels","label_graphs()")
xbutton("Scale fig 3 bottom graphs to paper","fig3bottom_scale_to_paper()")
xbutton("View = plot on fig 3 bottom graphs","fig3bottom_view_eq_plot()")
xlabel("The below button turns off activity dependent change")
xlabel("by setting the time constant to a very large value")
xstatebutton("freeze model",&freeze_state,"freeze_unfreeze()")
xstatebutton("keep lines in fig3 bottom",&fig3bottom_keep_lines,"fig3_bot_keep()")
xpanel()

proc fig3topleft() {
  tstop=2000 // estimated from figure 3
  initial_model_A()
  init()
  run()
  print "fig 3 A top left (starting conductances for model A) graph complete"
}
proc fig3topright() {
  tstop=2000 // estimated from figure 3
  initial_model_B()
  init()
  run()
  print "fig 3 B top right (starting conductances for model B) graph complete"
}
proc fig3middleleft() {
  tstop=2000 // estimated from figure 3
  final_model_A()
  init()
  run()
  print "fig 3 A middle (final model A) graph complete"
}
proc fig3middleright() {
  tstop=2000 // estimated from figure 3
  final_model_B()
  init()
  run()
  print "fig 3 B middle (final model B) graph complete"
}
proc fig3bottom() {
  tstop=15000*6.5 // estimated from figure 3
// although the caption for figure 3 said 15 seconds was the simulation time
// for these graphs I found that the simulation looked similar when
// I ran the model about 6.5 times longer.

// set to model A, run, turn on keep lines, set to model B, set graph coords.
  fig3bottom_scale_to_paper()
  label_graphs()
  initial_model_A()
  init()
  run()
  fig3_bot_keep()  // hopefully keep lines wasn't already on!
  initial_model_B()
  init()
  run()
}

proc fig3bottom_view_eq_plot() {

  for i=0,6 {
    fig3bottom_g[i].exec_menu("View = plot")
  }
}

proc fig3bottom_scale_to_paper() {
  small_scale = 2  // uS/nF paper units
  large_scale = 50 // uS/nF
  // however NEURON conductances are in mA/cm2, cf is conversion factor
  small_scale /= cf
  large_scale /= cf

// the first two and the fith graphs have a smaller vertical scale
// 1e6 factor added after seen that the scale wasn't matching the screen coords.
// view_size arguments are ith view, left, right, bottom, top.
  fig3bottom_g[0].view_size(0,-10000,110000,-0.1*small_scale/1e6, 1.1*small_scale/1e6)
  fig3bottom_g[1].view_size(0,-10000,110000,-0.1*small_scale/1e6, 1.1*small_scale/1e6)
  fig3bottom_g[2].view_size(0,-10000,110000,-0.1*large_scale/1e6, 1.1*large_scale/1e6)
  fig3bottom_g[3].view_size(0,-10000,110000,-0.1*large_scale/1e6, 1.1*large_scale/1e6)
  fig3bottom_g[4].view_size(0,-10000,110000,-0.1*small_scale/1e6, 1.1*small_scale/1e6)
  fig3bottom_g[5].view_size(0,-10000,110000,-0.1*large_scale/1e6, 1.1*large_scale/1e6)
  fig3bottom_g[6].view_size(0,-10000,110000,-0.1*large_scale/1e6, 1.1*large_scale/1e6)
}

proc label_graphs() {
  xlabel_coord = 0.45
  ylabel_coord = 0.95
  fig3bottom_g[0].label(xlabel_coord,ylabel_coord,"CaT")
  fig3bottom_g[1].label(xlabel_coord,ylabel_coord,"CaS")
  fig3bottom_g[2].label(xlabel_coord,ylabel_coord,"A")
  fig3bottom_g[3].label(xlabel_coord,ylabel_coord,"KCa")
  fig3bottom_g[4].label(xlabel_coord,ylabel_coord,"H")
  fig3bottom_g[5].label(xlabel_coord,ylabel_coord,"Na")
  fig3bottom_g[6].label(xlabel_coord,ylabel_coord,"Kd")
}

proc fig3_bot_keep() {
  for i=0,6 {
  fig3bottom_g[i].exec_menu("Keep Lines")
  }
}

Loading data, please wait...