00001 #ifndef NEURSAMPLINGNETWORK_H_
00002 #define NEURSAMPLINGNETWORK_H_
00003
00004 #include "EvSimObject.h"
00005 #include "Synapse.h"
00006 #include "CompositeSynapse.h"
00007 #include "EvSimNetwork.h"
00008 #include "evesim_hash.h"
00009
00010 class NeurSamplingNetwork: public EvSimNetwork {
00011 public:
00012
00013 NeurSamplingNetwork(SimParameters sim_params = SimParameters()) : EvSimNetwork(sim_params)
00014 {};
00015
00016 virtual ~NeurSamplingNetwork();
00017
00018 EvSimObject::ID associateSpikeResponse(EvSimObject::ID id, const EvSimObjectFactory &resp_factory, Time delay = 0);
00019
00020 EvSimObject::ID getAssociatedSpikeResponse(EvSimObject::ID id);
00021
00022 using EvSimNetwork::connect;
00023
00024 EvSimObject::IDVector connectAll2All(EvSimObject::IDVector src_vec, EvSimObject::IDVector dest_vec,
00025 const SynapseFactory& syn_factory, EvSimObject::IDVector &psr_id_vec, EvSimObject::IDVector &bap_trace_id_vec, Time delay = 0);
00026
00027 EvSimObject::IDVector connectAll2All(EvSimObject::IDVector src_vec, EvSimObject::IDVector dest_vec,
00028 const SynapseFactory& syn_factory);
00029
00030 EvSimObject::ID connect(EvSimObject::ID src_id, EvSimObject::ID dest_id,
00031 const SynapseFactory& syn_factory, EvSimObject::ID &psr_id, EvSimObject::ID &bap_trace_id, Time delay = 0);
00032
00033 EvSimObject::ID connect(EvSimObject::ID src_id, EvSimObject::ID dest_id,
00034 const SynapseFactory& syn_factory, Time delay = 0);
00035
00036
00037 protected:
00038 typedef hash_map< EvSimObject::ID , EvSimObject::ID, evesim::hash<EvSimObject::ID> > AssociatedSpikeResponsesMapType;
00039
00040 AssociatedSpikeResponsesMapType assoc_spike_resp;
00041
00042 SpikeResponse * createNewPostSynResponse(const SynapseFactory &syn_factory, EvSimObject::ID & psr_id);
00043 SpikeResponse * createNewBackpropAPResponse(const SynapseFactory &syn_factory, EvSimObject::ID & bap_trace_id);
00044
00045 };
00046
00047 #endif