From 2c46c4d72e1f6ca8384a26104332778a0f28dfff Mon Sep 17 00:00:00 2001 From: Friedemann Zenke Date: Tue, 14 Feb 2017 14:17:45 -0800 Subject: [PATCH 1/4] Updates date in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6d7b8a8d..4e4da6e6 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Bibtex: License & Copyright ------------------- -Copyright 2014-2016 Friedemann Zenke +Copyright 2014-2017 Friedemann Zenke Auryn is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From c9f29a2a3082649bc0bc9b1704286ba811a78027 Mon Sep 17 00:00:00 2001 From: Friedemann Zenke Date: Thu, 16 Mar 2017 18:32:31 -0700 Subject: [PATCH 2/4] Fixes broken link in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e4da6e6..05f7a835 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Auryn logo](http://www.fzenke.net/uploads/images/logo_trans_small.png "Auryn logo") +![Auryn logo](https://github.com/fzenke/auryn/blob/master/doc/auryn_logo_small.png "Auryn logo") Auryn ===== From bd8ff522da16f5e91464a71a340b58fe24d9db3f Mon Sep 17 00:00:00 2001 From: Friedemann Zenke Date: Fri, 14 Apr 2017 12:38:55 -0700 Subject: [PATCH 3/4] Fixes bug in StimulusGroup Seeding left the order random number generator unaffected. --- src/auryn/StimulusGroup.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/auryn/StimulusGroup.cpp b/src/auryn/StimulusGroup.cpp index 80efdb80..a2528183 100644 --- a/src/auryn/StimulusGroup.cpp +++ b/src/auryn/StimulusGroup.cpp @@ -554,9 +554,16 @@ void StimulusGroup::set_stimulation_mode( StimulusGroupModeType mode ) { void StimulusGroup::seed(int rndseed) { - order_gen.seed(sys->get_synced_seed()); // has to be seeded identically on all ranks! + unsigned int rnd = rndseed + sys->get_synced_seed(); // most be same on all ranks + order_gen.seed(rnd); - unsigned int rnd = rndseed + sys->get_seed(); // adds salt to make it different across ranks + // this is here because the seeding above alone does not seem to do anything + // also need to overwrite the dist operator because it makes of copy of the + // generator + // see http://www.bnikolic.co.uk/blog/cpp-boost-uniform01.html + order_die = boost::uniform_01 (order_gen); + + rnd = rndseed + sys->get_seed(); // adds salt to make it different across ranks std::stringstream oss; oss << "StimulusGroup:: " << "seeding Poisson generator with " From c021e92440b20c42f39f3e7c58540bb97a6c90a7 Mon Sep 17 00:00:00 2001 From: Friedemann Zenke Date: Wed, 3 May 2017 12:59:20 -0700 Subject: [PATCH 4/4] Fixes bug in insert_spike and adds new function --- src/auryn/SpikeDelay.cpp | 14 +++++++++++++- src/auryn/SpikeDelay.h | 17 ++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/auryn/SpikeDelay.cpp b/src/auryn/SpikeDelay.cpp index 06b4f794..ea586490 100644 --- a/src/auryn/SpikeDelay.cpp +++ b/src/auryn/SpikeDelay.cpp @@ -109,7 +109,13 @@ void SpikeDelay::set_clock_ptr(AurynTime * clock) void SpikeDelay::insert_spike( NeuronID i, AurynTime ahead ) { - get_spikes((*clock_ptr)+(1+ahead+ndelay))->push_back(i); + get_spikes(1+ahead+ndelay)->push_back(i); +} + +void SpikeDelay::insert_spike_and_attrib( NeuronID i, AurynState s, AurynTime ahead ) +{ + get_spikes(1+ahead+ndelay)->push_back(i); + get_attributes(1+ahead+ndelay)->push_back(s); } void SpikeDelay::push_back( NeuronID i ) @@ -117,6 +123,12 @@ void SpikeDelay::push_back( NeuronID i ) get_spikes_immediate()->push_back(i); } +void SpikeDelay::push_back( NeuronID i, AurynState attr ) +{ + get_spikes_immediate()->push_back(i); + get_attributes_immediate()->push_back(attr); +} + void SpikeDelay::push_back( SpikeContainer * sc ) { for ( NeuronID i = 0 ; i < sc->size() ; ++i ) { diff --git a/src/auryn/SpikeDelay.h b/src/auryn/SpikeDelay.h index 389e1707..75e0e549 100644 --- a/src/auryn/SpikeDelay.h +++ b/src/auryn/SpikeDelay.h @@ -98,14 +98,29 @@ class SpikeDelay * by the System class */ void set_clock_ptr(AurynTime * clock); - /*! \brief Allows to insert spikes so many time steps ahead with less than max delay. */ + /*! \brief Allows to insert spikes so many time steps ahead with less than max delay. + * + * \param i Neuron id of the spike + * \param ahead Time steps in AurynTime in the future where to insert the spike in the delay */ void insert_spike(NeuronID i, AurynTime ahead); + /*! \brief Allows to insert spikes with a single attribute so many time steps ahead with less than max delay. + * + * \param i Neuron id of the spike + * \param attr The spike attribute to insert + * \param ahead Time steps in AurynTime in the future where to insert the spike in the delay */ + void insert_spike_and_attrib(NeuronID i, AurynState attr, AurynTime ahead); + /*! \brief Allows to use SpikeDelay like a queue. * * This pushes into get_spikes_immediate() */ void push_back(NeuronID i); + /*! \brief Like push_back, but also allows to add an attribute + * + * This pushes into get_spikes_immediate() */ + void push_back(NeuronID i, AurynState attr); + /*! \brief Pushes all elemens from given SpikeContainer into the delay * * This pushes into get_spikes_immediate() */