def testPickCellsToLearnOnAvoidDuplicates(self):
    tm = TemporalMemory(seed=42)

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

    winnerCells = set([tm.layer.columns[0].cells[23]])

    # Ensure that no additional (duplicate) cells were picked
    self.assertEqual(tm.pickCellsToLearnOn(2, segment1, winnerCells),
                     set())
  def testPickCellsToLearnOn(self):
    tm = TemporalMemory(seed=42)

    segment1 = tm.layer.columns[0].cells[0].createSegment()

    winnerCells = set([tm.layer.columns[0].cells[4],
                       tm.layer.columns[1].cells[15],
                       tm.layer.columns[1].cells[26],
                       tm.layer.columns[2].cells[29]])

    self.assertEqual(tm.pickCellsToLearnOn(2, segment1, winnerCells),
                     set([tm.layer.columns[0].cells[4],
                          tm.layer.columns[1].cells[26]]))  # randomly picked

    self.assertEqual(tm.pickCellsToLearnOn(100, segment1, winnerCells),
                     set([tm.layer.columns[0].cells[4],
                          tm.layer.columns[1].cells[15],
                          tm.layer.columns[1].cells[26],
                          tm.layer.columns[2].cells[29]]))

    self.assertEqual(tm.pickCellsToLearnOn(0, segment1, winnerCells),
                     set())