21 #ifndef CYPRESS_CORE_CONNECTOR_HPP 22 #define CYPRESS_CORE_CONNECTOR_HPP 64 : weight(weight), delay(delay)
82 bool valid()
const {
return (weight != 0.0) && (delay >= 0.0); }
112 : src(src), tar(tar), SynapseParameters({
weight,
delay})
116 : src(src), tar(tar), SynapseParameters(synapse.parameters())
125 return (SynapseParameters[0] != 0.0) && (SynapseParameters[1] >= 0.0);
181 template <
typename Callback>
184 template <
typename Callback>
187 template <
typename RandomEngine>
190 template <
typename RandomEngine>
193 template <
typename RandomEngine>
196 template <
typename RandomEngine>
227 Real m_additional_parameter = 0.0;
233 bool m_self_connections =
true;
240 bool m_seed_given =
false;
248 m_self_connections = self_connections;
250 explicit Connector(std::shared_ptr<SynapseBase> synapse,
251 bool self_connections)
253 m_synapse = std::move(synapse);
254 m_self_connections = self_connections;
260 m_self_connections = self_connections;
278 std::vector<LocalConnection> &tar)
const = 0;
303 virtual std::string name()
const = 0;
312 virtual size_t size(
size_t size_src_pop,
size_t size_target_pop)
const = 0;
318 const std::shared_ptr<SynapseBase>
synapse()
const {
return m_synapse; }
332 if (!m_synapse->learning()) {
334 "Requested learned weights, although Synapse is static");
346 m_weights = std::move(weights);
360 static std::unique_ptr<AllToAllConnector> all_to_all(
362 bool allow_self_connections =
true);
371 static std::unique_ptr<AllToAllConnector> all_to_all(
372 SynapseBase &synapse,
bool allow_self_connections =
true);
383 static std::unique_ptr<OneToOneConnector> one_to_one(
Real weight = 1.0,
392 static std::unique_ptr<OneToOneConnector> one_to_one(
SynapseBase &synapse);
401 static std::unique_ptr<FromListConnector> from_list(
402 const std::vector<LocalConnection> &connections);
411 static std::unique_ptr<FromListConnector> from_list(
412 std::initializer_list<LocalConnection> connections);
422 static std::unique_ptr<FromListConnector> from_list(
423 const std::vector<LocalConnection> &connections,
SynapseBase &synapse);
433 static std::unique_ptr<FromListConnector> from_list(
434 std::initializer_list<LocalConnection> connections,
446 template <
typename F>
447 static std::unique_ptr<FunctorConnector<F>> functor(
const F &cback);
462 template <
typename F>
463 static std::unique_ptr<UniformFunctorConnector<F>> functor(
475 static std::unique_ptr<
477 fixed_probability(std::unique_ptr<Connector> connector,
Real p,
478 bool allow_self_connections =
true);
493 static std::unique_ptr<
495 fixed_probability(std::unique_ptr<Connector> connector,
Real p,
size_t seed,
496 bool allow_self_connections =
true);
511 static std::unique_ptr<RandomConnector<std::default_random_engine>> random(
513 bool allow_self_connections =
true);
525 static std::unique_ptr<RandomConnector<std::default_random_engine>> random(
527 bool allow_self_connections =
true);
544 static std::unique_ptr<RandomConnector<std::default_random_engine>> random(
546 bool allow_self_connections =
true);
560 static std::unique_ptr<RandomConnector<std::default_random_engine>> random(
562 bool allow_self_connections =
true);
576 static std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
577 fixed_fan_in(
size_t n_fan_in,
Real weight,
Real delay = 0.0,
578 bool allow_self_connections =
true);
591 static std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
592 fixed_fan_in(
size_t n_fan_in,
SynapseBase &synapse,
593 bool allow_self_connections =
true);
610 static std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
611 fixed_fan_in(
size_t n_fan_in,
Real weight,
Real delay,
size_t seed,
612 bool allow_self_connections =
true);
628 static std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
629 fixed_fan_in(
size_t n_fan_in,
SynapseBase &synapse,
size_t seed,
630 bool allow_self_connections =
true);
644 static std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
645 fixed_fan_out(
size_t n_fan_out,
Real weight,
Real delay = 0.0,
646 bool allow_self_connections =
true);
659 static std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
660 fixed_fan_out(
size_t n_fan_out,
SynapseBase &synapse,
661 bool allow_self_connections =
true);
678 static std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
679 fixed_fan_out(
size_t n_fan_out,
Real weight,
Real delay,
size_t seed,
680 bool allow_self_connections =
true);
696 static std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
697 fixed_fan_out(
size_t n_fan_out,
SynapseBase &synapse,
size_t seed,
698 bool allow_self_connections =
true);
713 std::shared_ptr<Connector> m_connector;
721 uint32_t pid_tar, uint32_t nid_tar0, uint32_t nid_tar1,
722 std::shared_ptr<Connector> connector =
nullptr,
723 const char *label =
"")
724 : m_pid_src(pid_src),
725 m_nid_src0(nid_src0),
726 m_nid_src1(nid_src1),
728 m_nid_tar0(nid_tar0),
729 m_nid_tar1(nid_tar1),
730 m_connector(
std::move(connector)),
731 m_label(
std::string(label))
780 m_connector = std::move(connector);
790 void connect(std::vector<LocalConnection> &tar)
const 792 connector().connect(*
this, tar);
798 bool valid()
const {
return m_connector && connector().valid(*
this); }
817 m_pid_tar, s.m_pid_tar)(m_nid_src0, s.m_nid_src0)(
818 m_nid_src1, s.m_nid_src1)(m_nid_tar0, s.m_nid_tar0)(m_nid_tar1,
828 m_pid_tar, s.m_pid_tar)(m_nid_src0, s.m_nid_src0)(
829 m_nid_src1, s.m_nid_src1)(m_nid_tar0, s.m_nid_tar0)(m_nid_tar1,
835 return connector().size(m_nid_src1 - m_nid_src0,
836 m_nid_tar1 - m_nid_tar0);
844 const std::string &
label()
const {
return m_label; }
857 const std::vector<ConnectionDescriptor> &descrs);
860 std::string filename,
const std::vector<ConnectionDescriptor> &descrs);
868 bool self_connections =
true)
873 bool self_connections =
true)
891 std::vector<LocalConnection> &tar)
const override;
895 size_t size(
size_t size_src_pop,
size_t size_target_pop)
const override 897 return size_src_pop * size_target_pop;
900 std::string
name()
const override {
return "AllToAllConnector"; }
914 std::vector<LocalConnection> &tar)
const override;
918 return descr.
nsrc() == descr.
ntar();
921 size_t size(
size_t size_src_pop,
size_t)
const override 926 std::string
name()
const override {
return "OneToOneConnector"; }
936 std::vector<LocalConnection> m_connections;
939 if (m_connections.size() > 0 &&
940 m_synapse->parameter_names().size() !=
941 m_connections[0].SynapseParameters.size()) {
943 "Please provide an instance of the synapse type in the from " 951 :
Connector(synapse, true), m_connections(
std::move(connections))
958 :
Connector(synapse, true), m_connections(connections)
964 :
Connector(0.0, 0.0, true), m_connections(
std::move(connections))
970 :
Connector(0.0, 0.0, true), m_connections(connections)
978 std::vector<LocalConnection> &tar)
const override;
982 size_t size(
size_t,
size_t)
const override {
return m_connections.size(); }
984 std::string
name()
const override {
return "FromListConnector"; }
991 void update_learned_weights();
1001 std::string
name()
const override {
return "FunctorConnector"; }
1004 template <
typename Callback>
1015 std::vector<LocalConnection> &tar)
const override 1021 Synapse synapse = m_cback(n_src, n_tar);
1022 if (synapse.
valid()) {
1023 tar.emplace_back(n_src, n_tar, synapse.
weight,
1032 size_t size(
size_t size_src_pop,
size_t size_target_pop)
const override 1034 return size_src_pop * size_target_pop;
1042 std::string
name()
const override {
return "UniformFunctorConnector"; }
1044 size_t size(
size_t size_src_pop,
size_t size_target_pop)
const override 1046 return size_src_pop * size_target_pop;
1050 template <
typename Callback>
1069 std::vector<LocalConnection> &tar)
const override 1075 if (m_cback(n_src, n_tar)) {
1076 tar.emplace_back(n_src, n_tar, *m_synapse);
1087 std::string name_string =
"FixedProbabilityConnector";
1089 bool self_connections)
1095 std::string
name()
const override {
return name_string; }
1104 template <
typename RandomEngine>
1112 std::shared_ptr<RandomEngine> engine,
1113 bool self_connections)
1115 m_connector(
std::move(connector)),
1116 m_engine(
std::move(engine))
1118 m_additional_parameter = p;
1124 std::vector<LocalConnection> &tar)
const override 1126 const size_t first = tar.size();
1127 m_connector->connect(descr, tar);
1128 std::uniform_real_distribution<Real> distr(0.0, 1.0);
1129 for (
size_t i = first; i < tar.size(); i++) {
1130 if (distr(*m_engine) >= m_additional_parameter) {
1131 tar[i].SynapseParameters[0] = 0.0;
1137 for (
size_t i = first; i < tar.size(); i++) {
1138 if (tar[i].src == tar[i].tar) {
1139 tar[i].SynapseParameters[0] =
1148 return m_connector->valid(descr);
1151 size_t size(
size_t size_src_pop,
size_t size_target_pop)
const override 1153 return size_t(
Real(size_src_pop * size_target_pop) *
1154 m_additional_parameter);
1162 template <
typename RandomEngine>
1169 std::shared_ptr<RandomEngine> engine,
bool self_connections)
1171 Connector::all_to_all(weight, delay), probability, engine,
1177 std::shared_ptr<RandomEngine> engine,
bool self_connections)
1179 Connector::all_to_all(synapse), probability, engine,
1185 std::string
name()
const override {
return "RandomConnector"; }
1193 template <
typename RandomEngine>
1196 std::shared_ptr<RandomEngine> m_engine;
1199 template <
typename F>
1201 size_t i0,
size_t i1,
const F &f,
bool self)
const 1204 std::vector<size_t> perm(len);
1205 for (
size_t i = 0; i < len; i++) {
1211 std::uniform_int_distribution<size_t> distr(0, perm.size() - 1);
1212 for (
size_t i = i0; i < i1; i++) {
1214 for (
size_t j = 0; j < subset_len; j++) {
1215 std::swap(perm[j], perm[distr(*m_engine)]);
1219 for (
size_t j = 0; j < subset_len; j++) {
1224 size_t sub_len = subset_len;
1225 for (
size_t j = 0; j < sub_len; j++) {
1230 sub_len = std::min(sub_len + 1, perm.size());
1239 std::shared_ptr<RandomEngine> engine,
1240 bool self_connections)
1242 m_engine(
std::move(engine))
1246 std::shared_ptr<RandomEngine> engine,
1247 bool self_connections)
1249 m_engine(
std::move(engine))
1264 template <
typename RandomEngine>
1271 std::shared_ptr<RandomEngine> engine,
1272 bool self_connections)
1276 Base::m_additional_parameter = n_fan_in;
1279 std::shared_ptr<RandomEngine> engine,
1280 bool self_connections)
1284 Base::m_additional_parameter = n_fan_in;
1290 std::vector<LocalConnection> &tar)
const override 1293 Base::generate_connections(
1294 descr.
nid_src0(), descr.
nsrc(), Base::m_additional_parameter,
1296 [&](
size_t i,
size_t r) {
1297 tar.emplace_back(r, i, *this->m_synapse);
1302 Base::generate_connections(
1303 descr.
nid_src0(), descr.
nsrc(), Base::m_additional_parameter,
1305 [&](
size_t i,
size_t r) {
1306 tar.emplace_back(r, i, *this->m_synapse);
1322 std::string
name()
const override {
return "FixedFanInConnector"; }
1324 size_t size(
size_t,
size_t size_target_pop)
const override 1326 return Base::m_additional_parameter * size_target_pop;
1334 template <
typename RandomEngine>
1341 std::shared_ptr<RandomEngine> engine,
1342 bool self_connections)
1343 :
Base(weight, delay,
std::move(engine), self_connections)
1345 Base::m_additional_parameter = n_fan_out;
1349 std::shared_ptr<RandomEngine> engine,
1350 bool self_connections)
1351 :
Base(synapse,
std::move(engine), self_connections)
1353 Base::m_additional_parameter = n_fan_out;
1359 std::vector<LocalConnection> &tar)
const override 1362 Base::generate_connections(
1363 descr.
nid_tar0(), descr.
ntar(), Base::m_additional_parameter,
1365 [&](
size_t i,
size_t r) {
1366 tar.emplace_back(i, r, *this->m_synapse);
1371 Base::generate_connections(
1372 descr.
nid_tar0(), descr.
ntar(), Base::m_additional_parameter,
1374 [&](
size_t i,
size_t r) {
1375 tar.emplace_back(i, r, *this->m_synapse);
1391 std::string
name()
const override {
return "FixedFanOutConnector"; }
1393 size_t size(
size_t size_src_pop,
size_t)
const override 1395 return size_src_pop * Base::m_additional_parameter;
1406 return std::make_unique<AllToAllConnector>(
weight,
delay, self_connections);
1411 return std::make_unique<AllToAllConnector>(synapse, self_connections);
1417 return std::make_unique<OneToOneConnector>(
weight,
delay);
1422 return std::make_unique<OneToOneConnector>(synapse);
1426 const std::vector<LocalConnection> &connections,
SynapseBase &synapse)
1428 return std::make_unique<FromListConnector>(connections, synapse);
1432 std::initializer_list<LocalConnection> connections,
SynapseBase &synapse)
1434 return std::make_unique<FromListConnector>(connections, synapse);
1438 const std::vector<LocalConnection> &connections)
1440 return std::make_unique<FromListConnector>(connections);
1444 std::initializer_list<LocalConnection> connections)
1446 return std::make_unique<FromListConnector>(connections);
1449 template <
typename F>
1452 return std::make_unique<FunctorConnector<F>>(cback);
1455 template <
typename F>
1459 return std::make_unique<UniformFunctorConnector<F>>(cback,
weight,
delay);
1468 inline std::unique_ptr<FixedProbabilityConnector<std::default_random_engine>>
1470 bool self_connections)
1472 return fixed_probability(std::move(connector), p, std::random_device()(),
1476 inline std::unique_ptr<FixedProbabilityConnector<std::default_random_engine>>
1478 size_t seed,
bool self_connections)
1481 std::make_unique<FixedProbabilityConnector<std::default_random_engine>>(
1482 std::move(connector), p,
1483 std::make_shared<std::default_random_engine>(seed),
1489 inline std::unique_ptr<RandomConnector<std::default_random_engine>>
1491 bool self_connections)
1493 return std::make_unique<RandomConnector<std::default_random_engine>>(
1495 std::make_shared<std::default_random_engine>(std::random_device()()),
1499 inline std::unique_ptr<RandomConnector<std::default_random_engine>>
1502 return std::make_unique<RandomConnector<std::default_random_engine>>(
1503 synapse, probability,
1504 std::make_shared<std::default_random_engine>(std::random_device()()),
1508 inline std::unique_ptr<RandomConnector<std::default_random_engine>>
1510 bool self_connections)
1512 auto tmp = std::make_unique<RandomConnector<std::default_random_engine>>(
1514 std::make_shared<std::default_random_engine>(seed), self_connections);
1518 inline std::unique_ptr<RandomConnector<std::default_random_engine>>
1520 bool self_connections)
1522 auto tmp = std::make_unique<RandomConnector<std::default_random_engine>>(
1523 synapse, probability,
1524 std::make_shared<std::default_random_engine>(seed), self_connections);
1529 inline std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
1531 bool self_connections)
1534 return std::make_unique<FixedFanInConnector<std::default_random_engine>>(
1536 std::make_shared<std::default_random_engine>(std::random_device()()),
1539 inline std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
1541 bool self_connections)
1543 return std::make_unique<FixedFanInConnector<std::default_random_engine>>(
1545 std::make_shared<std::default_random_engine>(std::random_device()()),
1549 inline std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
1551 bool self_connections)
1554 std::make_unique<FixedFanInConnector<std::default_random_engine>>(
1556 std::make_shared<std::default_random_engine>(seed),
1561 inline std::unique_ptr<FixedFanInConnector<std::default_random_engine>>
1563 bool self_connections)
1566 std::make_unique<FixedFanInConnector<std::default_random_engine>>(
1568 std::make_shared<std::default_random_engine>(seed),
1574 inline std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
1576 bool self_connections)
1578 return std::make_unique<FixedFanOutConnector<std::default_random_engine>>(
1580 std::make_shared<std::default_random_engine>(std::random_device()()),
1583 inline std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
1585 bool self_connections)
1587 return std::make_unique<FixedFanOutConnector<std::default_random_engine>>(
1589 std::make_shared<std::default_random_engine>(std::random_device()()),
1593 inline std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
1595 bool self_connections)
1598 std::make_unique<FixedFanOutConnector<std::default_random_engine>>(
1600 std::make_shared<std::default_random_engine>(seed),
1605 inline std::unique_ptr<FixedFanOutConnector<std::default_random_engine>>
1607 bool self_connections)
1610 std::make_unique<FixedFanOutConnector<std::default_random_engine>>(
1612 std::make_shared<std::default_random_engine>(seed),
bool valid(const ConnectionDescriptor &) const override
Definition: connector.hpp:980
NeuronIndex nid_src0() const
Definition: connector.hpp:744
FixedProbabilityConnectorBase(std::shared_ptr< SynapseBase > synapse, bool self_connections)
Definition: connector.hpp:1088
void connect(const ConnectionDescriptor &descr, std::vector< LocalConnection > &tar) const override
Definition: connector.hpp:1358
bool valid(const ConnectionDescriptor &) const override
Definition: connector.hpp:1030
Definition: connector.hpp:212
std::string name() const override
Definition: connector.hpp:1095
Definition: connector.hpp:996
Connector(Real weight, Real delay, bool self_connections)
Definition: connector.hpp:256
Real weight
Definition: connector.hpp:49
Connector & connector() const
Definition: connector.hpp:773
bool operator<(const LocalConnection &s) const
Definition: connector.hpp:165
std::string name() const override
Definition: connector.hpp:1001
bool valid() const
Definition: connector.hpp:123
FixedFanConnectorBase(SynapseBase &synapse, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1245
static std::unique_ptr< FixedProbabilityConnector< std::default_random_engine > > fixed_probability(std::unique_ptr< Connector > connector, Real p, bool allow_self_connections=true)
Definition: connector.hpp:1469
Definition: connector.hpp:191
Definition: connector.hpp:1194
void update_connector(std::shared_ptr< Connector > connector)
Definition: connector.hpp:778
size_t size(size_t size_src_pop, size_t size_target_pop) const override
Definition: connector.hpp:895
std::string name() const override
Definition: connector.hpp:1322
int32_t NeuronIndex
Definition: types.hpp:74
const std::shared_ptr< SynapseBase > synapse() const
Definition: connector.hpp:318
void connect(const ConnectionDescriptor &descr, std::vector< LocalConnection > &tar) const override
Definition: connector.hpp:1123
static std::unique_ptr< FromListConnector > from_list(const std::vector< LocalConnection > &connections)
Definition: connector.hpp:1437
static std::unique_ptr< AllToAllConnector > all_to_all(Real weight=1.0, Real delay=0.0, bool allow_self_connections=true)
Definition: connector.hpp:1403
Synapse(Real weight=0.0, Real delay=0.0)
Definition: connector.hpp:63
bool instantiate_connections_to_file(std::string filename, const std::vector< ConnectionDescriptor > &descrs)
static std::unique_ptr< FixedFanOutConnector< std::default_random_engine > > fixed_fan_out(size_t n_fan_out, Real weight, Real delay=0.0, bool allow_self_connections=true)
Definition: connector.hpp:1575
const std::string synapse_name() const
Definition: connector.hpp:324
void seed_given()
Definition: connector.hpp:1101
bool valid(const ConnectionDescriptor &) const override
Definition: connector.hpp:893
bool operator==(const ConnectionDescriptor &s) const
Definition: connector.hpp:814
std::string name() const override
Definition: connector.hpp:900
FunctorConnectorBase()
Definition: connector.hpp:998
FromListConnector(std::initializer_list< LocalConnection > connections)
Definition: connector.hpp:969
FromListConnector(std::vector< LocalConnection > connections)
Definition: connector.hpp:963
PopulationIndex pid_tar() const
Definition: connector.hpp:755
static std::unique_ptr< FixedFanInConnector< std::default_random_engine > > fixed_fan_in(size_t n_fan_in, Real weight, Real delay=0.0, bool allow_self_connections=true)
Definition: connector.hpp:1530
double Real
Definition: types.hpp:56
static std::unique_ptr< OneToOneConnector > one_to_one(Real weight=1.0, Real delay=0.0)
Definition: connector.hpp:1414
Definition: synapses.hpp:71
PopulationIndex pid_src() const
Definition: connector.hpp:738
bool valid(const ConnectionDescriptor &descr) const override
Definition: connector.hpp:1386
void generate_connections(size_t offs, size_t len, size_t subset_len, size_t i0, size_t i1, const F &f, bool self) const
Definition: connector.hpp:1200
static auto equals(const T &t1, const T &t2)
Definition: comperator.hpp:116
std::vector< LocalConnection > & get_connections()
Definition: connector.hpp:993
FixedFanOutConnector(size_t n_fan_out, Real weight, Real delay, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1340
FromListConnector(std::initializer_list< LocalConnection > connections, SynapseBase &synapse)
Definition: connector.hpp:956
size_t size(size_t size_src_pop, size_t size_target_pop) const override
Definition: connector.hpp:1151
bool operator<(const ConnectionDescriptor &s) const
Definition: connector.hpp:825
size_t size(size_t size_src_pop, size_t) const override
Definition: connector.hpp:1393
Definition: connector.hpp:90
NeuronIndex src
Definition: connector.hpp:94
bool valid(const ConnectionDescriptor &descr) const override
Definition: connector.hpp:916
Connector(std::shared_ptr< SynapseBase > synapse, bool self_connections)
Definition: connector.hpp:250
ConnectionDescriptor(uint32_t pid_src, uint32_t nid_src0, uint32_t nid_src1, uint32_t pid_tar, uint32_t nid_tar0, uint32_t nid_tar1, std::shared_ptr< Connector > connector=nullptr, const char *label="")
Definition: connector.hpp:720
NeuronIndex ntar() const
Definition: connector.hpp:808
bool excitatory() const
Definition: connector.hpp:71
size_t size(size_t, size_t) const override
Definition: connector.hpp:982
size_t size(size_t size_src_pop, size_t) const override
Definition: connector.hpp:921
FixedFanInConnector(size_t n_fan_in, SynapseBase &synapse, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1278
Real additional_parameter() const
Definition: connector.hpp:293
std::string name() const override
Definition: connector.hpp:926
void connect(const ConnectionDescriptor &descr, std::vector< LocalConnection > &tar) const override
Definition: connector.hpp:1014
RandomConnector(Real weight, Real delay, Real probability, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1168
bool allow_self_connections() const
Definition: connector.hpp:291
static auto smaller(const T &t1, const T &t2)
Definition: comperator.hpp:88
FixedFanOutConnector(size_t n_fan_out, SynapseBase &synapse, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1348
size_t size(size_t size_src_pop, size_t size_target_pop) const override
Definition: connector.hpp:1032
FunctorConnector(const Callback &cback)
Definition: connector.hpp:1010
std::string name() const override
Definition: connector.hpp:1185
static std::unique_ptr< RandomConnector< std::default_random_engine > > random(Real weight=1, Real delay=0, Real probability=1, bool allow_self_connections=true)
Definition: connector.hpp:1490
FromListConnector(std::vector< LocalConnection > connections, SynapseBase &synapse)
Definition: connector.hpp:949
size_t size()
Definition: connector.hpp:833
bool inhibitory() const
Definition: connector.hpp:136
bool valid(const ConnectionDescriptor &descr) const override
Definition: connector.hpp:1146
static std::unique_ptr< FunctorConnector< F > > functor(const F &cback)
Definition: connector.hpp:1450
LocalConnection(uint32_t src, uint32_t tar, SynapseBase &synapse)
Definition: connector.hpp:115
RandomConnector(SynapseBase &synapse, Real probability, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1176
Connector(SynapseBase &synapse, bool self_connections)
Definition: connector.hpp:245
Definition: connector.hpp:197
NeuronIndex tar
Definition: connector.hpp:99
Real delay
Definition: connector.hpp:54
LocalConnection absolute_connection()
Definition: connector.hpp:141
NeuronIndex nsrc() const
Definition: connector.hpp:803
Definition: brainscales_lib.hpp:39
void connect(std::vector< LocalConnection > &tar) const
Definition: connector.hpp:790
Definition: connector.hpp:188
std::string name() const override
Definition: connector.hpp:984
NeuronIndex nid_tar1() const
Definition: connector.hpp:767
bool operator==(const LocalConnection &s) const
Definition: connector.hpp:151
bool valid() const
Definition: connector.hpp:798
std::string name() const override
Definition: connector.hpp:1391
Definition: connector.hpp:907
static std::shared_ptr< SynapseBase > make_shared(SynapseBase &synapse)
LocalConnection(uint32_t src=0, uint32_t tar=0, Real weight=0.0, Real delay=0.0)
Definition: connector.hpp:110
const std::string & label() const
Definition: connector.hpp:844
bool inhibitory() const
Definition: connector.hpp:76
bool excitatory() const
Definition: connector.hpp:131
NeuronIndex nid_tar0() const
Definition: connector.hpp:761
std::string name_string
Definition: connector.hpp:1087
Definition: synapses.hpp:217
void connect(const ConnectionDescriptor &descr, std::vector< LocalConnection > &tar) const override
Definition: connector.hpp:1289
Definition: connector.hpp:182
void seed_given()
Definition: connector.hpp:1257
Definition: connector.hpp:705
int32_t PopulationIndex
Definition: types.hpp:75
std::unique_ptr< Connector > m_connector
Definition: connector.hpp:1107
Definition: exceptions.hpp:38
bool valid(const ConnectionDescriptor &descr) const override
Definition: connector.hpp:1317
NeuronIndex nid_src1() const
Definition: connector.hpp:750
std::shared_ptr< RandomEngine > m_engine
Definition: connector.hpp:1108
Definition: connector.hpp:194
FixedFanInConnector(size_t n_fan_in, Real weight, Real delay, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1270
FixedProbabilityConnector(std::unique_ptr< Connector > connector, Real p, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1111
bool valid() const
Definition: connector.hpp:82
std::vector< std::vector< LocalConnection > > instantiate_connections(const std::vector< ConnectionDescriptor > &descrs)
const std::vector< LocalConnection > & learned_weights() const
Definition: connector.hpp:330
std::shared_ptr< SynapseBase > m_synapse
Definition: connector.hpp:217
FixedFanConnectorBase(Real weight, Real delay, std::shared_ptr< RandomEngine > engine, bool self_connections)
Definition: connector.hpp:1238
size_t size(size_t, size_t size_target_pop) const override
Definition: connector.hpp:1324
Definition: connector.hpp:934
Definition: connector.hpp:884
void _store_learned_weights(std::vector< LocalConnection > &&weights)
Definition: connector.hpp:344
Definition: connector.hpp:42
std::vector< LocalConnection > m_weights
Definition: connector.hpp:222
std::vector< Real > SynapseParameters
Definition: connector.hpp:104
Definition: connector.hpp:1085