def read_hmm_mgr(file, gmm_mgr, log_domain=False, yaml_reader=None): """ Read a serialized HmmMgr object in from file. gmm_mgr must be a GmmMgr with models corresponding to all those used in the HmmMgr's Hmms. If yaml_reader is not None, it will be used as the source of data, in which case file will be ignored completely. >>> dummies = ( DummyModel(2, 0.1), DummyModel(2, 0.2), DummyModel(2, 0.4), DummyModel(2, 0.4) ) >>> gmm_mgr = GmmMgr(dummies) >>> doc = ''' ... --- ... - __onyx_yaml__meta_version : '1' ... __onyx_yaml__stream_type : 'OnyxText' ... __onyx_yaml__stream_version : '0' ... - ... # OnyxText header looks like this: ... - stream_type OnyxText stream_version 0 data_type HmmManager data_version 0 ... # format for HmmManager ... - HmmMgr IndexedCollection Hmm 1 ... - Hmm 0 ... - num_inputs 1 ... - num_states 1 ... - num_outputs 1 ... - transition_matrix Array 2 3 3 ... - +(-1023)0x0000000000000 +(+0000)0x0000000000000 +(-1023)0x0000000000000 ... - +(-1023)0x0000000000000 +(-0001)0x0000000000000 +(-0001)0x0000000000000 ... - +(-1023)0x0000000000000 +(-1023)0x0000000000000 +(-1023)0x0000000000000 ... - models List 1 ... - 0 ... ... ... ''' >>> f = cStringIO.StringIO(doc) >>> hmm_mgr = read_hmm_mgr(f, gmm_mgr) """ # Create YamldataReader if needed, hook up and do version checking if yaml_reader is None: yaml_reader = YamldataReader(file, stream_type=OnyxTextReader.STREAM_TYPE, stream_version=OnyxTextReader.STREAM_VERSION) # create OnyxTextReader and hook YamldataReader up to it stream = OnyxTextReader(yaml_reader, data_type="HmmManager", data_version="0") # read document contents v,hmms = stream.read_indexed_collection(read_hmm, (gmm_mgr, log_domain), name="HmmMgr") # finalize Reader and Stream? # construct and return HmmMgr object return HmmMgr(hmms)
def read_model_dict(file, yaml_reader=None): # Create YamldataReader if needed, hook up and do version checking if yaml_reader is None: yaml_reader = YamldataReader( file, stream_type=OnyxTextReader.STREAM_TYPE, stream_version=OnyxTextReader.STREAM_VERSION ) # create OnyxTextReader and hook YamldataReader up to it stream = OnyxTextReader(yaml_reader, data_type="ModelDict", data_version="0") # read document contents v, num_models = stream.read_scalar("num_models", int) # Note that keys are always strings here v, keys = stream.read_list("model_keys", count=num_models) v, model_indices = stream.read_list("model_indices", int, count=num_models) return dict(izip(keys, model_indices))
def read_model_dict(file, yaml_reader=None): # Create YamldataReader if needed, hook up and do version checking if yaml_reader is None: yaml_reader = YamldataReader( file, stream_type=OnyxTextReader.STREAM_TYPE, stream_version=OnyxTextReader.STREAM_VERSION) # create OnyxTextReader and hook YamldataReader up to it stream = OnyxTextReader(yaml_reader, data_type="ModelDict", data_version="0") # read document contents v, num_models = stream.read_scalar("num_models", int) # Note that keys are always strings here v, keys = stream.read_list("model_keys", count=num_models) v, model_indices = stream.read_list("model_indices", int, count=num_models) return dict(izip(keys, model_indices))
def read_gmm_mgr(file, yaml_reader=None): """ >>> dummies = ( DummyModel(2, 0.1), DummyModel(2, 0.2), DummyModel(2, 0.4), DummyModel(2, 0.4) ) >>> gmm_mgr = GmmMgr(dummies) >>> doc = ''' ... --- ... - __onyx_yaml__meta_version : '1' ... __onyx_yaml__stream_type : 'OnyxText' ... __onyx_yaml__stream_version : '0' ... - ... # OnyxText header looks like this: ... - stream_type OnyxText stream_version 0 data_type GmmManager data_version 0 ... # format for GmmManager ... - GmmMgr IndexedCollection Gmm 1 ... - Gmm 0 ... - covariance_type Singleton onyx.am.gaussian.GaussianModelBase.DIAGONAL_COVARIANCE ... - dimension 2 ... - num_components 3 ... - relevances List 3 ... - 0.0 0.0 0.0 ... - weights Array 1 3 ... - +(-0002)0x0000000000000 +(-0001)0x0000000000000 +(-0002)0x0000000000000 ... - Gaussians IndexedCollection SimpleGaussian 3 ... - SimpleGaussian 0 ... - means Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... - vars Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... - SimpleGaussian 1 ... - means Array 1 2 ... - +(+0001)0x0000000000000 +(+0001)0x0000000000000 ... - vars Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... - SimpleGaussian 2 ... - means Array 1 2 ... - +(+0001)0x8000000000000 +(+0001)0x8000000000000 ... - vars Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... ... ... ''' >>> f = cStringIO.StringIO(doc) # If this works we have done lots of checking, but it would be nice to be able to print something out >>> gmm_mgr0 = read_gmm_mgr(f) # write-read-write round-trip test >>> f_out0 = cStringIO.StringIO() >>> f_out1 = cStringIO.StringIO() >>> write_gmm_mgr(gmm_mgr0, f_out0) # rewind and read >>> f_out0.seek(0) >>> gmm_mgr1 = read_gmm_mgr(f_out0) >>> gmm_mgr0 == gmm_mgr1 True >>> write_gmm_mgr(gmm_mgr1, f_out1) >>> f_out0.getvalue() == f_out1.getvalue() True """ # create and hook up YamldataReader, do version checking if yaml_reader is None: yaml_reader = YamldataReader( file, stream_type=OnyxTextReader.STREAM_TYPE, stream_version=OnyxTextReader.STREAM_VERSION ) # create OnyxTextReader and hook YamldataReader up to it stream = OnyxTextReader(yaml_reader, data_type="GmmManager", data_version="0") # read document contents v, gmms = stream.read_indexed_collection(read_gmm, None, name="GmmMgr") # finalize Reader and Stream? # construct and return GmmMgr object return GmmMgr(gmms)
def read_gmm_mgr(file, yaml_reader=None): """ >>> dummies = ( DummyModel(2, 0.1), DummyModel(2, 0.2), DummyModel(2, 0.4), DummyModel(2, 0.4) ) >>> gmm_mgr = GmmMgr(dummies) >>> doc = ''' ... --- ... - __onyx_yaml__meta_version : '1' ... __onyx_yaml__stream_type : 'OnyxText' ... __onyx_yaml__stream_version : '0' ... - ... # OnyxText header looks like this: ... - stream_type OnyxText stream_version 0 data_type GmmManager data_version 0 ... # format for GmmManager ... - GmmMgr IndexedCollection Gmm 1 ... - Gmm 0 ... - covariance_type Singleton onyx.am.gaussian.GaussianModelBase.DIAGONAL_COVARIANCE ... - dimension 2 ... - num_components 3 ... - relevances List 3 ... - 0.0 0.0 0.0 ... - weights Array 1 3 ... - +(-0002)0x0000000000000 +(-0001)0x0000000000000 +(-0002)0x0000000000000 ... - Gaussians IndexedCollection SimpleGaussian 3 ... - SimpleGaussian 0 ... - means Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... - vars Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... - SimpleGaussian 1 ... - means Array 1 2 ... - +(+0001)0x0000000000000 +(+0001)0x0000000000000 ... - vars Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... - SimpleGaussian 2 ... - means Array 1 2 ... - +(+0001)0x8000000000000 +(+0001)0x8000000000000 ... - vars Array 1 2 ... - +(+0000)0x0000000000000 +(+0000)0x0000000000000 ... ... ... ''' >>> f = cStringIO.StringIO(doc) # If this works we have done lots of checking, but it would be nice to be able to print something out >>> gmm_mgr0 = read_gmm_mgr(f) # write-read-write round-trip test >>> f_out0 = cStringIO.StringIO() >>> f_out1 = cStringIO.StringIO() >>> write_gmm_mgr(gmm_mgr0, f_out0) # rewind and read >>> f_out0.seek(0) >>> gmm_mgr1 = read_gmm_mgr(f_out0) >>> gmm_mgr0 == gmm_mgr1 True >>> write_gmm_mgr(gmm_mgr1, f_out1) >>> f_out0.getvalue() == f_out1.getvalue() True """ # create and hook up YamldataReader, do version checking if yaml_reader is None: yaml_reader = YamldataReader( file, stream_type=OnyxTextReader.STREAM_TYPE, stream_version=OnyxTextReader.STREAM_VERSION) # create OnyxTextReader and hook YamldataReader up to it stream = OnyxTextReader(yaml_reader, data_type="GmmManager", data_version="0") # read document contents v, gmms = stream.read_indexed_collection(read_gmm, None, name="GmmMgr") # finalize Reader and Stream? # construct and return GmmMgr object return GmmMgr(gmms)