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,
                           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")
Beispiel #3
0
  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"