def create_component_model(column_metadata, column_hypers, suffstats): modeltype = column_metadata['modeltype'] if modeltype == 'normal_inverse_gamma': component_model = CCM.p_ContinuousComponentModel( column_hypers, count=suffstats.get(b'N', 0), sum_x=suffstats.get(b'sum_x', None), sum_x_squared=suffstats.get(b'sum_x_squared', None)) elif modeltype == 'symmetric_dirichlet_discrete': # TODO Can we change the suffstats data structure not to # include the total count in the dictionary of per-item # counts, please? suffstats = copy.copy(suffstats) count = suffstats.pop(b'N', 0) component_model = MCM.p_MultinomialComponentModel(column_hypers, count=count, counts=suffstats) elif modeltype == 'vonmises': component_model = CYCM.p_CyclicComponentModel( column_hypers, count=suffstats.get(b'N', 0), sum_sin_x=suffstats.get(b'sum_sin_x', None), sum_cos_x=suffstats.get(b'sum_cos_x', None)) else: raise ValueError('unknown modeltype: %r' % (modeltype, )) return component_model
def create_component_model(column_metadata, column_hypers, suffstats): modeltype = column_metadata['modeltype'] if modeltype == 'normal_inverse_gamma': component_model = CCM.p_ContinuousComponentModel( column_hypers, count=suffstats.get(b'N', 0), sum_x=suffstats.get(b'sum_x', None), sum_x_squared=suffstats.get(b'sum_x_squared', None)) elif modeltype == 'symmetric_dirichlet_discrete': # TODO Can we change the suffstats data structure not to # include the total count in the dictionary of per-item # counts, please? suffstats = copy.copy(suffstats) count = suffstats.pop(b'N', 0) component_model = MCM.p_MultinomialComponentModel( column_hypers, count=count, counts=suffstats) elif modeltype == 'vonmises': component_model = CYCM.p_CyclicComponentModel( column_hypers, count=suffstats.get(b'N', 0), sum_sin_x=suffstats.get(b'sum_sin_x', None), sum_cos_x=suffstats.get(b'sum_cos_x', None)) else: raise ValueError('unknown modeltype: %r' % (modeltype,)) return component_model
# See the License for the specific language governing permissions and # limitations under the License. # from __future__ import print_function import numpy import crosscat.cython_code.ContinuousComponentModel as CCM import crosscat.cython_code.MultinomialComponentModel as MCM import crosscat.cython_code.State as State c_hypers = dict(r=10, nu=10, s=10, mu=10) ccm = CCM.p_ContinuousComponentModel(c_hypers) print("empty component model") print(ccm) # for element in [numpy.nan, 0, 1, numpy.nan, 2]: print() ccm.insert_element(element) print("inserted %s" % element) print(ccm) m_hypers = dict(dirichlet_alpha=10, K=3) mcm = MCM.p_MultinomialComponentModel(m_hypers) print("empty component model") print(mcm) for element in [numpy.nan, 0, 1, numpy.nan, 2]: print() mcm.insert_element(element) print("inserted %s" % element) print(mcm)
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import numpy import crosscat.cython_code.ContinuousComponentModel as CCM import crosscat.cython_code.MultinomialComponentModel as MCM import crosscat.cython_code.State as State c_hypers = dict(r=10,nu=10,s=10,mu=10) ccm = CCM.p_ContinuousComponentModel(c_hypers) print "empty component model" print ccm # for element in [numpy.nan, 0, 1, numpy.nan, 2]: print ccm.insert_element(element) print "inserted %s" % element print ccm m_hypers = dict(dirichlet_alpha=10,K=3) mcm = MCM.p_MultinomialComponentModel(m_hypers) print "empty component model" print mcm for element in [numpy.nan, 0, 1, numpy.nan, 2]: print mcm.insert_element(element) print "inserted %s" % element print mcm