Dentate gyrus network model pattern separation and granule cell scaling in epilepsy (Yim et al 2015)

 Download zip file 
Help downloading and running models
Accession:185355
The dentate gyrus (DG) is thought to enable efficient hippocampal memory acquisition via pattern separation. With patterns defined as spatiotemporally distributed action potential sequences, the principal DG output neurons (granule cells, GCs), presumably sparsen and separate similar input patterns from the perforant path (PP). In electrophysiological experiments, we have demonstrated that during temporal lobe epilepsy (TLE), GCs downscale their excitability by transcriptional upregulation of ‘leak’ channels. Here we studied whether this cell type-specific intrinsic plasticity is in a position to homeostatically adjust DG network function. We modified an established conductance-based computer model of the DG network such that it realizes a spatiotemporal pattern separation task, and quantified its performance with and without the experimentally constrained leaky GC phenotype. ...
Reference:
1 . Yim MY, Hanuschkin A, Wolfart J (2015) Intrinsic rescaling of granule cells restores pattern separation ability of a dentate gyrus network model during epileptic hyperexcitability. Hippocampus 25:297-308 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Dentate gyrus;
Cell Type(s): Dentate gyrus granule GLU cell; Dentate gyrus mossy cell; Dentate gyrus basket cell; Dentate gyrus hilar cell; Dentate gyrus MOPP cell;
Channel(s): I Chloride; I K,leak; I Cl, leak; Kir; Kir2 leak;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Gene(s): IRK; Kir2.1 KCNJ2; Kir2.2 KCNJ12; Kir2.3 KCNJ4; Kir2.4 KCNJ14;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Spatio-temporal Activity Patterns; Intrinsic plasticity; Pathophysiology; Epilepsy; Homeostasis; Pattern Separation;
Implementer(s): Yim, Man Yi [manyi.yim at googlemail.com]; Hanuschkin, Alexander ; Wolfart, Jakob ;
Search NeuronDB for information about:  Dentate gyrus granule GLU cell; GabaA; AMPA; I Chloride; I K,leak; I Cl, leak; Kir; Kir2 leak; Gaba; Glutamate;
### Analysis of DG network data ###
# This Python code creates a scatter plot of output vs input sim scores.
# Enter the idname

# ModelDB file along with publication:
# Yim MY, Hanuschkin A, Wolfart J (2015) Hippocampus 25:297-308.
# http://onlinelibrary.wiley.com/doi/10.1002/hipo.22373/abstract

# modified and augmented by
# Man Yi Yim / 2015
# Alexander Hanuschkin / 2011

import pylab
import numpy
import matplotlib as mpl
font_size = 12	# 20
mpl.rcParams['axes.titlesize'] = font_size+10
mpl.rcParams['xtick.labelsize'] = font_size+6
mpl.rcParams['ytick.labelsize'] = font_size+6
mpl.rcParams['axes.labelsize'] = font_size+8
mpl.rcParams['legend.fontsize'] = font_size
mpl.rcParams['font.size'] = font_size+10

sid = 0
sidm = 12
nid = 6
step = 2
delta = numpy.array([20])/2.
dur = 200.	# duration of the simulation
bin = 1.
ninput = 100	# number of input sources
ncell = 500	# number of neurons (GCs)
#idname ='-pp10-gaba1-kir1-st0'

def corr_score(file1,file2,delta,bin=1.,dur=100.,ncell=500):
	"""Similarity score by correlation coefficient. The spike trains are convolved with a triangular kernel."""
	d1 = numpy.loadtxt(file1)
	d2 = numpy.loadtxt(file2)
	x = numpy.zeros(int(ncell*dur/bin))
	y = numpy.zeros(int(ncell*dur/bin))
	for j in range(ncell):
		if d1.size == 2:
			s1 = numpy.array(d1[0]*(d1[1]==j))
		else:
			s1 = d1[d1[:,1]==j,0]
		if d2.size == 2:
			s2 = numpy.array(d2[0]*(d2[1]==j))
		else:
			s2 = d2[d2[:,1]==j,0]
		kern = numpy.append(numpy.arange(delta/bin),numpy.arange(delta/bin,-1,-1))
		ts1,dump = pylab.histogram(s1,numpy.arange(0.,dur+bin,bin))
		ts2,dump = pylab.histogram(s2,numpy.arange(0.,dur+bin,bin))
		x[j*dur/bin:(j+1)*dur/bin] = numpy.convolve(ts1,kern,'same')
		y[j*dur/bin:(j+1)*dur/bin] = numpy.convolve(ts2,kern,'same')
        x = x - pylab.mean(x)
        y = y - pylab.mean(y)
        cor = sum(x*y)/(len(x)*pylab.std(x)*pylab.std(y))
        return cor

pylab.figure()
fin1 = 'StimIn-'+str(sid)+'-'+str(nid)+idname+'.txt'
fout1 = 'GCsp-'+str(sid)+'-'+str(nid)+idname+'.txt'
inscore = numpy.empty((delta.size,sidm*(sidm+1)/2+1))
outscore = numpy.empty((delta.size,sidm*(sidm+1)/2+1))
for k in range(delta.size):
	inscore[k,0] = corr_score(fin1,fin1,delta[k],bin,dur,ninput)
	outscore[k,0] = corr_score(fout1,fout1,delta[k],bin,dur,ncell)
count = 1
for j in range(0,sidm):
	fin1 = 'StimIn-'+str(j)+'-'+str(nid)+idname+'.txt'
	fout1 = 'GCsp-'+str(j)+'-'+str(nid)+idname+'.txt'
	for m in range(j+1,sidm+1):
		fin2 = 'StimIn-'+str(m)+'-'+str(nid)+idname+'.txt'
		fout2 = 'GCsp-'+str(m)+'-'+str(nid)+idname+'.txt'
		for k in range(delta.size):
			inscore[k,count] = corr_score(fin1,fin2,delta[k],bin,dur,ninput)
			outscore[k,count] = corr_score(fout1,fout2,delta[k],bin,dur,ncell)
		count += 1

for k in range(delta.size):
	pylab.plot(inscore[k,:],outscore[k,:],'ko',label='width='+str(2*delta[k]))
pylab.plot([0,1],[0,1],'k--',linewidth=2)
pylab.axis([-0.05,1.05,-0.05,1.05])
pylab.xlabel('Input similarity score')
pylab.ylabel('Output similarity score')
pylab.savefig('sim_score_'+idname+'.eps')
f_write = open('sim_score'+idname+'.txt','w')
for j in range(inscore.size):
	f_write.write(str(inscore[0][j])+'\t'+str(outscore[0][j])+'\n')
f_write.close()
pylab.show()

Loading data, please wait...