Development of orientation-selective simple cell receptive fields (Rishikesh and Venkatesh, 2003)

 Download zip file 
Help downloading and running models
Accession:147929
Implementation of a computational model for the development of simple-cell receptive fields spanning the regimes before and after eye-opening. The before eye-opening period is governed by a correlation-based rule from Miller (Miller, J. Neurosci., 1994), and the post eye-opening period is governed by a self-organizing, experience-dependent dynamics derived in the reference below.
Reference:
1 . Rishikesh N, Venkatesh YV (2003) A computational model for the development of simple-cell receptive fields spanning the regimes before and after eye-opening Neurocomputing 50:125-158
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell; Synapse;
Brain Region(s)/Organism: Neocortex;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program;
Model Concept(s): Rate-coding model neurons; Unsupervised Learning; Winner-take-all; Development; Orientation selectivity; Vision;
Implementer(s): Narayanan, Rishikesh [rishi at iisc.ac.in];
#include"Analysis.h"

#define ORG_MIL 1
#define SIN_MIL 2
#define SIN_DEV 3
#define ANAL	4

void printhelp(char exname[])
{
	cerr << "\n\nUsage : \n\n" 
		 << "\t" << exname 
		 << " [-help] [-org] [-sin] [-dev] [-s] [filename]\n\n"
		 << " -help \t\t displays this message\n"
		 << " -org  \t\t runs millers original algorithm\n"
		 << " -sin  \t\t runs millers algorithm with sinusoids\n"
		 << " -dev  \t\t runs develop with self--organizing scheme\n"
		 << " -anal \t\t runs analysis with the status file\n"
		 << " -s    \t\t lets program run with status file\n"
		 << " filename\t is the status or parameter file.\n\n";
	exit(1);
}

main(int argc, char ** argv)
{
	int count;
	char * fila=new char[50];
	fila[0]='\0';
	int SET=0;
	int PROC=SIN_DEV;
	Orient orient ;
	Develop develop ;
	Analysis analysis ;

	for(count=1;count<argc;count++) {
        if (!strcmp(argv[count],"-s")) SET=1;
		else if (!strcmp(argv[count],"-org")) PROC=ORG_MIL;
		else if (!strcmp(argv[count],"-sin")) PROC=SIN_MIL;
		else if (!strcmp(argv[count],"-dev")) PROC=SIN_DEV;
		else if (!strcmp(argv[count],"-anal")) PROC=ANAL;
		else if (!strcmp(argv[count],"-help")) printhelp(argv[0]);
		else strcpy(fila, argv[count]);
	}
	if(fila[0] == '-'){
		cerr <<"\nUnknown Option : " << fila << endl ;
		printhelp(argv[0]);
	}

// Filename is not there in the command line..

	if(fila[0] == '\0') fila=NULL;


// Analysis of the RF's after simulation.


	if(PROC==ANAL){			
		analysis.LoadStatus(fila);
		analysis.AnalyzeRF();
	}

/************************************************************************
*
* Original Miller's simulation.
* If SET is set, then it means the filename has to be a status file
* Otherwise it means that it is a Parameters file only.
*
************************************************************************/

	else if(PROC==ORG_MIL){
		if(SET) orient.LoadStatus(fila);
		else orient.LoadParams(fila);
		orient.Start();
	}

/***********************************************************************
*
* Handles two cases: Miller's algo with sinusoids and the self
* -organized development of RF's with status file or parameter file.
*
* If SET is set, then it means the filename has to be a status file
* Otherwise it means that it is a Parameters file only.
*
***********************************************************************/

	else{
		if(SET) develop.LoadStatus(fila);
		else develop.LoadParams(fila);
		if(PROC==SIN_MIL) develop.Start_Sin();
		else develop.Start();
	}
}

Loading data, please wait...