61 double sparseness = 0.05;
67 bool wmatdump =
false;
68 bool loadbalance =
false;
72 double tau_chk = 100e-3;
73 double simtime = 3600.;
74 double stimtime = simtime;
75 double wmat_interval = 600.;
77 double ampa_nmda_ratio = 1.0;
98 bool noisyweights =
false;
99 bool switchweights =
false;
100 bool ei_plastic =
false;
105 double tau_decay = 3600.;
107 double tau_hom = 50.;
110 double offperiod = 30;
113 int n_strengthen = 0;
115 std::vector<Connection*> corr_connections;
121 const char * file_prefix =
"bg2";
129 po::options_description desc(
"Allowed options");
131 (
"help",
"produce help message")
132 (
"quiet",
"quiet mode")
133 (
"verbose",
"verbose mode")
134 (
"scaling",
"scaling mode")
135 (
"balance",
"activate load balance")
136 (
"load", po::value<std::string>(),
"input weight matrix")
137 (
"patfile", po::value<std::string>(),
"pattern file for StimulusGroup")
138 (
"prefile", po::value<std::string>(),
"pattern file for loading patterns")
139 (
"onperiod", po::value<double>(),
"mean stimulus on period")
140 (
"offperiod", po::value<double>(),
"mean stimulus off period")
141 (
"wmat",
"wmat dump mode")
142 (
"eta", po::value<double>(),
"learning rate")
143 (
"bgrate", po::value<double>(),
"PoissonGroup external firing rate")
144 (
"sparseness", po::value<double>(),
"overall network sparseness")
145 (
"scale", po::value<double>(),
"learning rate")
146 (
"tau_hom", po::value<double>(),
"homeostatic time constant")
147 (
"kappa", po::value<double>(),
"target rate")
148 (
"simtime", po::value<double>(),
"simulation time")
149 (
"dir", po::value<std::string>(),
"output dir")
150 (
"label", po::value<std::string>(),
"output label")
151 (
"wee", po::value<double>(),
"wee")
152 (
"wei", po::value<double>(),
"wei")
153 (
"wie", po::value<double>(),
"wie")
154 (
"wii", po::value<double>(),
"wii")
155 (
"wmax", po::value<double>(),
"wmax")
156 (
"ampa", po::value<double>(),
"ampa nmda ratio")
157 (
"strengthen", po::value<int>(),
"connections to strengthen by 10")
158 (
"ne", po::value<int>(),
"no of exc units")
159 (
"stimfile", po::value<std::string>(),
"stimulus ras file")
160 (
"wstim", po::value<double>(),
"weight of stimulus connections")
161 (
"stimtime", po::value<double>(),
"time of stimulus on")
162 (
"decay",
"decay triplet connections")
163 (
"corr",
"add correlated inputs")
164 (
"ampl", po::value<double>(),
"recall stim amplitude")
165 (
"psize", po::value<int>(),
"block size for correlated inputs")
166 (
"plen", po::value<int>(),
"number of blocks feed-forward")
167 (
"hsize", po::value<int>(),
"block size for correlated inputs (hebbian assembly)")
168 (
"hlen", po::value<int>(),
"number of blocks Hebbian")
169 (
"offset", po::value<int>(),
" offset for corr stim")
170 (
"recall",
"add correlated inputs to first patterns")
171 (
"stimfreq", po::value<double>(),
"CorrelatedPoissonGroup frequency default = 100")
172 (
"dconstant", po::value<double>(),
"decay time constant for decaying triplet connections")
173 (
"wdecay", po::value<double>(),
"wdecay for decay triplet connections")
174 (
"chk", po::value<double>(),
"checker time constant")
175 (
"adapt",
"adapting excitatory neurons")
176 (
"wall",
"enable monitoring of wall clock time")
177 (
"noisyweights",
"enables noisyweights for mean field checks")
178 (
"switchweights",
"switches first weights in each weight matrix")
179 (
"fast",
"turn off some of the monitors to run faster")
180 (
"eiplastic",
"make EI connection plastic")
183 po::variables_map vm;
184 po::store(po::parse_command_line(ac, av, desc), vm);
187 if (vm.count(
"help")) {
188 std::cout << desc <<
"\n";
192 if (vm.count(
"quiet")) {
196 if (vm.count(
"verbose")) {
200 if (vm.count(
"scaling")) {
204 if (vm.count(
"balance")) {
205 std::cout <<
"load balancing active" << std::endl;
209 if (vm.count(
"load")) {
210 std::cout <<
"load from matrix " 215 if (vm.count(
"patfile")) {
216 std::cout <<
"PatternFile is " 221 if (vm.count(
"prefile")) {
222 std::cout <<
"Preload patternfile is " 227 if (vm.count(
"wmat")) {
229 std::cout <<
"wmat dump mode" << std::endl;
232 if (vm.count(
"onperiod")) {
233 std::cout <<
"onperiod set to " 234 << vm[
"onperiod"].as<
double>() <<
".\n";
235 onperiod = vm[
"onperiod"].as<
double>();
238 if (vm.count(
"offperiod")) {
239 std::cout <<
"offperiod set to " 240 << vm[
"offperiod"].as<
double>() <<
".\n";
241 offperiod = vm[
"offperiod"].as<
double>();
244 if (vm.count(
"eta")) {
245 std::cout <<
"eta set to " 246 << vm[
"eta"].as<
double>() <<
".\n";
247 eta = vm[
"eta"].as<
double>();
250 if (vm.count(
"bgrate")) {
251 std::cout <<
"bgrate set to " 252 << vm[
"bgrate"].as<
double>() <<
".\n";
253 bg_rate = vm[
"bgrate"].as<
double>();
256 if (vm.count(
"sparseness")) {
257 std::cout <<
"sparseness set to " 258 << vm[
"sparseness"].as<
double>() <<
".\n";
259 sparseness = vm[
"sparseness"].as<
double>();
262 if (vm.count(
"scale")) {
263 std::cout <<
"scale set to " 264 << vm[
"scale"].as<
double>() <<
".\n";
265 scale = vm[
"scale"].as<
double>();
268 if (vm.count(
"tau_hom")) {
269 std::cout <<
"tau_hom set to " 270 << vm[
"tau_hom"].as<
double>() <<
".\n";
271 tau_hom = vm[
"tau_hom"].as<
double>();
274 if (vm.count(
"kappa")) {
275 std::cout <<
"kappa set to " 276 << vm[
"kappa"].as<
double>() <<
".\n";
277 kappa = vm[
"kappa"].as<
double>();
280 if (vm.count(
"simtime")) {
281 std::cout <<
"simtime set to " 282 << vm[
"simtime"].as<
double>() <<
".\n";
283 simtime = vm[
"simtime"].as<
double>();
287 if (vm.count(
"dir")) {
288 std::cout <<
"dir set to " 293 if (vm.count(
"label")) {
294 std::cout <<
"label set to " 299 if (vm.count(
"wee")) {
300 std::cout <<
"wee set to " 301 << vm[
"wee"].as<
double>() <<
".\n";
302 w_ee = vm[
"wee"].as<
double>();
305 if (vm.count(
"wei")) {
306 std::cout <<
"wei set to " 307 << vm[
"wei"].as<
double>() <<
".\n";
308 w_ei = vm[
"wei"].as<
double>();
311 if (vm.count(
"wie")) {
312 std::cout <<
"wie set to " 313 << vm[
"wie"].as<
double>() <<
".\n";
314 w_ie = vm[
"wie"].as<
double>();
317 if (vm.count(
"wii")) {
318 std::cout <<
"wii set to " 319 << vm[
"wii"].as<
double>() <<
".\n";
320 w_ii = vm[
"wii"].as<
double>();
323 if (vm.count(
"wmax")) {
324 std::cout <<
"wmax set to " 325 << vm[
"wmax"].as<
double>() <<
".\n";
326 wmax = vm[
"wmax"].as<
double>();
329 if (vm.count(
"ampa")) {
330 std::cout <<
"ampa set to " 331 << vm[
"ampa"].as<
double>() <<
".\n";
332 ampa_nmda_ratio = vm[
"ampa"].as<
double>();
335 if (vm.count(
"strengthen")) {
336 std::cout <<
"strengthen set to " 337 << vm[
"strengthen"].as<
int>() <<
".\n";
338 n_strengthen = vm[
"strengthen"].as<
int>();
341 if (vm.count(
"ne")) {
342 std::cout <<
"ne set to " 343 << vm[
"ne"].as<
int>() <<
".\n";
344 ne = vm[
"ne"].as<
int>();
348 if (vm.count(
"stimfile")) {
349 std::cout <<
"stimfile set to " 354 if (vm.count(
"wstim")) {
355 std::cout <<
"wstim set to " 356 << vm[
"wstim"].as<
double>() <<
".\n";
357 wstim = vm[
"wstim"].as<
double>();
360 if (vm.count(
"stimtime")) {
361 std::cout <<
"stimtime set to " 362 << vm[
"stimtime"].as<
double>() <<
".\n";
363 stimtime = vm[
"stimtime"].as<
double>();
366 if (vm.count(
"corr")) {
367 std::cout <<
"enabling corr " << std::endl;
371 if (vm.count(
"ampl")) {
372 std::cout <<
"ampl set to " 373 << vm[
"ampl"].as<
double>() <<
".\n";
374 ampl = vm[
"ampl"].as<
double>();
377 if (vm.count(
"psize")) {
378 std::cout <<
"psize set to " 379 << vm[
"psize"].as<
int>() <<
".\n";
380 psize = vm[
"psize"].as<
int>();
383 if (vm.count(
"plen")) {
384 std::cout <<
"plen set to " 385 << vm[
"plen"].as<
int>() <<
".\n";
386 plen = vm[
"plen"].as<
int>();
389 if (vm.count(
"hsize")) {
390 std::cout <<
"hsize set to " 391 << vm[
"hsize"].as<
int>() <<
".\n";
392 hsize = vm[
"hsize"].as<
int>();
395 if (vm.count(
"hlen")) {
396 std::cout <<
"hlen set to " 397 << vm[
"hlen"].as<
int>() <<
".\n";
398 hlen = vm[
"hlen"].as<
int>();
401 if (vm.count(
"offset")) {
402 std::cout <<
"offset set to " 403 << vm[
"offset"].as<
int>() <<
".\n";
404 offset = vm[
"offset"].as<
int>();
407 if (vm.count(
"recall")) {
408 std::cout <<
"enabling recall " << std::endl;
412 if (vm.count(
"stimfreq")) {
413 std::cout <<
"stimfreq set to " 414 << vm[
"stimfreq"].as<
double>() <<
".\n";
415 stimfreq = vm[
"stimfreq"].as<
double>();
418 if (vm.count(
"decay")) {
419 std::cout <<
"weight decay on " << std::endl;
423 if (vm.count(
"dconstant")) {
424 std::cout <<
"dconstant set to " 425 << vm[
"dconstant"].as<
double>() <<
".\n";
426 tau_decay = vm[
"dconstant"].as<
double>();
429 if (vm.count(
"wdecay")) {
430 std::cout <<
"wdecay set to " 431 << vm[
"wdecay"].as<
double>() <<
".\n";
432 wdecay = vm[
"wdecay"].as<
double>();
435 if (vm.count(
"chk")) {
436 std::cout <<
"chk set to " 437 << vm[
"chk"].as<
double>() <<
".\n";
438 tau_chk = vm[
"chk"].as<
double>();
441 if (vm.count(
"adapt")) {
442 std::cout <<
"adaptation on " << std::endl;
446 if (vm.count(
"wall")) {
447 std::cout <<
"real time wall clock monitoring enabled " << std::endl;
451 if (vm.count(
"noisyweights")) {
452 std::cout <<
"noisyweights on " << std::endl;
456 if (vm.count(
"switchweights")) {
457 std::cout <<
"switchweights on " << std::endl;
458 switchweights =
true;
461 if (vm.count(
"fast")) {
462 std::cout <<
"fast on " << std::endl;
466 if (vm.count(
"eiplastic")) {
467 std::cout <<
"eiplastic on " << std::endl;
471 catch(std::exception& e) {
472 std::cerr <<
"error: " << e.what() <<
"\n";
476 std::cerr <<
"Exception of unknown type!\n";
483 std::cout <<
"scaled by " << scale << std::endl;
486 double primetime = 3*tau_hom;
489 sprintf(strbuf,
"%s_e%.2et%.2f%s", file_prefix, eta, tau_hom, label.c_str());
492 auryn_init(ac, av, dir,
"sim_background", logfile_prefix);
498 if (!infilename.empty()) {
499 std::stringstream iss;
501 infilename = iss.str();
510 ((
AIFGroup*)neurons_e)->set_ampa_nmda_ratio(ampa_nmda_ratio);
511 ((
AIFGroup*)neurons_e)->dg_adapt1=1.0;
517 ((
IFGroup*)neurons_e)->set_ampa_nmda_ratio(ampa_nmda_ratio);
526 ((
IFGroup*)neurons_i)->set_ampa_nmda_ratio(ampa_nmda_ratio);
532 msg =
"Setting up I connections ...";
535 w_ie,sparseness,
GABA);
537 w_ii,sparseness,
GABA);
539 msg =
"Setting up E connections ...";
544 w_ei, sparseness,
GLUT);
546 if (infilename.empty()) {
549 tau_hom, eta, kappa, wmax,
GLUT);
554 std::stringstream oss;
555 oss <<
"Loading weight matrix from " << str;
559 tau_hom, eta, kappa, wmax,
GLUT);
565 if (infilename.empty()) {
569 tau_hom, eta, tau_decay,
570 kappa, wdecay, wmax,
GLUT);
574 tau_hom, eta, kappa, wmax,
GLUT);
578 con_ee->random_data(w_ee,w_ee/4);
579 for (
int i = 0 ; i < n_strengthen ; ++i ) {
580 con_ee->set_data(i,i*(wmax/n_strengthen));
587 std::stringstream oss;
588 oss <<
"Loading weight matrix from " << str;
592 str.c_str(),tau_hom,eta,tau_decay,kappa,wdecay,wmax,
GLUT);
595 str.c_str(),tau_hom,eta,kappa,wmax,
GLUT);
598 sprintf(strbuf,
"%s.e.nstate", infilename.c_str());
600 sprintf(strbuf,
"%s.i.nstate", infilename.c_str());
608 msg =
"Initializing traces ...";
616 msg =
"Setting up monitors ...";
620 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.weight", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
625 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.syn", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
627 for (
int i = 0 ; i < 5 ; ++i ) {
628 for (
int j = 0 ; j < 5 ; ++j ) {
629 std::vector<neuron_pair> sublist = con_ee->
get_block(i*psize,(i+1)*psize,j*psize,(j+1)*psize);
631 wmon->add_to_list(sublist);
635 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.%c.ras", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank(),
'e');
642 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.%c.prate", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank(),
'e');
646 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.rt", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
669 if ( scaling && (errcode==0) ) {
670 std::stringstream oss;
671 oss <<
"Changing cell input ... ";
674 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.pat", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
678 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.scal", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
690 const double amplitude_fwd = 9.0*ampl;
691 const double amplitude_heb = 3.0*ampl;
697 double strength = 0.2;
701 std::stringstream oss;
702 oss <<
"Activating correlated input ... ";
717 for (
int i = 0 ; i < plen ; ++i )
718 con_corr_e->
connect_block_random(w,sparseness,(i)*extsize,offset+(i+1)*extsize,(i)*psize,offset+(i+1)*psize);
720 corr_connections.push_back(con_corr_e);
724 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.%c.ras", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank(),
'c');
735 for (
int i = 0 ; i < hlen ; ++i )
736 con_corr_e2->
connect_block_random(w,sparseness,(i)*extsize,(i+1)*extsize,offset+(i)*hsize+plen*psize,offset+(i+1)*hsize+plen*psize);
738 corr_connections.push_back(con_corr_e2);
743 con_exte->
set_block(0,2500,0,plen*psize+hlen*hsize,0.0);
748 std::stringstream oss;
749 oss <<
"Activating recall input ... ";
760 for (
int i = 0 ; i < plen ; ++i )
761 con_corr_e->
connect_block_random(w,sparseness,(i)*extsize,offset+(i+1)*extsize,(i)*psize,offset+(i+1)*psize);
763 corr_connections.push_back(con_corr_e);
767 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.%c.ras", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank(),
'c');
778 for (
int i = 0 ; i < hlen ; ++i )
779 con_corr_e2->
connect_block_random(w,sparseness,(i)*extsize,(i+1)*extsize,offset+(i)*hsize+plen*psize,offset+(i+1)*hsize+plen*psize);
781 corr_connections.push_back(con_corr_e2);
791 if ( prefile !=
"" ) {
799 if ( patfile !=
"" ) {
801 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.stim", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
803 stimgroup->set_mean_on_period(onperiod);
804 stimgroup->set_mean_off_period(offperiod);
812 sys->run(primetime,
true);
815 if ( corr || recall ) {
827 if (!
sys->run(simtime,
true))
834 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.e.nstate", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
836 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.i.nstate", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
840 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.wmat", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
843 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.ei.wmat", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
846 for (
int i = 0 ; i < corr_connections.size() ; ++i ) {
847 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.%d.wmat", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(), i,
sys->
mpi_rank());
848 corr_connections[i]->write_to_file(strbuf);
853 sprintf(strbuf,
"%s/%s_e%.2et%.2f%s.%d.lifetime", dir.c_str(), file_prefix, eta, tau_hom, label.c_str(),
sys->
mpi_rank());
854 std::ofstream killfile;
855 killfile.open(strbuf);
856 killfile <<
sys->
get_time()-primetime << std::endl;
862 char filenamebuf [255];
863 sprintf(filenamebuf,
"%s/elapsed.dat", dir.c_str());
864 std::ofstream timefile;
865 timefile.open(filenamebuf);
void set_hom_trace(AurynFloat freq)
Definition: TripletConnection.cpp:127
void auryn_free()
Cleanly shuts down Auryn simulation environment.
Definition: auryn_global.cpp:107
void set_block(NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col, AurynWeight weight)
Sets all weights of existing connections in a block spanned by the first 4 parameters to the value gi...
Definition: SparseConnection.cpp:307
Standard Glutamatergic (excitatory) transmission.
Definition: auryn_definitions.h:139
virtual bool load_from_file(const char *filename)
Reads current states of SpikingGroup to human-readible textfile if implemented in derived class...
Definition: SpikingGroup.cpp:585
void set_logfile_loglevel(LogMessageType level=NOTIFICATION)
Sets loglevel for file output.
Definition: Logger.cpp:63
void random_mem(AurynState mean=-60e-3, AurynState sigma=5e-3)
Definition: NeuronGroup.cpp:81
ForwardMatrix * w
A pointer that points per default to the ComplexMatrix that stores the connectinos.
Definition: SparseConnection.h:147
unsigned int mpi_rank()
Returns current rank.
Definition: System.cpp:1009
Monitor class to record the system time in every timestep.
Definition: RealTimeMonitor.h:45
double get_last_elapsed_time()
Returns last elapsed time in seconds.
Definition: System.cpp:956
void seed(NeuronID randomseed)
This function seeds the pseudo random number generator for all random fill operatios.
Definition: SparseConnection.cpp:155
Abstract base class of all objects producing spikes.
Definition: SpikingGroup.h:67
AurynFloat AurynWeight
Unit of synaptic weights.
Definition: auryn_definitions.h:159
A Checker class that tracks population firing rate as a moving average and breaks a run if it goes ou...
Definition: RateChecker.h:59
The base class to create sparse random connections.
Definition: SparseConnection.h:66
Monitor class to record population firing rates.
Definition: PatternMonitor.h:47
bool stdp_active
Toggles stdp active/inactive. When inactive traces are still updated, but weights are not...
Definition: TripletConnection.h:153
Logger * logger
Global pointer to instance of Logger which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:36
Implements triplet STDP with metaplasticity as described by Pfister and Gerstner 2006.
Definition: TripletConnection.h:48
void connect_block_random(AurynWeight weight, AurynDouble sparseness, NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col, bool skip_diag=false)
Underlying sparse fill method.
Definition: SparseConnection.cpp:360
The standard Monitor object to record spikes from a SpikingGroup and write them to a text file...
Definition: SpikeMonitor.h:52
void set_tau_mem(AurynFloat taum)
Sets the membrane time constant.
Definition: IFGroup.cpp:154
void set_online_rate_monitor_tau(AurynDouble tau=100e-3)
Sets the timeconstant to compute the online rate average for the status bar.
Definition: System.cpp:925
Saves the weight matrix of a given connection in regular time intervals.
Definition: WeightMatrixMonitor.h:41
void clear()
Clears matrix.
Definition: ComplexMatrix.h:460
void auryn_abort(int errcode)
Terminates Auryn simulation abnormally.
Definition: auryn_global.cpp:113
void allocate_manually(AurynLong expected_size)
Is used whenever memory has to be allocated manually. Automatically adjusts for number of ranks and f...
Definition: SparseConnection.cpp:192
System * sys
Global pointer to instance of System which needs to be initialized in every simulation main program...
Definition: auryn_global.cpp:37
A SpikingGroup that creates poissonian spikes with a given rate.
Definition: PoissonGroup.h:52
The Monitor records from selected synapses stored in a list. This is the default behavior.
Definition: WeightMonitor.h:47
A simple extension of IFGroup with spike triggered adaptation.
Definition: AIFGroup.h:37
Provides a poisson stimulus at random intervals in one or more predefined subsets of the group that a...
Definition: StimulusGroup.h:50
Implements triplet STDP with an exponential weight decay.
Definition: TripletDecayConnection.h:45
AurynDouble get_time()
Gets the current system time in [s].
Definition: System.cpp:226
void set_online_rate_monitor_id(unsigned int id=0)
Sets the SpikingGroup used to display the rate estimate in the progressbar.
Definition: System.cpp:939
void auryn_init(int ac, char *av[], string dir, string simulation_name, string logfile_prefix, LogMessageType filelog_level, LogMessageType consolelog_level)
Initalizes MPI and the Auryn simulation environment.
Definition: auryn_global.cpp:84
Stimulator class to inject timeseries of currents to patterns (subpopulations) of neurons...
Definition: PatternStimulator.h:44
Standard Gabaergic (inhibitory) transmission.
Definition: auryn_definitions.h:140
void msg(std::string text, LogMessageType type=NOTIFICATION, bool global=false, int line=-1, std::string srcfile="")
Definition: Logger.cpp:74
void load_patterns(string filename, AurynWeight strength, int nb_max_patterns=10000, bool overwrite=false, bool chainmode=false)
Reads first n patterns from a .pat file and adds them as Hebbian assemblies onto an existing weight m...
Definition: SparseConnection.cpp:1057
std::vector< neuron_pair > get_block(NeuronID lo_row, NeuronID hi_row, NeuronID lo_col, NeuronID hi_col)
Returns a vector of ConnectionsID of a block specified by the arguments.
Definition: SparseConnection.cpp:1100
Abstract base class for all neuron groups.
Definition: NeuronGroup.h:45
virtual void finalize()
Finalizes connection after random or manual initialization of the weights.
Definition: SparseConnection.cpp:499
bool write_to_file(ForwardMatrix *m, string filename)
Writes rank specific weight matrix on the same rank to a file.
Definition: SparseConnection.cpp:690
Monitor class to record population firing rates.
Definition: PopulationRateMonitor.h:46
virtual bool write_to_file(const char *filename)
Writes current states of SpikingGroup to human-readible textfile if implemented in derived class...
Definition: SpikingGroup.cpp:549
Monitors the evolution of a single or a set of weights.
Definition: WeightMonitor.h:65
std::string string
Standard library string type which is imported into Auryn namespace.
Definition: auryn_definitions.h:156
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
Implements the standard integrate and file model used in Auryn.
Definition: IFGroup.h:47
Provides a unity matrix like connectivity.
Definition: IdentityConnection.h:47
std::vector< neuron_pair > get_pre_partners(NeuronID j)
Returns a vector of ConnectionsID of presynaptic parterns of neuron i.
Definition: SparseConnection.cpp:1131