def testDestroySegment(self): """ Creates a segment, destroys it, and makes sure it got destroyed along with all of its synapses. """ connections = Connections(1024) connections.createSegment(10) segment2 = connections.createSegment(20) connections.createSegment(30) connections.createSegment(40) connections.createSynapse(segment2, 80, 0.85) connections.createSynapse(segment2, 81, 0.85) connections.createSynapse(segment2, 82, 0.15) self.assertEqual(4, connections.numSegments()) self.assertEqual(3, connections.numSynapses()) connections.destroySegment(segment2) self.assertEqual(3, connections.numSegments()) self.assertEqual(0, connections.numSynapses()) (numActiveConnected, numActivePotential) = connections.computeActivity([80, 81, 82], 0.5) self.assertEqual(0, numActiveConnected[segment2.flatIdx]) self.assertEqual(0, numActivePotential[segment2.flatIdx])
def testDestroySegment(self): """ Creates a segment, destroys it, and makes sure it got destroyed along with all of its synapses. """ connections = Connections(1024) connections.createSegment(10) segment2 = connections.createSegment(20) connections.createSegment(30) connections.createSegment(40) connections.createSynapse(segment2, 80, 0.85) connections.createSynapse(segment2, 81, 0.85) connections.createSynapse(segment2, 82, 0.15) self.assertEqual(4, connections.numSegments()) self.assertEqual(3, connections.numSynapses()) connections.destroySegment(segment2) self.assertEqual(3, connections.numSegments()) self.assertEqual(0, connections.numSynapses()) (numActiveConnected, numActivePotential) = connections.computeActivity([80, 81, 82], 0.5) self.assertEqual(0, numActiveConnected[segment2.flatIdx]) self.assertEqual(0, numActivePotential[segment2.flatIdx])
def testReachSegmentLimitMultipleTimes(self): """ Hit the maxSynapsesPerSegment threshold multiple times. Make sure it works more than once. """ connections = Connections(1024, 2, 2) segment = connections.createSegment(10) connections.createSynapse(segment, 201, .85) self.assertEqual(1, connections.numSynapses()) connections.createSynapse(segment, 202, .9) self.assertEqual(2, connections.numSynapses()) connections.createSynapse(segment, 203, .8) self.assertEqual(2, connections.numSynapses()) synapse = connections.createSynapse(segment, 204, .8) self.assertEqual(2, connections.numSynapses())
def testReachSegmentLimitMultipleTimes(self): """ Hit the maxSynapsesPerSegment threshold multiple times. Make sure it works more than once. """ connections = Connections(1024, 2, 2) segment = connections.createSegment(10) connections.createSynapse(segment, 201, .85) self.assertEqual(1, connections.numSynapses()) connections.createSynapse(segment, 202, .9) self.assertEqual(2, connections.numSynapses()) connections.createSynapse(segment, 203, .8) self.assertEqual(2, connections.numSynapses()) synapse = connections.createSynapse(segment, 204, .8) self.assertEqual(2, connections.numSynapses())
def testReuseSegmentWithDestroyedSynapses(self): """ Destroy a segment that has a destroyed synapse and a non-destroyed synapse. Create a new segment in the same place. Make sure its synapse count is correct. """ connections = Connections(1024) segment = connections.createSegment(11) synapse1 = connections.createSynapse(segment, 201, .85) connections.createSynapse(segment, 202, .85) connections.destroySynapse(synapse1) self.assertEqual(1, connections.numSynapses(segment)) connections.destroySegment(segment) reincarnated = connections.createSegment(11) self.assertEqual(0, connections.numSynapses(reincarnated)) self.assertEqual(0, len(connections.synapsesForSegment(reincarnated)))
def testReuseSegmentWithDestroyedSynapses(self): """ Destroy a segment that has a destroyed synapse and a non-destroyed synapse. Create a new segment in the same place. Make sure its synapse count is correct. """ connections = Connections(1024) segment = connections.createSegment(11) synapse1 = connections.createSynapse(segment, 201, .85) connections.createSynapse(segment, 202, .85) connections.destroySynapse(synapse1) self.assertEqual(1, connections.numSynapses(segment)) connections.destroySegment(segment) reincarnated = connections.createSegment(11) self.assertEqual(0, connections.numSynapses(reincarnated)) self.assertEqual(0, len(connections.synapsesForSegment(reincarnated)))
def testDestroySynapsesThenReachLimit(self): """ Destroy some synapses then verify that the maxSynapsesPerSegment is still correctly applied. """ connections = Connections(1024, 2, 2) segment = connections.createSegment(10) synapse1 = connections.createSynapse(segment, 201, .85) synapse2 = connections.createSynapse(segment, 202, .85) self.assertEqual(2, connections.numSynapses()) connections.destroySynapse(synapse1) connections.destroySynapse(synapse2) self.assertEqual(0, connections.numSynapses()) connections.createSynapse(segment, 201, .85) self.assertEqual(1, connections.numSynapses()) connections.createSynapse(segment, 202, .90) self.assertEqual(2, connections.numSynapses()) synapse3 = connections.createSynapse(segment, 203, .8) self.assertEqual(2, connections.numSynapses())
def testDestroySynapsesThenReachLimit(self): """ Destroy some synapses then verify that the maxSynapsesPerSegment is still correctly applied. """ connections = Connections(1024, 2, 2) segment = connections.createSegment(10) synapse1 = connections.createSynapse(segment, 201, .85) synapse2 = connections.createSynapse(segment, 202, .85) self.assertEqual(2, connections.numSynapses()) connections.destroySynapse(synapse1) connections.destroySynapse(synapse2) self.assertEqual(0, connections.numSynapses()) connections.createSynapse(segment, 201, .85) self.assertEqual(1, connections.numSynapses()) connections.createSynapse(segment, 202, .90) self.assertEqual(2, connections.numSynapses()) synapse3 = connections.createSynapse(segment, 203, .8) self.assertEqual(2, connections.numSynapses())
def testDestroySynapse(self): """ Creates a segment, creates a number of synapses on it, destroys a synapse, and makes sure it got destroyed. """ connections = Connections(1024) segment = connections.createSegment(20) synapse1 = connections.createSynapse(segment, 80, .85) synapse2 = connections.createSynapse(segment, 81, .85) synapse3 = connections.createSynapse(segment, 82, .15) self.assertEqual(3, connections.numSynapses()) connections.destroySynapse(synapse2) self.assertEqual(2, connections.numSynapses()) self.assertEqual(set([synapse1, synapse3]), connections.synapsesForSegment(segment)) (numActiveConnected, numActivePotential) = connections.computeActivity([80, 81, 82], .5) self.assertEqual(1, numActiveConnected[segment.flatIdx]) self.assertEqual(2, numActivePotential[segment.flatIdx])
def testDestroySynapse(self): """ Creates a segment, creates a number of synapses on it, destroys a synapse, and makes sure it got destroyed. """ connections = Connections(1024) segment = connections.createSegment(20) synapse1 = connections.createSynapse(segment, 80, .85) synapse2 = connections.createSynapse(segment, 81, .85) synapse3 = connections.createSynapse(segment, 82, .15) self.assertEqual(3, connections.numSynapses()) connections.destroySynapse(synapse2) self.assertEqual(2, connections.numSynapses()) self.assertEqual(set([synapse1, synapse3]), connections.synapsesForSegment(segment)) (numActiveConnected, numActivePotential) = connections.computeActivity([80, 81, 82], .5) self.assertEqual(1, numActiveConnected[segment.flatIdx]) self.assertEqual(2, numActivePotential[segment.flatIdx])
def testDestroySegmentWithDestroyedSynapses(self): """ Destroy a segment that has a destroyed synapse and a non-destroyed synapse. Make sure nothing gets double-destroyed. """ connections = Connections(1024) segment1 = connections.createSegment(11) segment2 = connections.createSegment(12) connections.createSynapse(segment1, 101, .85) synapse2a = connections.createSynapse(segment2, 201, .85) connections.createSynapse(segment2, 202, .85) self.assertEqual(3, connections.numSynapses()) connections.destroySynapse(synapse2a) self.assertEqual(2, connections.numSegments()) self.assertEqual(2, connections.numSynapses()) connections.destroySegment(segment2) self.assertEqual(1, connections.numSegments()) self.assertEqual(1, connections.numSynapses())
def testDestroySegmentWithDestroyedSynapses(self): """ Destroy a segment that has a destroyed synapse and a non-destroyed synapse. Make sure nothing gets double-destroyed. """ connections = Connections(1024) segment1 = connections.createSegment(11) segment2 = connections.createSegment(12) connections.createSynapse(segment1, 101, .85) synapse2a = connections.createSynapse(segment2, 201, .85) connections.createSynapse(segment2, 202, .85) self.assertEqual(3, connections.numSynapses()) connections.destroySynapse(synapse2a) self.assertEqual(2, connections.numSegments()) self.assertEqual(2, connections.numSynapses()) connections.destroySegment(segment2) self.assertEqual(1, connections.numSegments()) self.assertEqual(1, connections.numSynapses())