61template <
typename SynapseType>
62[[nodiscard]] knp::core::Projection<SynapseType>
all_to_all(
63 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
size_t presynaptic_pop_size,
64 size_t postsynaptic_pop_size,
68 return knp::core::Projection<SynapseType>(
69 presynaptic_uid, postsynaptic_uid,
71 presynaptic_pop_size * postsynaptic_pop_size);
89template <
typename SynapseType>
90[[nodiscard]] knp::core::Projection<SynapseType>
one_to_one(
91 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
size_t population_size,
95 return knp::core::Projection<SynapseType>(
113template <
typename SynapseType,
template <
typename...>
class Container>
115 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
118 return typename knp::core::Projection<SynapseType>(
134template <
typename SynapseType,
template <
typename,
typename,
typename...>
class Map>
135[[nodiscard]] knp::core::Projection<SynapseType>
from_map(
136 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
140 return knp::core::Projection<SynapseType>(
141 presynaptic_uid, postsynaptic_uid, synapse_generators::FromMap<SynapseType, Map>(synapses_map),
142 synapses_map.size());
159template <
typename SynapseType>
161 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
size_t presynaptic_pop_size,
162 size_t postsynaptic_pop_size,
double connection_probability,
166 const auto proj_size = presynaptic_pop_size * postsynaptic_pop_size;
167 auto fp = synapse_generators::FixedProbability<SynapseType>{
168 presynaptic_pop_size, postsynaptic_pop_size, connection_probability, syn_gen};
170 return knp::core::Projection<SynapseType>(presynaptic_uid, postsynaptic_uid, fp, proj_size);
185template <
typename SynapseType>
187 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
size_t presynaptic_pop_size,
190 const auto proj_size = presynaptic_pop_size * postsynaptic_pop_size;
192 return knp::core::Projection<SynapseType>(
193 presynaptic_uid, postsynaptic_uid,
211template <
typename SynapseType>
213 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
size_t presynaptic_pop_size,
214 size_t postsynaptic_pop_size,
size_t neurons_count,
218 const auto proj_size = presynaptic_pop_size * neurons_count;
220 return knp::core::Projection<SynapseType>(
221 presynaptic_uid, postsynaptic_uid,
222 synapse_generators::FixedNumberPost<SynapseType>(presynaptic_pop_size, postsynaptic_pop_size, syn_gen),
240template <
typename SynapseType>
242 const knp::core::UID &presynaptic_uid,
const knp::core::UID &postsynaptic_uid,
size_t presynaptic_pop_size,
243 size_t postsynaptic_pop_size,
size_t neurons_count,
247 const auto proj_size = postsynaptic_pop_size * neurons_count;
249 return knp::core::Projection<SynapseType>(
250 presynaptic_uid, postsynaptic_uid,
251 synapse_generators::FixedNumberPre<SynapseType>(presynaptic_pop_size, postsynaptic_pop_size, syn_gen),
269template <
typename DestinationSynapseType,
typename SourceSynapseType>
271 const knp::core::Projection<SourceSynapseType> &source_proj,
274 const std::optional<knp::core::UID> &presynaptic_uid = std::nullopt,
275 const std::optional<knp::core::UID> &postsynaptic_uid = std::nullopt)
277 return knp::core::Projection<DestinationSynapseType>(
const UID & get_postsynaptic() const
Get UID of the associated population to which this projection sends signals.
const UID & get_presynaptic() const
Get UID of the associated population from which this projection receives spikes.
size_t size() const
Count number of synapses in the projection.
typename synapse_traits::synapse_parameters< SynapseType > SynapseParameters
Parameters of the specified synapse type.
std::tuple< SynapseParameters, size_t, size_t > Synapse
Synapse description structure that contains synapse parameters and indexes of the associated neurons.
Namespace for framework projection creators.
knp::core::Projection< DestinationSynapseType > clone_projection(const knp::core::Projection< SourceSynapseType > &source_proj, parameters_generators::SynGen1ParamType< DestinationSynapseType > syn_gen=parameters_generators::default_synapse_gen< DestinationSynapseType >, const std::optional< knp::core::UID > &presynaptic_uid=std::nullopt, const std::optional< knp::core::UID > &postsynaptic_uid=std::nullopt)
Generate a projection which connections are duplicated from another projection.
knp::core::Projection< SynapseType > fixed_number_pre(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, size_t presynaptic_pop_size, size_t postsynaptic_pop_size, size_t neurons_count, parameters_generators::SynGen2ParamsType< SynapseType > syn_gen=parameters_generators::default_synapse_gen< SynapseType >)
Make connections between each postsynaptic neuron and a fixed number of random presynaptic neurons.
knp::core::Projection< SynapseType > from_map(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, const Map< typename std::tuple< size_t, size_t >, typename knp::core::Projection< SynapseType >::SynapseParameters > &synapses_map)
Generate projection from std::map object.
knp::core::Projection< SynapseType > one_to_one(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, size_t population_size, parameters_generators::SynGen1ParamType< SynapseType > syn_gen=std::bind(parameters_generators::default_synapse_gen< SynapseType >, std::placeholders::_1, 0))
Make one-to-one connections between neurons of presynaptic and postsynaptic populations.
knp::core::Projection< SynapseType > fixed_probability(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, size_t presynaptic_pop_size, size_t postsynaptic_pop_size, double connection_probability, parameters_generators::SynGen2ParamsType< SynapseType > syn_gen=parameters_generators::default_synapse_gen< SynapseType >)
Make connections with some probability between each presynaptic population (source) neuron to each po...
knp::core::Projection< SynapseType > all_to_all(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, size_t presynaptic_pop_size, size_t postsynaptic_pop_size, parameters_generators::SynGen2ParamsType< SynapseType > syn_gen=parameters_generators::default_synapse_gen< SynapseType >)
Make connections between each presynaptic population (source) neuron to each postsynaptic population ...
knp::core::Projection< SynapseType > fixed_number_post(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, size_t presynaptic_pop_size, size_t postsynaptic_pop_size, size_t neurons_count, parameters_generators::SynGen2ParamsType< SynapseType > syn_gen=parameters_generators::default_synapse_gen< SynapseType >)
Make connections between each presynaptic neuron and a fixed number of random postsynaptic neurons.
knp::core::Projection< SynapseType > from_container(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, const Container< typename core::Projection< SynapseType >::Synapse > &container)
Generate projection from container.
knp::core::Projection< SynapseType > index_based(const knp::core::UID &presynaptic_uid, const knp::core::UID &postsynaptic_uid, size_t presynaptic_pop_size, size_t postsynaptic_pop_size, parameters_generators::SynGenOptional2ParamsType< SynapseType > syn_gen)
Make connections between neurons of presynaptic and postsynaptic populations based on the synapse gen...
std::function< typename knp::core::Projection< SynapseType >::SynapseParameters(size_t, size_t)> SynGen2ParamsType
Two parameters (index, index) generator type.
std::function< typename knp::core::Projection< SynapseType >::SynapseParameters(size_t)> SynGen1ParamType
One parameter (index) generator type.
knp::core::Projection< SynapseType >::SynapseParameters default_synapse_gen(size_t, size_t)
Default generator of synapse parameters.
std::function< typename std::optional< typename knp::core::Projection< SynapseType >::SynapseParameters >( size_t, size_t)> SynGenOptional2ParamsType
Two parameters (index, index) generator type with optional result.
knp::core::Projection< SynapseType >::SynapseGenerator all_to_all(size_t presynaptic_pop_size, size_t postsynaptic_pop_size, parameters_generators::SynGen2ParamsType< SynapseType > syn_gen=parameters_generators::default_synapse_gen< SynapseType >)
Make connections between each presynaptic population (source) neuron to each postsynaptic population ...
knp::core::Projection< SynapseType >::SynapseGenerator from_container(const Container< typename core::Projection< SynapseType >::Synapse > &container)
Generate synapses from container.
knp::core::Projection< SynapseType >::SynapseGenerator index_based(size_t presynaptic_pop_size, size_t postsynaptic_pop_size, parameters_generators::SynGenOptional2ParamsType< SynapseType > syn_gen)
Make connections between neurons of presynaptic and postsynaptic populations based on the synapse gen...
knp::core::Projection< DestinationSynapseType >::SynapseGenerator clone_projection(const knp::core::Projection< SourceSynapseType > &source_proj, parameters_generators::SynGen1ParamType< DestinationSynapseType > syn_gen=parameters_generators::default_synapse_gen< DestinationSynapseType >)
Make connections duplicated from another projection.
knp::core::Projection< SynapseType >::SynapseGenerator one_to_one(size_t population_size, parameters_generators::SynGen1ParamType< SynapseType > syn_gen=std::bind(parameters_generators::default_synapse_gen< SynapseType >, std::placeholders::_1, 0))
Make one-to-one connections between neurons of presynaptic and postsynaptic populations.
General projection interface.