Fronto-parietal visuospatial WM model with HH cells (Edin et al 2007)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:98017
1) J Cogn Neurosci: 3 structural mechanisms that had been hypothesized to underlie vsWM development during childhood were evaluated by simulating the model and comparing results to fMRI. It was concluded that inter-regional synaptic connection strength cause vsWM development. 2) J Integr Neurosci: Given the importance of fronto-parietal connections, we tested whether connection asymmetry affected resistance to distraction. We drew the conclusion that stronger frontal connections are beneficial. By comparing model results to EEG, we concluded that the brain indeed has stronger frontal-to-parietal connections than vice versa.
Reference:
1 . Edin F, Macoveanu J, Olesen P, Tegnér J, Klingberg T (2007) Stronger synaptic connectivity as a mechanism behind development of working memory-related brain activity during childhood. J Cogn Neurosci 19:750-60 [PubMed]
2 . Edin F, Klingberg T, Stödberg T, Tegnér J (2007) Fronto-parietal connection asymmetry regulates working memory distractibility. J Integr Neurosci 6:567-96 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Abstract Wang-Buzsaki neuron;
Channel(s):
Gap Junctions: Gap junctions;
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Working memory; Attractor Neural Network;
Implementer(s):
Search NeuronDB for information about:  Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell;
#!/usr/bin/env python 

# Comment:
# SimLoop.py program loops over simulations. The following steps are performed:  
# 1. One writes all parameters needed for a series of simulations in a file
#    whose file name contains the word SERIES. Let's call this file the SERIES
#    file. The SERIES file can be saved anywhere in the file system.
# 2. One enters a simulation catalog, i.e. a catalog where SimLoop and the
#    simulation program exists.
# 3. One runs SimLoop with the SERIES file as argument. SimLoop copies the
#    SERIES file to a file named SERIES in the simulation directory.
# 4. SimLoop updates the counter within the original SERIES file (but not 
#    SERIES in the simulation directory) to the next position,
#    so that other SimLoop instances can start new simulations from the same
#    SERIES file.
# 5. The simulation program reads parameters from SERIES. The simulation is 
#    performed.
# 6. A new directory with a name based on the current date and time is created
#    to save the results of a simulation. All files needed to run the 
#    simulation, as well as the results files are copied into the new 
#    directory.
# 7. SimLoop writes the name of the directory where results are saved onto 
#    the SERIES file for future reference.
# 8. Old files (files ending with ~) are removed.
# 9. Steps 3-8 are repeated until all simulations have been performed.
#10. The contents of SERIES is copied to the original SERIES file.

# Author: Fredrik Edin, 2004
# Address: freedin@nada.kth.se



import sys, os, shutil, glob, string
from time import time, localtime, strftime, gmtime
from string import split

# Function which reads rows in the SERIES file until it comes to a row 
# not beginning with #.
def skipComment():
	pos = f.tell()
	#print pos
	i = 1
	s = f.readline()
	#print str( i ) + ' ' + s
	while s and s[0] == '#':
		pos = f.tell()
		s = f.readline()
		i = i + 1
		#print str( i ) + ' ' + str(pos) + ' ' + s
	f.seek( pos )

# Initiation
finished = 0
iter = 1

# Step 3 above
name = sys.argv[1]
if sys.platform != 'win32':
	pathdelimiter = '/'
	home = '/'
	pathstring = '/DATA/'
else:
	pathdelimiter = '\\'
	home = 'C:\\'
	pathstring = '\\DATA\\'

# Transform name into name with absolute path
if name[0] != '~' and string.find( name, home ):
	name = os.getcwd()+pathdelimiter+name
else:
	name = 'C:\\Documents and Settings\\Fredrik Edin\\Mina dokument\\Neuron\\STANDARDFILER\\' + name[1:] # CHANGE #

if name == os.getcwd() + pathdelimiter + 'SERIES.txt':
	print 'ERROR: The SERIES file should be something other than the'
	print 'file SERIES in the simulation directory'
	sys.exit()	


# Determine file name, stripped of path
pathpos = string.rfind( name, pathdelimiter )
if pathpos >= 0:
	onlyname = name[pathpos+1:]
else:
	onlyname = name



# Loop with steps 3-8 above
while finished == 0:

	# Step 3 above
	# copy file to SERIES (which MultiModuleWMNetXP.hoc reads) without
	# counter updated to next position
	shutil.copy( name, 'SERIES.txt' )

	# Step 4 above
	f = open( name, 'r+' )

	# read comments at head of file
	skipComment()
	
	# Read counter position
	s = f.readline()
	currpos = f.tell()
	curr = int( f.readline() )
        
	# skip to current simulation (the one to be simulated by the 
	# simulation program)
	rg = range( curr )
	skipComment()
	for i in rg:
		f.readline()
		skipComment()

	# read first row of current simulation to learn the number
	# of rows of the simulation blocks
	firstrowpos = f.tell()
	firstrow = f.readline()
	restoffile = f.read()
	f.close()

	# Update counter
	num = int( split(firstrow)[2] )
	newcurr = curr + num
	strcurr = '0000' + str( newcurr )
	strcurr = strcurr[len( strcurr )-5:] + '\n'
	f = open( name, 'r+')
	f.seek( currpos )
	f.write( strcurr )
	f.close()
	print "Simulation #: " + str( iter )
	starttime = time()
	# End of step 4

	# Step 5 above
	if sys.platform == 'win32':
		os.system( 'nrniv MultiModuleWMNetXP.hoc' )
		#print "No simulation"
	elif not string.find( sys.platform, 'linux' ):  # 0 = found on place 0
		os.system( 'i686/special MultiModuleWMNet.hoc' )
	elif not string.find( sys.platform, 'sun' ):    # 0 = found on place 0
		os.system('nice sparc/special MultiModuleWMNet.hoc')

	dt = gmtime( time() - starttime )
	if dt[3] != 0:
	    tstr = "%H:%M:%S"
	else:
	    tstr = "%M:%S"

	print "Simulation finished. Elapsed time: " + strftime( tstr,dt )

	# Step 6 above
	now=os.getcwd() + pathstring + strftime( "%y%m%d.%H%M.%S",localtime( time() ) )

	os.mkdir( now )
	shutil.copy( 'SERIES.txt', now+pathdelimiter+onlyname )
	files_to_copy = ['SimLoopXP.py','ECell.hoc','ICell.hoc','MultiModuleWMNetXP.hoc','MyRandom.hoc','Net.hoc','Results.hoc','Simulator.hoc','View.hoc','rAMPA.txt','rNMDA.txt','RandomSeed.py'] + glob.glob( '*.mod' ) + glob.glob( 'LFP*.txt' )
	for file in files_to_copy:
		shutil.copy( file, now )
	
	files_to_move = ['C.txt','CKey.txt','Q.txt','QKey.txt','Connections.txt','Params.txt','ParamKey.txt','Parameters.txt','APs.txt','SERIES.txt'] + glob.glob( 'CURRENT*.txt' ) + glob.glob( 'X*' ) + glob.glob( 'SEED' )
	for file in files_to_move:
		shutil.copy( file, now )
		#os.remove( file )

	
	# Steps 7 above.
	# skip to current simulation (the one just simulated by the 
	# simulation program) and
	f = open( name, 'r+')
	skipComment()
	s = f.readline()
	s = f.readline()
	rg = range( curr )
	skipComment()
	for i in rg:
		s = f.readline()
		skipComment()
	firstrowpos = f.tell()
	firstrow = f.readline()
	restoffile = f.read()
	f.seek( firstrowpos )

	# a) write path to directory containing results onto SERIES
	firstrow = firstrow[:len(firstrow)-1]+'\t'+now+'\n'
	f.write( firstrow )
	f.write( restoffile )

	# b) see whether there are any simulations left
	f.seek( firstrowpos )
	f.readline()
	skipComment()
	rg = range( num-1 )
	for i in rg:
		f.readline()
		skipComment()

	s = f.read()
	if len(s) < 2:
		finished = 1
	f.close()
	# End of step 7

	# Remove old files
	# Step 8 above.
	if os.path.exists( name+'~' ):
		os.remove( name+'~' )
	filestoremove = glob.glob( '*~' )
	for fil in filestoremove:
		os.remove( fil )
	iter = iter + 1

# Old stuff not used at the moment
# save series name in AllSeries file
#fpath = 'C:\Neuron\mixed_synapses_temp\multimodulenet'
#f = open( fpath + 'AllSeries', 'a')
#f.write( name + '\n' )
#f.close()
#os.remove( fpath + '*~' )