def testAutogrow(self): """testing auto-grow""" fieldWidth = 100 bitsOn = 10 s = SDRCategoryEncoder(n=fieldWidth, w=bitsOn, name="foo", verbosity=2, forced=True) encoded = numpy.zeros(fieldWidth) self.assertEqual(s.topDownCompute(encoded).value, "<UNKNOWN>") s.encodeIntoArray("catA", encoded) self.assertEqual(encoded.sum(), bitsOn) self.assertEqual(s.getScalars("catA"), 1) catA = encoded.copy() s.encodeIntoArray("catB", encoded) self.assertEqual(encoded.sum(), bitsOn) self.assertEqual(s.getScalars("catB"), 2) catB = encoded.copy() self.assertEqual(s.topDownCompute(catA).value, "catA") self.assertEqual(s.topDownCompute(catB).value, "catB") s.encodeIntoArray(SENTINEL_VALUE_FOR_MISSING_DATA, encoded) self.assertEqual(sum(encoded), 0) self.assertEqual(s.topDownCompute(encoded).value, "<UNKNOWN>") #Test Disabling Learning and autogrow s.setLearning(False) s.encodeIntoArray("catC", encoded) self.assertEqual(encoded.sum(), bitsOn) self.assertEqual(s.getScalars("catC"), 0) self.assertEqual(s.topDownCompute(encoded).value, "<UNKNOWN>") s.setLearning(True) s.encodeIntoArray("catC", encoded) self.assertEqual(encoded.sum(), bitsOn) self.assertEqual(s.getScalars("catC"), 3) self.assertEqual(s.topDownCompute(encoded).value, "catC")
def testAutogrow(self): """testing auto-grow""" fieldWidth = 100 bitsOn = 10 s = SDRCategoryEncoder(n=fieldWidth, w=bitsOn, name="foo", verbosity=2) encoded = numpy.zeros(fieldWidth) assert s.topDownCompute(encoded).value == "<UNKNOWN>" s.encodeIntoArray("catA", encoded) assert encoded.sum() == bitsOn assert s.getScalars('catA') == 1 catA = encoded.copy() s.encodeIntoArray("catB", encoded) assert encoded.sum() == bitsOn assert s.getScalars('catB') == 2 catB = encoded.copy() assert s.topDownCompute(catA).value == 'catA' assert s.topDownCompute(catB).value == 'catB' s.encodeIntoArray(SENTINEL_VALUE_FOR_MISSING_DATA, encoded) assert sum(encoded) == 0 assert s.topDownCompute(encoded).value == "<UNKNOWN>" #Test Disabling Learning and autogrow s.setLearning(False) s.encodeIntoArray("catC", encoded) assert encoded.sum() == bitsOn assert s.getScalars('catC') == 0 assert s.topDownCompute(encoded).value == "<UNKNOWN>" s.setLearning(True) s.encodeIntoArray("catC", encoded) assert encoded.sum() == bitsOn assert s.getScalars('catC') == 3 assert s.topDownCompute(encoded).value == "catC"