Skip to content

Commit dbec97b

Browse files
Initial network module migration
1 parent 163eb87 commit dbec97b

File tree

90 files changed

+3326
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+3326
-112
lines changed

CMakeLists.txt

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,88 @@ set(SOURCES
4141
src/fields/test_object.cpp
4242
src/fields/python_bindings.cpp
4343
src/network/model.cpp
44+
src/network/activation.cpp
45+
src/network/activation_definition.cpp
46+
src/network/activation_key.cpp
47+
src/network/activation.cpp
48+
src/network/activation_definition.cpp
49+
src/network/activation_key.cpp
50+
src/network/binding_signal.cpp
51+
src/network/config.cpp
52+
src/network/conjunctive_activation.cpp
53+
src/network/conjunctive_synapse.cpp
54+
src/network/direction.cpp
55+
src/network/disjunctive_activation.cpp
56+
src/network/disjunctive_synapse.cpp
57+
src/network/document.cpp
58+
src/network/edge_definition.cpp
59+
src/network/element.cpp
60+
src/network/element_step.cpp
61+
src/network/f_s_suspension_callback.cpp
62+
src/network/fired.cpp
63+
src/network/fired_queue_key.cpp
64+
src/network/in_memory_suspension_callback.cpp
65+
src/network/inhibitory_activation.cpp
66+
src/network/input.cpp
67+
src/network/link.cpp
68+
src/network/link_definition.cpp
69+
src/network/lock_exception.cpp
70+
src/network/missing_neuron_exception.cpp
71+
src/network/model.cpp
72+
src/network/model_provider.cpp
73+
src/network/neuron.cpp
74+
src/network/neuron_definition.cpp
75+
src/network/neuron_reference.cpp
76+
src/network/neuron_serialization_exception.cpp
77+
src/network/node_definition.cpp
78+
src/network/output.cpp
79+
src/network/phase.cpp
80+
src/network/read_write_lock.cpp
81+
src/network/ref_type.cpp
82+
src/network/save.cpp
83+
src/network/suspension_callback.cpp
84+
src/network/synapse.cpp
85+
src/network/synapse_definition.cpp
86+
src/network/transition.cpp
87+
src/network/utils.cpp
88+
src/network/binding_signal.cpp
89+
src/network/config.cpp
90+
src/network/conjunctive_activation.cpp
91+
src/network/conjunctive_synapse.cpp
92+
src/network/direction.cpp
93+
src/network/disjunctive_activation.cpp
94+
src/network/disjunctive_synapse.cpp
95+
src/network/document.cpp
96+
src/network/edge_definition.cpp
97+
src/network/element.cpp
98+
src/network/element_step.cpp
99+
src/network/f_s_suspension_callback.cpp
100+
src/network/fired.cpp
101+
src/network/fired_queue_key.cpp
102+
src/network/in_memory_suspension_callback.cpp
103+
src/network/inhibitory_activation.cpp
104+
src/network/input.cpp
105+
src/network/link.cpp
106+
src/network/link_definition.cpp
107+
src/network/lock_exception.cpp
108+
src/network/missing_neuron_exception.cpp
109+
src/network/model.cpp
110+
src/network/model_provider.cpp
111+
src/network/neuron.cpp
112+
src/network/neuron_definition.cpp
113+
src/network/neuron_reference.cpp
114+
src/network/neuron_serialization_exception.cpp
115+
src/network/node_definition.cpp
116+
src/network/output.cpp
117+
src/network/phase.cpp
118+
src/network/read_write_lock.cpp
119+
src/network/ref_type.cpp
120+
src/network/save.cpp
121+
src/network/suspension_callback.cpp
122+
src/network/synapse.cpp
123+
src/network/synapse_definition.cpp
124+
src/network/transition.cpp
125+
src/network/utils.cpp
44126
)
45127

46128
include_directories(${PROJECT_SOURCE_DIR}/include)

include/network/activation.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#ifndef NETWORK_ACTIVATION_H
2+
#define NETWORK_ACTIVATION_H
3+
4+
#include <map>
5+
#include <set>
6+
#include <vector>
7+
#include "network/element.h"
8+
#include "network/model_provider.h"
9+
#include "network/queue_provider.h"
10+
#include "network/neuron.h"
11+
#include "network/document.h"
12+
#include "network/binding_signal.h"
13+
#include "network/link.h"
14+
#include "network/timestamp.h"
15+
16+
class Activation : public Element, public ModelProvider, public QueueProvider {
17+
public:
18+
static const std::function<bool(Activation*, Activation*)> ID_COMPARATOR;
19+
20+
Activation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType, BindingSignal*> bindingSignals);
21+
virtual ~Activation();
22+
23+
ActivationKey getKey();
24+
Activation* getParent();
25+
void addOutputLink(Link* l);
26+
virtual void addInputLink(Link* l) = 0;
27+
BindingSignal* getBindingSignal(BSType s);
28+
std::map<BSType, BindingSignal*> getBindingSignals();
29+
bool hasConflictingBindingSignals(std::map<BSType, BindingSignal*> targetBindingSignals);
30+
bool isConflictingBindingSignal(BSType s, BindingSignal* targetBS);
31+
bool hasNewBindingSignals(std::map<BSType, BindingSignal*> targetBindingSignals);
32+
Activation* branch(std::map<BSType, BindingSignal*> bindingSignals);
33+
void linkOutgoing();
34+
void linkOutgoing(Synapse* targetSyn);
35+
void propagate(Synapse* targetSyn);
36+
virtual void linkIncoming(Activation* excludedInputAct) = 0;
37+
std::set<Activation*> collectLinkingTargets(Neuron* n);
38+
int getId();
39+
Timestamp getCreated();
40+
void setCreated(Timestamp ts);
41+
Timestamp getFired();
42+
void setFired();
43+
void setFired(Timestamp f);
44+
void updateFiredStep(FieldOutput* net);
45+
Queue* getQueue();
46+
Neuron* getNeuron();
47+
Document* getDocument();
48+
Model* getModel();
49+
Link* getCorrespondingInputLink(Link* l);
50+
Link* getCorrespondingOutputLink(Link* l);
51+
std::vector<Link*> getInputLinks(LinkDefinition* linkDefinition);
52+
virtual std::vector<Link*> getInputLinks() = 0;
53+
std::vector<Link*> getOutputLinks(LinkDefinition* linkDefinition);
54+
std::vector<Link*> getOutputLinks();
55+
Link* getOutputLink(Neuron* n);
56+
std::vector<Link*> getOutputLinks(Synapse* s);
57+
int compareTo(Activation* act);
58+
bool equals(Activation* o);
59+
int hashCode();
60+
std::string toString();
61+
std::string toKeyString();
62+
63+
protected:
64+
int id;
65+
Neuron* neuron;
66+
Document* doc;
67+
std::map<BSType, BindingSignal*> bindingSignals;
68+
Activation* parent;
69+
Timestamp created;
70+
Timestamp fired;
71+
Fired* firedStep;
72+
std::map<int, Link*> outputLinks;
73+
};
74+
75+
#endif // NETWORK_ACTIVATION_H
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#ifndef NETWORK_ACTIVATION_DEFINITION_H
2+
#define NETWORK_ACTIVATION_DEFINITION_H
3+
4+
#include "network/node_definition.h"
5+
6+
class ActivationDefinition : public NodeDefinition {
7+
public:
8+
ActivationDefinition();
9+
virtual ~ActivationDefinition();
10+
11+
// Add any additional methods or members specific to ActivationDefinition here
12+
};
13+
14+
#endif // NETWORK_ACTIVATION_DEFINITION_H

include/network/activation_key.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#ifndef NETWORK_ACTIVATION_KEY_H
2+
#define NETWORK_ACTIVATION_KEY_H
3+
4+
class ActivationKey {
5+
public:
6+
ActivationKey(long neuronId, int actId);
7+
long getNeuronId() const;
8+
int getActId() const;
9+
10+
private:
11+
long neuronId;
12+
int actId;
13+
};
14+
15+
#endif // NETWORK_ACTIVATION_KEY_H

include/network/binding_signal.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef NETWORK_BINDING_SIGNAL_H
2+
#define NETWORK_BINDING_SIGNAL_H
3+
4+
#include <map>
5+
#include <set>
6+
#include "network/activation.h"
7+
#include "network/activation_key.h"
8+
#include "document.h"
9+
#include "neuron.h"
10+
11+
class BindingSignal {
12+
public:
13+
BindingSignal(int tokenId, Document* doc);
14+
int getTokenId() const;
15+
Document* getDocument() const;
16+
void addActivation(Activation* act);
17+
std::set<Activation*> getActivations(Neuron* n);
18+
std::set<Activation*> getActivations();
19+
std::string toString() const;
20+
21+
private:
22+
int tokenId;
23+
Document* doc;
24+
std::map<ActivationKey, Activation*, ActivationKeyComparator> activations;
25+
};
26+
27+
#endif // NETWORK_BINDING_SIGNAL_H

include/network/bs_type.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef NETWORK_BS_TYPE_H
2+
#define NETWORK_BS_TYPE_H
3+
4+
class BSType {
5+
public:
6+
virtual ~BSType() = default;
7+
// Add any additional methods or members specific to BSType here
8+
};
9+
10+
#endif // NETWORK_BS_TYPE_H

include/network/config.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#ifndef NETWORK_CONFIG_H
2+
#define NETWORK_CONFIG_H
3+
4+
class Config {
5+
public:
6+
Config();
7+
double getLearnRate() const;
8+
Config& setLearnRate(double learnRate);
9+
double getAlpha() const;
10+
Config& setAlpha(double alpha);
11+
bool isTrainingEnabled() const;
12+
Config& setTrainingEnabled(bool trainingEnabled);
13+
bool isCountingEnabled() const;
14+
Config& setCountingEnabled(bool countingEnabled);
15+
long getNeuronProviderRetention() const;
16+
Config& setNeuronProviderRetention(long neuronProviderRetention);
17+
long getTimeout() const;
18+
Config& setTimeout(long timeout);
19+
std::string toString() const;
20+
21+
private:
22+
double alpha;
23+
double learnRate;
24+
bool trainingEnabled;
25+
bool countingEnabled;
26+
long neuronProviderRetention;
27+
long timeout;
28+
};
29+
30+
#endif // NETWORK_CONFIG_H
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef NETWORK_CONJUNCTIVE_ACTIVATION_H
2+
#define NETWORK_CONJUNCTIVE_ACTIVATION_H
3+
4+
#include "network/activation.h"
5+
#include <map>
6+
7+
class ConjunctiveActivation : public Activation {
8+
public:
9+
ConjunctiveActivation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType, BindingSignal*> bindingSignals);
10+
virtual ~ConjunctiveActivation();
11+
12+
void linkIncoming(Activation* excludedInputAct) override;
13+
void addInputLink(Link* l) override;
14+
std::vector<Link*> getInputLinks() override;
15+
16+
private:
17+
std::map<int, Link*> inputLinks;
18+
};
19+
20+
#endif // NETWORK_CONJUNCTIVE_ACTIVATION_H
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#ifndef NETWORK_CONJUNCTIVE_SYNAPSE_H
2+
#define NETWORK_CONJUNCTIVE_SYNAPSE_H
3+
4+
#include "network/synapse.h"
5+
6+
class ConjunctiveSynapse : public Synapse {
7+
public:
8+
ConjunctiveSynapse(SynapseDefinition* type);
9+
ConjunctiveSynapse(SynapseDefinition* type, Neuron* input, Neuron* output);
10+
11+
void write(DataOutput* out) override;
12+
void readFields(DataInput* in, TypeRegistry* tr) override;
13+
14+
private:
15+
bool propagable;
16+
};
17+
18+
#endif // NETWORK_CONJUNCTIVE_SYNAPSE_H

include/network/direction.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef NETWORK_DIRECTION_H
2+
#define NETWORK_DIRECTION_H
3+
4+
#include "network/model.h"
5+
#include "network/activation.h"
6+
#include "network/link.h"
7+
#include "network/neuron.h"
8+
#include "network/synapse.h"
9+
#include "network/bs_type.h"
10+
#include "network/transition.h"
11+
12+
class Direction {
13+
public:
14+
virtual ~Direction() = default;
15+
virtual Direction* invert() = 0;
16+
virtual Neuron* getNeuron(Model* m, Synapse* s) = 0;
17+
virtual Activation* getActivation(Link* l) = 0;
18+
virtual int getOrder() = 0;
19+
virtual BSType* transition(BSType* s, Transition* t) = 0;
20+
virtual void write(DataOutput* out) = 0;
21+
22+
static Direction* read(DataInput* in);
23+
};
24+
25+
#endif // NETWORK_DIRECTION_H

0 commit comments

Comments
 (0)