Realistic barrel cortical column - NetPyNE (Huang et al., 2022)

 Download zip file 
Help downloading and running models
Accession:267551
Reconstructed rodent barrel cortical column (thalamic filter-and-fire input, L4 and L2/3 spiking neurons) based on measured distributions, so each run will create a different connectivity). Includes 13 types of inhibitory and excitatory neurons, implemented as Izhikevich neurons. Includes both a Matlab and a Python (NetPyNe) implementation.
Reference:
1 . Huang C, Zeldenrust F, Celikel T (2022) Cortical Representation of Touch in Silico Neuroinformatics [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Spiking neural network;
Brain Region(s)/Organism: Barrel cortex;
Cell Type(s): Abstract Izhikevich neuron; Barrel cortex L2/3 pyramidal cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NetPyNE;
Model Concept(s): Long-term Synaptic Plasticity; Action Potentials; Synaptic Integration; Synaptic Plasticity; Calcium dynamics; Sensory coding; Spike Frequency Adaptation; Spatial connectivity;
Implementer(s): Zeldenrust, Fleur [fleurzeldenrust at gmail.com]; Huang, Chao; Celikel, T;
:  Vector stream of events

NEURON {
	THREADSAFE
	ARTIFICIAL_CELL VecStim
	POINTER ptr
}

ASSIGNED {
	index
	etime (ms)
	ptr
}


INITIAL {
	index = 0
	element()
	if (index > 0) {
		net_send(etime - t, 1)
	}
}

NET_RECEIVE (w) {
	if (flag == 1) {
		net_event(t)
		element()
		if (index > 0) {
			net_send(etime - t, 1)
		}
	}
}

DESTRUCTOR {
VERBATIM
	void* vv = (void*)(_p_ptr);  
        if (vv) {
		hoc_obj_unref(*vector_pobj(vv));
	}
ENDVERBATIM
}

PROCEDURE element() {
VERBATIM	
  { void* vv; int i, size; double* px;
	i = (int)index;
	if (i >= 0) {
		vv = (void*)(_p_ptr);
		if (vv) {
			size = vector_capacity(vv);
			px = vector_vec(vv);
			if (i < size) {
				etime = px[i];
				index += 1.;
			}else{
				index = -1.;
			}
		}else{
			index = -1.;
		}
	}
  }
ENDVERBATIM
}

PROCEDURE play() {
VERBATIM
	void** pv;
	void* ptmp = NULL;
	if (ifarg(1)) {
		ptmp = vector_arg(1);
		hoc_obj_ref(*vector_pobj(ptmp));
	}
	pv = (void**)(&_p_ptr);
	if (*pv) {
		hoc_obj_unref(*vector_pobj(*pv));
	}
	*pv = ptmp;
ENDVERBATIM
}