Thalamic interneuron multicompartment model (Zhu et al. 1999)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:116862
This is an attempt to recreate a set of simulations originally performed in 1994 under NEURON version 3 and last tested in 1999. When I ran it now it did not behave exactly the same as previously which I suspect is due to some minor mod file changes on my side rather than due to any differences among versions. After playing around with the parameters a little bit I was able to get something that looks generally like a physiological trace in J Neurophysiol, 81:702--711, 1999, fig. 8b top trace. This sad preface is simply offered in order to encourage anyone who is interested in this model to make and post fixes. I'm happy to help out. Simulation by JJ Zhu To run nrnivmodl nrngui.hoc
Reference:
1 . Zhu JJ, Uhlrich DJ, Lytton WW (1999) Burst firing in identified rat geniculate interneurons. Neuroscience 91:1445-60 [PubMed]
2 . Zhu JJ, Lytton WW, Xue JT, Uhlrich DJ (1999) An intrinsic oscillation in interneurons of the rat lateral geniculate nucleus. J Neurophysiol 81:702-11 [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: Thalamus;
Cell Type(s):
Channel(s): I Na,t; I L high threshold; I T low threshold; I K,leak; I h; I K,Ca; I CAN;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Bursting; Oscillations;
Implementer(s): Zhu, J. Julius [jjzhu at virginia.edu];
Search NeuronDB for information about:  I Na,t; I L high threshold; I T low threshold; I K,leak; I h; I K,Ca; I CAN;
/
b09jan13
readme.html
AMPA.mod
cadecay.mod
clampex.mod *
cp.mod *
cp2.mod *
GABAA.mod
GABAB.mod
HH2.mod *
Iahp.mod *
Ican.mod *
Ih.mod *
IL.mod
IL3.mod *
IT.mod *
IT2.mod *
kdr2.mod *
kleak.mod *
kmbg.mod
naf2.mod *
nap.mod *
NMDA.mod
nthh.mod *
ntIh.mod *
ntleak.mod
ntt.mod *
pregencv.mod
vecst.mod
batch_.hoc
bg_cvode.inc
misc.h
mosinit.hoc *
netcon.inc
screenshot.jpg
                            
// $Id: misc.h,v 1.13 2009/01/11 23:19:00 billl Exp $

#include <stdlib.h>
#include <math.h>
#include <limits.h> /* contains LONG_MAX */
#include <time.h>
#include <sys/time.h>
// #include <values.h>
#include <pthread.h>

typedef struct LISTVEC {
  int isz;
  double** pv;
  unsigned int* plen;
  unsigned int* pbuflen;
} ListVec;

typedef struct BVEC {
 int size;
 int bufsize;
 short *x;
 Object* o;
} bvec;

#define BYTEHEADER int _II__;  char *_IN__; char _OUT__[16]; int BYTESWAP_FLAG=0;
#define BYTESWAP(_X__,_TYPE__) \
    if (BYTESWAP_FLAG == 1) { \
	_IN__ = (char *) &(_X__); \
	for (_II__=0;_II__<sizeof(_TYPE__);_II__++) { \
		_OUT__[_II__] = _IN__[sizeof(_TYPE__)-_II__-1]; } \
	(_X__) = *((_TYPE__ *) &_OUT__); \
    }

#define UNCODE(_X_,_J_,_Y_) {(_Y_)=floor((_X_)/sc[(_J_)])/sc[4]; \
                             (_Y_)=floor(sc[4]*((_Y_)-floor(_Y_))+0.5);}

#define	SQRT2PI		2.5066282746
#define VRRY 200
#define ISVEC(_OB__) (strncmp(hoc_object_name(_OB__),"Vector",6)==0)

// Andre Fentons cast designations
typedef	unsigned char	ui1;	/* one byte unsigned integer */
typedef	char		si1;	/* one byte signed integer */
typedef unsigned short	ui2;	/* two byte unsigned integer */
typedef short		si2;	/* two byte signed integer */
typedef unsigned int	ui4;	/* four byte unsigned integer */
typedef int		si4;	/* four byte signed integer */
typedef float		sf4;	/* four byte signed floating point number */
typedef double		sf8;	/* eight byte signed floating point number */

#ifndef NRN_VERSION_GTEQ_8_2_0
extern double *vector_newsize();
extern unsigned int scrsz;
extern unsigned int *scr;
extern unsigned int *scrset(int);
extern double BVBASE;
extern double* hoc_pgetarg();
extern void hoc_notify_iv();
extern double hoc_call_func(Symbol*, int narg);
extern FILE* hoc_obj_file_arg(int narg);
extern Object** hoc_objgetarg();
char** hoc_pgargstr();
extern void vector_resize();
extern int vector_instance_px();
extern void* vector_arg();
extern double* vector_vec();
extern double hoc_epsilon;
extern int stoprun;
extern void set_seed();
extern double mcell_ran4();
extern int nrn_mlh_gsort();
extern int ivoc_list_count(Object*);
extern int hoc_is_double_arg(int narg);
extern Symbol *hoc_lookup(const char*);
extern Point_process* ob2pntproc(Object*);
Object* ivoc_list_item(Object*, int);
Symbol* hoc_get_symbol(const char* var);
extern char* hoc_object_name(Object*);
extern int cmpdfn(double a, double b);
void FillListVec(ListVec* p,double dval);
extern short *nrn_artcell_qindex_;
extern double nrn_event_queue_stats(double*);
extern void clear_event_queue();
#endif
extern ListVec* AllocILV(Object*, int, double *);
extern ListVec* AllocListVec(Object* p);
extern void FreeListVec(ListVec** pp);
static void hxe() { hoc_execerror("",0); }
extern int IsList (Object* p);
extern int openvec(int, double **);
static double sc[6];