21 #ifndef CYPRESS_UTIL_SPIKING_UTILS_HPP 22 #define CYPRESS_UTIL_SPIKING_UTILS_HPP 43 const typename T::Signals &rec_signal =
44 typename T::Signals().record_spikes())
46 using Parameters =
typename T::Parameters;
48 size, Parameters(neuronParams.
parameter()), rec_signal);
85 const std::string neuron_type_str,
Network &network,
87 const std::string record_signal =
"");
99 Real time,
size_t n_trials = 3);
111 static int calc_num_spikes(
const std::vector<cypress::Real> &spiketrain,
125 template <
typename T>
128 const cypress::Real end = std::numeric_limits<cypress::Real>::max())
130 std::vector<int> res;
131 size_t rows = spiketrains.
rows();
132 size_t colls = spiketrains.
cols();
133 for (
size_t i = 0; i < rows; i++) {
135 for (
size_t j = 0; j < colls; j++) {
136 if ((spiketrains[i * colls + j] >= start - 0.001) &&
137 (spiketrains[i * colls + j] <= end + 0.001)) {
141 res.push_back(counter);
159 template <
typename T>
161 const Real &start,
const Real &stop,
const size_t &n_bins,
162 const std::vector<cypress::Real> &spike_times)
164 Real bin_size = (stop - start) / n_bins;
165 std::vector<T> bin_counts(n_bins, 0);
166 for (
Real spike : spike_times) {
167 if (spike >= stop || spike < start) {
170 size_t bin_idx = size_t((spike - start) / bin_size);
171 bin_counts[bin_idx]++;
190 const Real &start,
const Real &stop,
const size_t &n_bins,
191 const std::vector<cypress::Real> &spike_times);
Definition: neurons_base.hpp:54
static cypress::PopulationBase add_population(const std::string neuron_type_str, Network &network, const NeuronParameter &neuronParams, const size_t size, const std::string record_signal="")
const std::vector< Real > & parameter() const
Definition: neuron_parameters.hpp:60
Definition: backend.hpp:50
static const NeuronType & detect_type(std::string neuron_type_str)
double Real
Definition: types.hpp:56
static PopulationBase add_typed_population(Network &network, const NeuronParameter &neuronParams, const size_t size, const typename T::Signals &rec_signal=typename T::Signals().record_spikes())
Definition: spiking_utils.hpp:40
Definition: matrix.hpp:51
size_t rows() const
Definition: matrix.hpp:339
size_t cols() const
Definition: matrix.hpp:344
Definition: neuron_parameters.hpp:46
Definition: network_base_objects.hpp:53
Population< T > create_population(size_t size, const typename T::Parameters ¶ms, const typename T::Signals &signals, const char *name="")
Definition: network.hpp:452
static cypress::PopulationBase add_typed_population_no_record(Network &network, const NeuronParameter &neuronParams, const size_t size)
Definition: network.hpp:349
Definition: brainscales_lib.hpp:39
static bool rerun_fixed_number_trials(Network &network, Backend &backend, Real time, size_t n_trials=3)
static std::vector< Real > spike_time_binning_TTFS(const Real &start, const Real &stop, const size_t &n_bins, const std::vector< cypress::Real > &spike_times)
Definition: spiking_utils.hpp:28
static std::vector< T > spike_time_binning(const Real &start, const Real &stop, const size_t &n_bins, const std::vector< cypress::Real > &spike_times)
Definition: spiking_utils.hpp:160
static std::vector< int > calc_num_spikes_vec(const cypress::Matrix< T > &spiketrains, const cypress::Real start=0.0, const cypress::Real end=std::numeric_limits< cypress::Real >::max())
Calculate the number of spikes in a vector of spiketrains in intervall [start,stop].
Definition: spiking_utils.hpp:126
static int calc_num_spikes(const std::vector< cypress::Real > &spiketrain, const cypress::Real start=0.0, const cypress::Real end=0.0)
Calculate the number of spikes of spiketrain in interval [start,stop].