30 #ifndef CYPRESS_CORE_NEURONS_BASE_HPP 31 #define CYPRESS_CORE_NEURONS_BASE_HPP 47 class NullNeuronParameters;
48 class NullNeuronSignals;
67 parameter_names(parameter_names),
68 parameter_units(parameter_units),
69 parameter_defaults(parameter_defaults),
70 signal_names(signal_names),
71 signal_units(signal_units),
72 conductance_based(conductance_based),
73 spike_source(spike_source)
137 template <
typename Parameters_,
typename Signals_>
158 for (
auto &p : write_parameters()) {
159 p = std::vector<Real>(parameters);
168 for (
auto &p : write_parameters()) {
187 const std::vector<Real> &
parameters()
const {
return read_parameters(); }
197 for (
auto &p : write_parameters()) {
208 void set(
size_t idx,
Real value)
210 for (
auto &p : write_parameters()) {
224 const Real *
begin()
const {
return &read_parameters().front(); }
229 const Real *
end()
const {
return &read_parameters().back() + 1; }
235 size_t size()
const {
return get_parameters_size(); }
242 template <
typename Impl,
typename Type_>
287 template <
typename Impl,
typename Type,
size_t Size>
304 if (parameters.size() != Size) {
306 "Number of parameters in the parameter vector does not match " 307 "the number of parameters.");
314 static constexpr
size_t size() {
return Size; }
331 for (
auto &p : write_record()) {
332 p.resize(signal_count);
334 for (
auto &p : write_data()) {
335 p.resize(signal_count);
358 void record(
size_t i,
bool record =
true)
360 for (
auto &p : write_record()) {
375 for (
auto &p : write_data()) {
388 std::shared_ptr<Matrix<Real>>
data_ptr(
size_t i)
const 390 static std::shared_ptr<Matrix<Real>> empty =
391 std::make_shared<Matrix<Real>>();
392 auto res =
const_cast<NeuronSignals *
>(
this)->read_data()[i];
394 if (!is_recording(i)) {
415 size_t size()
const {
return get_record_size(); }
422 template <
class Impl,
class Type_,
size_t Size>
445 for (
auto &signal : record_signal_names) {
446 auto idx = Type::inst().signal_index(signal);
449 signal +
"\" does not exist.");
458 static constexpr
size_t size() {
return Size; }
471 :
public NeuronTypeBase<NullNeuronParameters, NullNeuronSignals> {
Definition: neurons_base.hpp:54
const bool conductance_based
Definition: neurons_base.hpp:116
Optional< size_t > parameter_index(const std::string &name) const
const std::vector< std::string > signal_names
Definition: neurons_base.hpp:106
Definition: neurons.hpp:518
int32_t NeuronIndex
Definition: types.hpp:74
const bool spike_source
Definition: neurons_base.hpp:121
static constexpr size_t size()
Definition: neurons_base.hpp:314
NeuronParameters(std::shared_ptr< PopulationData > data, NeuronIndex nid0, NeuronIndex nid1)
Definition: neurons_base.hpp:178
NeuronParametersBase()
Definition: neurons_base.hpp:255
Definition: exceptions.hpp:100
NeuronSignals(std::shared_ptr< PopulationData > data, NeuronIndex nid0, NeuronIndex nid1)
Definition: neurons_base.hpp:344
NeuronSignalsBase(std::initializer_list< std::string > record_signal_names)
Definition: neurons_base.hpp:442
void record(size_t i, bool record=true)
Definition: neurons_base.hpp:358
double Real
Definition: types.hpp:56
Definition: neurons_base.hpp:490
Definition: neurons_base.hpp:470
Definition: neurons_base.hpp:151
Definition: neurons.hpp:283
const Real * begin() const
Definition: neurons_base.hpp:224
NeuronType & operator=(const NeuronType &)=delete
const std::string name
Definition: neurons_base.hpp:86
const Real * end() const
Definition: neurons_base.hpp:229
Definition: matrix.hpp:51
Definition: neurons_base.hpp:288
Definition: neurons.hpp:548
size_t size() const
Definition: neurons_base.hpp:235
NeuronSignals(size_t signal_count)
Definition: neurons_base.hpp:329
Definition: neurons_base.hpp:423
Definition: neurons_base.hpp:243
NeuronType(const std::string &name, const std::vector< std::string > ¶meter_names, const std::vector< std::string > ¶meter_units, const std::vector< Real > ¶meter_defaults, const std::vector< std::string > &signal_names, const std::vector< std::string > &signal_units, bool conductance_based, bool spike_source)
Definition: neurons_base.hpp:59
NeuronParametersBase(std::vector< Impl > list)
Definition: neurons_base.hpp:278
Optional< size_t > signal_index(const std::string &name) const
std::shared_ptr< Matrix< Real > > data_ptr(size_t i) const
Definition: neurons_base.hpp:388
const std::vector< std::string > parameter_names
Definition: neurons_base.hpp:91
Definition: optional.hpp:33
ConstantSizeNeuronParametersBase(const std::vector< Real > ¶meters)
Definition: neurons_base.hpp:301
NeuronParametersBase(std::initializer_list< Impl > list)
Definition: neurons_base.hpp:266
Definition: neurons_base.hpp:138
Definition: brainscales_lib.hpp:39
void parameters(std::vector< Real > parameters)
Definition: neurons_base.hpp:195
NeuronSignalsBase()
Definition: neurons_base.hpp:436
Real operator[](size_t i) const
Definition: neurons_base.hpp:219
const std::vector< Real > & parameters() const
Definition: neurons_base.hpp:187
size_t size() const
Definition: neurons_base.hpp:415
static constexpr size_t size()
Definition: neurons_base.hpp:458
Definition: neurons_base.hpp:322
Definition: neurons.hpp:527
void data(size_t i, std::shared_ptr< Matrix< Real >> matrix)
Definition: neurons_base.hpp:373
const std::vector< std::string > parameter_units
Definition: neurons_base.hpp:96
bool is_recording(size_t i) const
Definition: neurons_base.hpp:368
NeuronParameters(std::initializer_list< Real > parameters)
Definition: neurons_base.hpp:156
Definition: exceptions.hpp:84
Definition: exceptions.hpp:140
NeuronParameters(const std::vector< Real > ¶meters)
Definition: neurons_base.hpp:166
Definition: neurons_base.hpp:482
const std::vector< std::string > signal_units
Definition: neurons_base.hpp:111
const Matrix< Real > & data(size_t i) const
Definition: neurons_base.hpp:410
const std::vector< Real > parameter_defaults
Definition: neurons_base.hpp:101