Effects of increasing CREB on storage and recall processes in a CA1 network (Bianchi et al. 2014)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:151126
Several recent results suggest that boosting the CREB pathway improves hippocampal-dependent memory in healthy rodents and restores this type of memory in an AD mouse model. However, not much is known about how CREB-dependent neuronal alterations in synaptic strength, excitability and LTP can boost memory formation in the complex architecture of a neuronal network. Using a model of a CA1 microcircuit, we investigate whether hippocampal CA1 pyramidal neuron properties altered by increasing CREB activity may contribute to improve memory storage and recall. With a set of patterns presented to a network, we find that the pattern recall quality under AD-like conditions is significantly better when boosting CREB function with respect to control. The results are robust and consistent upon increasing the synaptic damage expected by AD progression, supporting the idea that the use of CREB-based therapies could provide a new approach to treat AD.
Reference:
1 . Bianchi D, De Michele P, Marchetti C, Tirozzi B, Cuomo S, Marie H, Migliore M (2014) Effects of increasing CREB-dependent transcription on the storage and recall processes in a hippocampal CA1 microcircuit. Hippocampus 24:165-77 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal cell; Hippocampus CA1 interneuron oriens alveus cell; Hippocampus CA1 basket cell;
Channel(s): I Na,t; I A; I K; I M; I h; I K,Ca; I Calcium; I_AHP; I Cl, leak; Ca pump;
Gap Junctions:
Receptor(s): GabaA; GabaB; AMPA; NMDA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): STDP; Aging/Alzheimer`s; Depolarization block; Storage/recall; CREB;
Implementer(s): Bianchi, Daniela [danielabianchi12 -at- gmail.com]; De Michele, Pasquale [pasquale.demichele at unina.it];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal cell; Hippocampus CA1 interneuron oriens alveus cell; GabaA; GabaB; AMPA; NMDA; I Na,t; I A; I K; I M; I h; I K,Ca; I Calcium; I_AHP; I Cl, leak; Ca pump; Gaba; Glutamate;
/
Bianchietal
Results
Weights
readme.txt
ANsyn.mod *
bgka.mod *
burststim2.mod
cad.mod
cagk.mod *
cal.mod *
calH.mod
car.mod *
cat.mod *
ccanl.mod *
d3.mod *
gskch.mod *
h.mod
IA.mod
ichan2.mod *
Ih.mod *
kadist.mod
kaprox.mod
Kaxon.mod *
kca.mod *
Kdend.mod *
kdr.mod
kdrax.mod
km.mod
Ksoma.mod *
LcaMig.mod *
my_exp2syn.mod *
na3.mod
na3dend.mod
na3notrunk.mod
Naaxon.mod *
Nadend.mod *
nap.mod *
Nasoma.mod *
nax.mod
nca.mod *
nmdanet.mod
regn_stim.mod
somacar.mod *
STDPE2Syn2.mod
axoaxonic_cell17S.hoc *
basket_cell17S.hoc *
bistratified_cell13S.hoc *
burst_cell.hoc *
HAM_SR1.ses
mosinit.hoc
olm_cell2.hoc
PureRec_phase.hoc
PureRec_phase_ser.hoc
pyramidal_cell4.hoc
ranstream.hoc *
stim_cell.hoc
Sto_phase.hoc
Sto_phase_ser.hoc
                            
: $Id: netstim.mod 1887 2007-11-19 12:34:00Z hines $
: comments at end
: Modified from NetStim so that spikes are Gaussian distributed around
: regular spike times (BPG 14-1-09)
: Spikes outside regular interval are moved to just inside the interval
: (this will distort the distribution, so noise level should be chosen
: so that this does not happen very often!!)


NEURON	{ 
  ARTIFICIAL_CELL RegnStim
  RANGE interval, number, start
  RANGE noise
  POINTER donotuse
}

PARAMETER {
	interval	= 10 (ms) <1e-9,1e9>: time between spikes (msec)
	number	= 10 <0,1e9>	: number of spikes (independent of noise)
	start		= 50 (ms)	: start of first spike
	noise		= 0 <0,1>	: amount of randomness (0.0 - 1.0)
}

ASSIGNED {
	event (ms)
	on
      er
	ispike
	tspike	: regular spike time
	donotuse
}

PROCEDURE seed(x) {
	set_seed(x)
}

INITIAL {
	on = 0 : off
	tspike = start
	ispike = 0
	if (noise < 0) {
		noise = 0
	}
	if (noise > 1) {
		noise = 1
	}
	if (start >= 0 && number > 0) {
		on = 1
		: randomize the first spike 
            er=erand()
            while (er<0){
                  er=erand()}

		event = start + noise*interval*er
             :printf("event %f\n",event)
            : but not earlier than 0
		if (event < 0) {
			event = 0
		}
		net_send(event, 3)
       
	}
}	

PROCEDURE init_sequence(t(ms)) {
	if (number > 0) {
		on = 1
		event = 0
		ispike = 0
	}
}

FUNCTION invl(mean (ms)) (ms) {
	if (mean <= 0.) {
		mean = .01 (ms) : I would worry if it were 0.
	}
	if (noise == 0) {
		invl = mean
	}else{
:		invl = (1. - noise)*mean + noise*mean*erand()
		invl = tspike + mean + noise*mean*erand() - t
		if (invl <= 0) {
			invl = .01 (ms)	: reset to small interval
		}
:		if (t+invl >= tspike+mean) {
:			invl = tspike + mean - t - .01
:		}
	}
	tspike = tspike + mean
    :  printf(" tspike %f\t invl %f\t t %f  \n",tspike, invl,t)
}
VERBATIM
double nrn_random_pick(void* r);
void* nrn_random_arg(int argpos);
ENDVERBATIM

FUNCTION erand() {
VERBATIM
	if (_p_donotuse) {
		/*
		:Supports separate independent but reproducible streams for
		: each instance. However, the corresponding hoc Random
		: distribution MUST be set to Random.normal(0, 1) (BPG)
		*/
		_lerand = nrn_random_pick(_p_donotuse);
	}else{
ENDVERBATIM
		: the old standby. Cannot use if reproducible parallel sim
		: independent of nhost or which host this instance is on
		: is desired, since each instance on this cpu draws from
		: the same stream
		erand = normrand(0, 1)
VERBATIM
	}
ENDVERBATIM
}

PROCEDURE noiseFromRandom() {
VERBATIM
 {
	void** pv = (void**)(&_p_donotuse);
	if (ifarg(1)) {
		*pv = nrn_random_arg(1);
	}else{
		*pv = (void*)0;
	}
 }
ENDVERBATIM
}

PROCEDURE next_invl() {
	if (number > 0) {
		event = invl(interval)
	}
	if (ispike >= number) {
		on = 0
	}
}

NET_RECEIVE (w) {
	if (flag == 0) { : external event
		if (w > 0 && on == 0) { : turn on spike sequence
			: but not if a netsend is on the queue
			init_sequence(t)
			: randomize the first spike so on average it occurs at
			: noise*interval (most likely interval is always 0)
			next_invl()
			event = event - interval*(1. - noise)
			net_send(event, 1)
		}else if (w < 0) { : turn off spiking definitively
			on = 0
		}
	}
	if (flag == 3) { : from INITIAL
		if (on == 1) { : but ignore if turned off by external event
			init_sequence(t)
			net_send(0, 1)
		}
	}
	if (flag == 1 && on == 1) {
		ispike = ispike + 1
		net_event(t)
		next_invl()
  		if (on == 1) {
			net_send(event, 1)
		}
	}

}

COMMENT
Presynaptic spike generator
---------------------------

This mechanism has been written to be able to use synapses in a single
neuron receiving various types of presynaptic trains.  This is a "fake"
presynaptic compartment containing a spike generator.  The trains
of spikes can be either periodic or noisy (Poisson-distributed)

Parameters;
   noise: 	between 0 (no noise-periodic) and 1 (fully noisy)
   interval: 	mean time between spikes (ms)
   number: 	number of spikes (independent of noise)

Written by Z. Mainen, modified by A. Destexhe, The Salk Institute

Modified by Michael Hines for use with CVode
The intrinsic bursting parameters have been removed since
generators can stimulate other generators to create complicated bursting
patterns with independent statistics (see below)

Modified by Michael Hines to use logical event style with NET_RECEIVE
This stimulator can also be triggered by an input event.
If the stimulator is in the on==0 state (no net_send events on queue)
 and receives a positive weight
event, then the stimulator changes to the on=1 state and goes through
its entire spike sequence before changing to the on=0 state. During
that time it ignores any positive weight events. If, in an on!=0 state,
the stimulator receives a negative weight event, the stimulator will
change to the on==0 state. In the on==0 state, it will ignore any ariving
net_send events. A change to the on==1 state immediately fires the first spike of
its sequence.

ENDCOMMENT


Loading data, please wait...