Skip to content
This repository was archived by the owner on Apr 25, 2020. It is now read-only.

Commit 699a3c0

Browse files
committed
Convert to Python3
1 parent 534c7e0 commit 699a3c0

File tree

13 files changed

+1007
-1006
lines changed

13 files changed

+1007
-1006
lines changed

ComplexNetworkSim/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from agents import NetworkAgent
2-
from simulation import NetworkSimulation, Sim
3-
from plotting import PlotCreator
4-
from animation import AnimationCreator
1+
from .agents import NetworkAgent
2+
from .simulation import NetworkSimulation, Sim
3+
from .plotting import PlotCreator
4+
from .animation import AnimationCreator

ComplexNetworkSim/agents.py

Lines changed: 122 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,123 @@
1-
'''
2-
Module for the NetworkAgent class that can be subclassed by agents.
3-
4-
@author: Joe Schaul <[email protected]>
5-
'''
6-
7-
from SimPy import Simulation as Sim
8-
import networkx as nx
9-
import random
10-
11-
SEED = 123456789
12-
13-
ADD_EDGE = "add edge"
14-
REMOVE_EDGE = "remove edge"
15-
ADD_NODE = "add node"
16-
REMOVE_NODE = "remove node"
17-
18-
19-
class NetworkAgent(Sim.Process):
20-
'''NetworkAgent class that can be subclassed by agents. '''
21-
22-
#class variables, shared between all instances of this class
23-
r = random.Random(SEED)
24-
TIMESTEP_DEFAULT = 1.0
25-
26-
def __init__(self, state, initialiser, stateVector=[], name='network_process', **stateParameters):
27-
Sim.Process.__init__(self, name)
28-
self.state = state
29-
self.stateVector = stateVector
30-
self.stateParameters = stateParameters
31-
self.initialize(*initialiser)
32-
33-
34-
def initialize(self, id, sim, globalTopo, globalParams):
35-
''' this gets called automatically '''
36-
self.id = id
37-
self.sim = sim
38-
self.globalTopology = globalTopo
39-
self.globalSharedParameters = globalParams
40-
41-
def getAllNodes(self):
42-
return self.globalTopology.nodes()
43-
44-
def getAllAgents(self, state=None):
45-
neighs = self.getAllNodes()
46-
if state is not None:
47-
return [self.globalTopology.node[n]['agent'] for n in neighs
48-
if self.globalTopology.node[n]['agent'].state == state]
49-
else:
50-
return [self.globalTopology.node[n]['agent'] for n in neighs]
51-
52-
53-
54-
def getNeighbouringAgents(self, state=None):
55-
''' returns list of neighbours, but as agents, not nodes.
56-
so e.g. one can set result[0].state = INFECTED '''
57-
neighs = self.globalTopology.neighbors(self.id)
58-
if state is not None:
59-
return [self.globalTopology.node[n]['agent'] for n in neighs
60-
if self.globalTopology.node[n]['agent'].state == state]
61-
else:
62-
return [self.globalTopology.node[n]['agent'] for n in neighs]
63-
64-
def getNeighbouringAgentsIter(self, state=None):
65-
'''same as getNeighbouringAgents, but returns generator expression,
66-
not list.
67-
'''
68-
neighs = self.globalTopology.neighbors(self.id)
69-
if state is not None:
70-
return (self.globalTopology.node[n]['agent'] for n in neighs
71-
if self.globalTopology.node[n]['agent'].state == state)
72-
else:
73-
return (self.globalTopology.node[n]['agent'] for n in neighs)
74-
75-
def getNeighbouringNodes(self):
76-
''' returns list of neighbours as nodes.
77-
Call self.getAgent() on one of them to get the agent.'''
78-
return self.globalTopology.neighbors(self.id)
79-
80-
def getAgent(self, id):
81-
'''returns agent of specified ID.'''
82-
return self.globalTopology.node[id]['agent']
83-
84-
def addNewNode(self, state):
85-
#add & activate new agent
86-
return self.sim.addNewNode(state)
87-
88-
#add a random edge
89-
#u = NetworkAgent.r.choice(self.globalTopology.nodes())
90-
#self.globalTopology.add_edge(u, id)
91-
92-
def die(self):
93-
self.removeNode(self.id)
94-
95-
def removeNode(self, id):
96-
# cancel ? self.getAgent(id)
97-
self.globalTopology.remove_node(id)
98-
99-
def removeEdge(self, node1, node2):
100-
101-
self.globalTopology.remove_edge(self.id, self.currentSupernodeID)
102-
self.logTopoChange(REMOVE_EDGE, node1, node2)
103-
104-
105-
def addEdge(self, node1, node2):
106-
self.globalTopology.add_edge(self.id, self.currentSupernodeID)
107-
self.logTopoChange(ADD_EDGE, node1, node2)
108-
109-
110-
def logTopoChange(self, action, node, node2=None):
111-
#TODO: test, add this to netlogger...
112-
print action, node, node2
113-
114-
115-
116-
117-
118-
119-
120-
121-
122-
1+
'''
2+
Module for the NetworkAgent class that can be subclassed by agents.
3+
4+
@author: Joe Schaul <[email protected]>
5+
'''
6+
7+
from SimPy import Simulation as Sim
8+
import networkx as nx
9+
import random
10+
11+
SEED = 123456789
12+
13+
ADD_EDGE = "add edge"
14+
REMOVE_EDGE = "remove edge"
15+
ADD_NODE = "add node"
16+
REMOVE_NODE = "remove node"
17+
18+
19+
class NetworkAgent(Sim.Process):
20+
'''NetworkAgent class that can be subclassed by agents. '''
21+
22+
#class variables, shared between all instances of this class
23+
r = random.Random(SEED)
24+
TIMESTEP_DEFAULT = 1.0
25+
26+
def __init__(self, state, initialiser, stateVector=[], name='network_process', **stateParameters):
27+
Sim.Process.__init__(self, name)
28+
self.state = state
29+
self.stateVector = stateVector
30+
self.stateParameters = stateParameters
31+
self.initialize(*initialiser)
32+
33+
34+
def initialize(self, id, sim, globalTopo, globalParams):
35+
''' this gets called automatically '''
36+
self.id = id
37+
self.sim = sim
38+
self.globalTopology = globalTopo
39+
self.globalSharedParameters = globalParams
40+
41+
def getAllNodes(self):
42+
return self.globalTopology.nodes()
43+
44+
def getAllAgents(self, state=None):
45+
neighs = self.getAllNodes()
46+
if state is not None:
47+
return [self.globalTopology.node[n]['agent'] for n in neighs
48+
if self.globalTopology.node[n]['agent'].state == state]
49+
else:
50+
return [self.globalTopology.node[n]['agent'] for n in neighs]
51+
52+
53+
54+
def getNeighbouringAgents(self, state=None):
55+
''' returns list of neighbours, but as agents, not nodes.
56+
so e.g. one can set result[0].state = INFECTED '''
57+
neighs = self.globalTopology.neighbors(self.id)
58+
if state is not None:
59+
return [self.globalTopology.node[n]['agent'] for n in neighs
60+
if self.globalTopology.node[n]['agent'].state == state]
61+
else:
62+
return [self.globalTopology.node[n]['agent'] for n in neighs]
63+
64+
def getNeighbouringAgentsIter(self, state=None):
65+
'''same as getNeighbouringAgents, but returns generator expression,
66+
not list.
67+
'''
68+
neighs = self.globalTopology.neighbors(self.id)
69+
if state is not None:
70+
return (self.globalTopology.node[n]['agent'] for n in neighs
71+
if self.globalTopology.node[n]['agent'].state == state)
72+
else:
73+
return (self.globalTopology.node[n]['agent'] for n in neighs)
74+
75+
def getNeighbouringNodes(self):
76+
''' returns list of neighbours as nodes.
77+
Call self.getAgent() on one of them to get the agent.'''
78+
return self.globalTopology.neighbors(self.id)
79+
80+
def getAgent(self, id):
81+
'''returns agent of specified ID.'''
82+
return self.globalTopology.node[id]['agent']
83+
84+
def addNewNode(self, state):
85+
#add & activate new agent
86+
return self.sim.addNewNode(state)
87+
88+
#add a random edge
89+
#u = NetworkAgent.r.choice(self.globalTopology.nodes())
90+
#self.globalTopology.add_edge(u, id)
91+
92+
def die(self):
93+
self.removeNode(self.id)
94+
95+
def removeNode(self, id):
96+
# cancel ? self.getAgent(id)
97+
self.globalTopology.remove_node(id)
98+
99+
def removeEdge(self, node1, node2):
100+
101+
self.globalTopology.remove_edge(self.id, self.currentSupernodeID)
102+
self.logTopoChange(REMOVE_EDGE, node1, node2)
103+
104+
105+
def addEdge(self, node1, node2):
106+
self.globalTopology.add_edge(self.id, self.currentSupernodeID)
107+
self.logTopoChange(ADD_EDGE, node1, node2)
108+
109+
110+
def logTopoChange(self, action, node, node2=None):
111+
#TODO: test, add this to netlogger...
112+
print(action, node, node2)
113+
114+
115+
116+
117+
118+
119+
120+
121+
122+
123123

0 commit comments

Comments
 (0)