Oscillations, phase-of-firing coding and STDP: an efficient learning scheme (Masquelier et al. 2009)

 Download zip file 
Help downloading and running models
Accession:123928
The model demonstrates how a common oscillatory drive for a group of neurons formats and reliabilizes their spike times - through an activation-to-phase conversion - so that repeating activation patterns can be easily detected and learned by a downstream neuron equipped with STDP, and then recognized in just one oscillation cycle.
Reference:
1 . Masquelier T, Hugues E, Deco G, Thorpe SJ (2009) Oscillations, phase-of-firing coding, and spike timing-dependent plasticity: an efficient learning scheme. J Neurosci 29:13484-93 [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:
Cell Type(s): Abstract integrate-and-fire leaky neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: Brian; Python;
Model Concept(s): Pattern Recognition; Activity Patterns; Coincidence Detection; Temporal Pattern Generation; Oscillations; Synchronization; Spatio-temporal Activity Patterns; Synaptic Plasticity; Long-term Synaptic Plasticity; Unsupervised Learning; STDP;
Implementer(s): Masquelier, Tim [timothee.masquelier at alum.mit.edu];
# Dump all variables
# Under development...

printtime('************')
printtime('* Pickling *')
printtime('************')

# open pickle file for writing
f = open(os.path.join('..','data','output.'+'%03d' % (randState)+'.pkl'), 'w')

pickle.dump(endTime,f)
if monitorInput:
    localStartTime = time()*second
    print 'Pickling input spikes...'
    pickle.dump(inputSpike,f)
    print 'Done in: '+ str(time()*second-localStartTime)                        
if computeOutput:  
    localStartTime = time()*second
    print 'Pickling final weights...'
    pickle.dump(finalWeight,f)
    print 'Done in: '+ str(time()*second-localStartTime)                        
if monitorOutput:    
    localStartTime = time()*second
    print 'Pickling output spikes...'
    pickle.dump(outputSpike,f)    
    print 'Done in: '+ str(time()*second-localStartTime)                        
if monitorPot:    
    localStartTime = time()*second
    print 'Pickling membrane potential...'    
    pickle.dump(pot,f)
    print 'Done in: '+ str(time()*second-localStartTime)                            
if monitorCurrent:
    localStartTime = time()*second
    print 'Pickling current...'    
    pickle.dump(current,f)    
    print 'Done in: '+ str(time()*second-localStartTime)                            
if monitorRate:
    localStartTime = time()*second
    print 'Pickling rates...'    
    pickle.dump(rate,f)    
    print 'Done in: '+ str(time()*second-localStartTime)                            
# close pickle file
f.close()