Skip to content
This repository has been archived by the owner on Sep 1, 2023. It is now read-only.

Commit

Permalink
Merge pull request #2836 from chetan51/issue-2835
Browse files Browse the repository at this point in the history
Add capnp serialization to RecordSensor region
  • Loading branch information
chetan51 committed Dec 16, 2015
2 parents 884baab + 61957b7 commit 728bd19
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/nupic/encoders/record_sensor.capnp
@@ -0,0 +1,12 @@
@0xad4890be062550a2;

using import "/nupic/encoders/multi.capnp".MultiEncoderProto;

# Next ID: 5
struct RecordSensorProto {
encoder @0 :MultiEncoderProto;
disabledEncoder @1 :MultiEncoderProto;
topDownMode @2 :UInt32;
verbosity @3 :UInt32;
numCategories @4 :UInt32;
}
40 changes: 40 additions & 0 deletions src/nupic/regions/RecordSensor.py
Expand Up @@ -23,6 +23,14 @@
import numpy
from nupic.bindings.regions.PyRegion import PyRegion
from nupic.data.fieldmeta import FieldMetaType
from nupic.encoders.multi import MultiEncoder

try:
import capnp
except ImportError:
capnp = None
if capnp:
from nupic.encoders.record_sensor_capnp import RecordSensorProto



Expand Down Expand Up @@ -511,3 +519,35 @@ def setParameter(self, parameterName, index, parameterValue):

else:
raise Exception('Unknown parameter: ' + parameterName)


def write(self, proto):
"""Write state to proto object.
proto: PyRegionProto capnproto object
"""
regionImpl = proto.regionImpl.as_struct(RecordSensorProto)

self.encoder.write(regionImpl.encoder)
self.disabledEncoder.write(regionImpl.disabledEncoder)
regionImpl.topDownMode = self.topDownMode
regionImpl.verbosity = self.verbosity
regionImpl.numCategories = self.numCategories


@classmethod
def read(cls, proto):
"""Read state from proto object.
proto: PyRegionProto capnproto object
"""
regionImpl = proto.regionImpl.as_struct(RecordSensorProto)
instance = cls()

instance.encoder = MultiEncoder.read(regionImpl.encoder)
instance.disabledEncoder = MultiEncoder.read(regionImpl.disabledEncoder)
instance.topDownMode = regionImpl.topDownMode
instance.verbosity = regionImpl.verbosity
instance.numCategories = regionImpl.numCategories

return instance

0 comments on commit 728bd19

Please sign in to comment.