Пример #1
0
    def testReadWrite(self):
        """Test ScalarEncoder Cap'n Proto serialization implementation."""
        originalValue = self._l.encode(1)

        proto1 = ScalarEncoderProto.new_message()
        self._l.write(proto1)

        # Write the proto to a temp file and read it back into a new proto
        with tempfile.TemporaryFile() as f:
            proto1.write(f)
            f.seek(0)
            proto2 = ScalarEncoderProto.read(f)

        encoder = ScalarEncoder.read(proto2)

        self.assertIsInstance(encoder, ScalarEncoder)
        self.assertEqual(encoder.w, self._l.w)
        self.assertEqual(encoder.minval, self._l.minval)
        self.assertEqual(encoder.maxval, self._l.maxval)
        self.assertEqual(encoder.periodic, self._l.periodic)
        self.assertEqual(encoder.n, self._l.n)
        self.assertEqual(encoder.radius, self._l.radius)
        self.assertEqual(encoder.resolution, self._l.resolution)
        self.assertEqual(encoder.name, self._l.name)
        self.assertEqual(encoder.verbosity, self._l.verbosity)
        self.assertEqual(encoder.clipInput, self._l.clipInput)
        self.assertTrue(numpy.array_equal(encoder.encode(1), originalValue))
        self.assertEqual(self._l.decode(encoder.encode(1)),
                         encoder.decode(self._l.encode(1)))

        # Feed in a new value and ensure the encodings match
        result1 = self._l.encode(7)
        result2 = encoder.encode(7)
        self.assertTrue(numpy.array_equal(result1, result2))
Пример #2
0
  def testReadWrite(self):
    """Test ScalarEncoder Cap'n Proto serialization implementation."""
    originalValue = self._l.encode(1)

    proto1 = ScalarEncoderProto.new_message()
    self._l.write(proto1)

    # Write the proto to a temp file and read it back into a new proto
    with tempfile.TemporaryFile() as f:
      proto1.write(f)
      f.seek(0)
      proto2 = ScalarEncoderProto.read(f)

    encoder = ScalarEncoder.read(proto2)

    self.assertIsInstance(encoder, ScalarEncoder)
    self.assertEqual(encoder.w, self._l.w)
    self.assertEqual(encoder.minval, self._l.minval)
    self.assertEqual(encoder.maxval, self._l.maxval)
    self.assertEqual(encoder.periodic, self._l.periodic)
    self.assertEqual(encoder.n, self._l.n)
    self.assertEqual(encoder.radius, self._l.radius)
    self.assertEqual(encoder.resolution, self._l.resolution)
    self.assertEqual(encoder.name, self._l.name)
    self.assertEqual(encoder.verbosity, self._l.verbosity)
    self.assertEqual(encoder.clipInput, self._l.clipInput)
    self.assertTrue(numpy.array_equal(encoder.encode(1), originalValue))
    self.assertEqual(self._l.decode(encoder.encode(1)),
                     encoder.decode(self._l.encode(1)))

    # Feed in a new value and ensure the encodings match
    result1 = self._l.encode(7)
    result2 = encoder.encode(7)
    self.assertTrue(numpy.array_equal(result1, result2))
Пример #3
0
 def addEncoder(encoderAttr, offsetAttr):
   protoVal = getattr(proto, encoderAttr)
   if protoVal.n:
     setattr(encoder, encoderAttr, ScalarEncoder.read(protoVal))
     innerEncoder = getattr(encoder, encoderAttr)
     setattr(encoder, offsetAttr, encoder.width)
     innerOffset = getattr(encoder, offsetAttr)
     encoder.width += innerEncoder.getWidth()
     encoder.description.append((innerEncoder.name, innerOffset))
     encoder.encoders.append((innerEncoder.name, innerEncoder, innerOffset))
   else:
     setattr(encoder, encoderAttr, None)
Пример #4
0
 def addEncoder(encoderAttr, offsetAttr):
   protoVal = getattr(proto, encoderAttr)
   if protoVal.n:
     setattr(encoder, encoderAttr, ScalarEncoder.read(protoVal))
     innerEncoder = getattr(encoder, encoderAttr)
     setattr(encoder, offsetAttr, encoder.width)
     innerOffset = getattr(encoder, offsetAttr)
     encoder.width += innerEncoder.getWidth()
     encoder.description.append((innerEncoder.name, innerOffset))
     encoder.encoders.append((innerEncoder.name, innerEncoder, innerOffset))
   else:
     setattr(encoder, encoderAttr, None)
Пример #5
0
 def read(cls, proto):
     encoder = object.__new__(cls)
     encoder.verbosity = proto.verbosity
     encoder.minScaledValue = proto.minScaledValue
     encoder.maxScaledValue = proto.maxScaledValue
     encoder.clipInput = proto.clipInput
     encoder.minval = proto.minval
     encoder.maxval = proto.maxval
     encoder.encoder = ScalarEncoder.read(proto.encoder)
     encoder.name = proto.name
     encoder.width = encoder.encoder.getWidth()
     encoder.description = [(encoder.name, 0)]
     encoder._bucketValues = None
     return encoder
Пример #6
0
 def read(cls, proto):
     encoder = object.__new__(cls)
     encoder.verbosity = proto.verbosity
     encoder.minScaledValue = proto.minScaledValue
     encoder.maxScaledValue = proto.maxScaledValue
     encoder.clipInput = proto.clipInput
     encoder.minval = proto.minval
     encoder.maxval = proto.maxval
     encoder.encoder = ScalarEncoder.read(proto.encoder)
     encoder.name = proto.name
     encoder.width = encoder.encoder.getWidth()
     encoder.description = [(encoder.name, 0)]
     encoder._bucketValues = None
     return encoder
Пример #7
0
  def read(cls, proto):
    encoder = object.__new__(cls)

    encoder.verbosity = proto.verbosity
    encoder.encoder = ScalarEncoder.read(proto.encoder)
    encoder.width = proto.width
    encoder.description = [(proto.name, 0)]
    encoder.name = proto.name
    encoder.indexToCategory = {x.index: x.category
                               for x in proto.indexToCategory}
    encoder.categoryToIndex = {category: index
                               for index, category
                               in encoder.indexToCategory.items()
                               if category != UNKNOWN}
    encoder._topDownMappingM = None
    encoder._bucketValues = None

    return encoder