Thalamocortical augmenting response (Bazhenov et al 1998)

 Download zip file 
Help downloading and running models
Accession:37819
In the cortical model, augmenting responses were more powerful in the "input" layer compared with those in the "output" layer. Cortical stimulation of the network model produced augmenting responses in cortical neurons in distant cortical areas through corticothalamocortical loops and low-threshold intrathalamic augmentation. ... The predictions of the model were compared with in vivo recordings from neurons in cortical area 4 and thalamic ventrolateral nucleus of anesthetized cats. The known intrinsic properties of thalamic cells and thalamocortical interconnections can account for the basic properties of cortical augmenting responses. See reference for details. NEURON implementation note: cortical SU cells are getting slightly too little stimulation - reason unknown.
Reference:
1 . Bazhenov M, Timofeev I, Steriade M, Sejnowski TJ (1998) Computational models of thalamocortical augmenting responses. J Neurosci 18:6444-65 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Thalamus;
Cell Type(s): Thalamus geniculate nucleus/lateral principal GLU cell; Thalamus reticular nucleus GABA cell; Neocortex L5/6 pyramidal GLU cell;
Channel(s): I Na,t; I T low threshold; I A; I K,Ca;
Gap Junctions:
Receptor(s): GabaA; GabaB; AMPA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Synchronization; Synaptic Integration;
Implementer(s): Lytton, William [bill.lytton at downstate.edu];
Search NeuronDB for information about:  Thalamus geniculate nucleus/lateral principal GLU cell; Thalamus reticular nucleus GABA cell; Neocortex L5/6 pyramidal GLU cell; GabaA; GabaB; AMPA; I Na,t; I T low threshold; I A; I K,Ca; Gaba; Glutamate;
: $Id: ppsav.inc,v 1.19 2002/12/18 03:41:48 billl Exp $

COMMENT
USAGE: saving 'state variables' from artificial cells

  MOD file:
      add call to 'recval()' at end of INIT and BREAKPOINT sections

      INCLUDE "ppsav.inc"

  HOC files:
    initialize with : 
      PP.record(&PP.var,vec,tvec)
    turn off with :
      PP.record()
ENDCOMMENT

NEURON { 
  RANGE savnum
}

PARAMETER {
  savnum = 0 : values to save in vector
}

ASSIGNED {
  index
  space0
  space1
  space2
  space3
}

VERBATIM
#ifndef NRN_VERSION_GTEQ_8_2_0
extern double* vector_vec();
extern int vector_capacity();
extern void* vector_arg();
extern double* hoc_pgetarg();
extern Object** hoc_objgetarg(int);
extern char* hoc_object_name(Object*);
#endif
double *a1, *a2, *a3;
Object *tvec, *tmpvec;
char str[100];
ENDVERBATIM

PROCEDURE recval () {
VERBATIM	
  { void* vv; int i, size; double* px;
    if (savnum==0) { return 0; }
    vv = *((void**)(&space0));
    if (! vv) { hoc_execerror("ERR: no time vector defined for PP::recval.\n",0); }

    i = (int)index;
    vector_resize(vv, i+1);
    px = vector_vec(vv);
    px[i] = t;

    vv = *((void**)(&space1));
    vector_resize(vv, i+1);
    px = vector_vec(vv);
    px[i] = *a1;

    if (savnum>1) { 
      vv = *((void**)(&space2));
      vector_resize(vv, i+1);
      px = vector_vec(vv);
      px[i] = *a2;
    }

    if (savnum>2) { 
      vv = *((void**)(&space3));
      vector_resize(vv, i+1);
      px = vector_vec(vv);
      px[i] = *a3;
    }

    index += 1.;
  }
ENDVERBATIM
}

: record(&val1,vec1,&val2,vec2)
PROCEDURE record() {
VERBATIM
{
  void** vv;

  if (! ifarg(1)) { savnum=0; return 0;
  } 

  if (ifarg(3)) { /* nice place to save time */
    if (savnum==0) {
      vv = (void**)(&space0);
      *vv = vector_arg(3);
      tvec = *hoc_objgetarg(3);
      sprintf(str,"%s",hoc_object_name(tvec));
    } else {
      hoc_assign_str(hoc_pgargstr(3), str);
    }
  }
  if (savnum==0) {
    a1 = hoc_pgetarg(1);
    vv = (void**)(&space1);
    *vv = vector_arg(2);
    savnum=1;
  } else if (savnum==1) {
    a2 = hoc_pgetarg(1);
    vv = (void**)(&space2);
    *vv = vector_arg(2);
    savnum=2;
  } else if (savnum==2) {
    a3 = hoc_pgetarg(1);
    vv = (void**)(&space3);
    *vv = vector_arg(2);
    savnum=3;
  } else {
    printf("ERR -- no more space; PP.savnum=%g\n", savnum);
  }
}
ENDVERBATIM
}


Loading data, please wait...