def testAdaptSegmentToMin(self):
    tm = TemporalMemory()

    segment1 = tm.layer.columns[0].cells[0].createSegment()
    synapse1 = segment1.createSynapse(presynapticCell=tm.layer.columns[0].cells[23], permanence=0.1)

    tm.adaptSegment(segment1, set(),
                    tm.permanenceIncrement,
                    tm.permanenceDecrement)

    synapses = segment1.synapses
    self.assertFalse(synapse1 in synapses)
  def testAdaptSegmentToMax(self):
    tm = TemporalMemory()

    segment1 = tm.layer.columns[0].cells[0].createSegment()
    synapse1 = segment1.createSynapse(presynapticCell=tm.layer.columns[0].cells[23], permanence=0.9)

    tm.adaptSegment(segment1, set([synapse1]),
                    tm.permanenceIncrement,
                    tm.permanenceDecrement)
    self.assertAlmostEqual(synapse1.permanence, 1.0)

    # Now permanence should be at max
    tm.adaptSegment(segment1, set([synapse1]),
                    tm.permanenceIncrement,
                    tm.permanenceDecrement)
    self.assertAlmostEqual(synapse1.permanence, 1.0)
  def testAdaptSegment(self):
    tm = TemporalMemory(
      layer=Layer(columnDimensions=[2048], numCellsPerColumn=32)
    )

    segment1 = tm.layer.columns[0].cells[0].createSegment()
    synapse1 = segment1.createSynapse(presynapticCell=tm.layer.columns[0].cells[23], permanence=0.6)
    synapse2 = segment1.createSynapse(presynapticCell=tm.layer.columns[1].cells[5], permanence=0.4)
    synapse3 = segment1.createSynapse(presynapticCell=tm.layer.columns[14].cells[29], permanence=0.9)

    tm.adaptSegment(segment1, set([synapse1, synapse2]),
                    tm.permanenceIncrement,
                    tm.permanenceDecrement)

    self.assertAlmostEqual(synapse1.permanence, 0.7)
    self.assertAlmostEqual(synapse2.permanence, 0.5)
    self.assertAlmostEqual(synapse3.permanence, 0.8)