In   [10]: sim.reset() # first reset network algorithm state and nodes memory
In   [11]: sim.run # run 1. step of the first algorithm
In   [12]: landmark_node = net.nodes()[0]
In   [13]: landmark_node.inbox  # landmark receiving initializer message
Out[13]:
- - - - - - Message - - - - - -
  source = None
destination = <Node id=1>
  header = ‘initialize
id(message) = 0x908e9f0>
In   [14]: sim.run # run another step
In   [15]: landmark_node.outbox  # landmark prepared a broadcast message
Out[15]:
- - - - - - Message - - - - - -
  source = <Node id=1
destination = Broadcasted
  header = ‘Flood
id(message) = 0x90a3d30>
In   [16]: landmark_node.outbox[0].data
Out[16]: {<Node id=1>: array([201.2419, 141.9482, 1.])}
# check if position being sent in message is one being read by TruePosSensor
In   [17]: landmark_node.memory[‘landmarkPos’]
Out[17]: array([201.2419, 141.9482])
# another check by directly inspecting network
In   [18]: net.pos[node]
Out[18]: array([201.2419, 141.9482])
Listing 5: Example of step-by-step simulation and inspection of nodes and network data. In the first step of the DVHop algorithm spontaneous impulses are issued to landmark nodes in the from of special initialize messages. As a consequence in the second step landmark node is broadcasting Flood message with its true position and hopcount set to 1. After that we check if this is the same data being read by TruePositionSensor and at the end if that really is the landmark's true position by inspecting network data.