# Path: pyglm/components/component.py
# class Component(object):
#     """
#     """
#     
#     def __init__(self, model):
#         """ Initialize the component with the parameters from the given model.
#         """
#         pass
#     
#     def get_variables(self):
#         """ Get a dictionary of (name : Theano variable) items for all the
#             symbolic variables associated with this component.
#         """
#         return {}
#     
#     def get_state(self):
#         return {}
# 
#     def preprocess_data(self, data):
#         """ Set the shared memory variables that depend on the data
#         """
#         pass
# 
#     def set_data(self, data):
#         """ Set the shared memory variables that depend on the data
#         """
#         pass
#     
#     def set_hyperparameters(self, model):
#         """ Set hyperparameters of the model
#         """
#         pass
# 
#     def sample(self, acc):
#         """
#         return a sample of the variables
#                 """
#         return {}


import numpy as np
import theano
import theano.tensor as T
    import matplotlib
    import matplotlib.pyplot as plt
    import matplotlib.animation as manimation
from pyglm.components.component import Component
        from theano.sandbox.linalg.ops import Det
    from hips.inference.hmc import hmc


def create_prior(model, **kwargs):
    typ = model['type'].lower()
    if typ == 'normal' or \
       typ == 'gaussian':
       return Gaussian(model, **kwargs)
    elif typ == 'categorical':
       return Categorical(model, **kwargs)
    elif typ == 'jointcategorical' or \
         typ == 'joint_categorical':
       return JointCategorical(model, **kwargs)
    elif typ == 'spherical_gaussian':
        return SphericalGaussian(model, **kwargs)
    elif typ == 'group_lasso' or \
         typ == 'grouplasso':
        return GroupLasso(model, **kwargs)
    elif typ == 'dpp':
        return DeterminenalPointProcess(model, **kwargs)
    elif typ == 'dirichlet':
        return Dirichlet(model)
    else:
        raise Exception("Unrecognized prior type: %s" % typ)




# Path: pyglm/components/component.py
# class Component(object):
#     """
#     """
#     
#     def __init__(self, model):
#         """ Initialize the component with the parameters from the given model.
#         """
#         pass
#     
#     def get_variables(self):
#         """ Get a dictionary of (name : Theano variable) items for all the
#             symbolic variables associated with this component.
#         """
#         return {}
#     
#     def get_state(self):
#         return {}
# 
#     def preprocess_data(self, data):
#         """ Set the shared memory variables that depend on the data
#         """
#         pass
# 
#     def set_data(self, data):
#         """ Set the shared memory variables that depend on the data
#         """
#         pass
#     
#     def set_hyperparameters(self, model):
#         """ Set hyperparameters of the model
#         """
#         pass
# 
#     def sample(self, acc):
#         """
#         return a sample of the variables
#                 """
#         return {}


# Path: pyglm/components/priors.py
import numpy as np
import theano
import theano.tensor as T
    import matplotlib
    import matplotlib.pyplot as plt
    import matplotlib.animation as manimation
from pyglm.components.component import Component
        from theano.sandbox.linalg.ops import Det
    from hips.inference.hmc import hmc



def create_prior(model, **kwargs):
    typ = model['type'].lower()
    if typ == 'normal' or \
       typ == 'gaussian':
       return Gaussian(model, **kwargs)
    elif typ == 'categorical':
       return Categorical(model, **kwargs)
    elif typ == 'jointcategorical' or \
         typ == 'joint_categorical':
       return JointCategorical(model, **kwargs)
    elif typ == 'spherical_gaussian':
        return SphericalGaussian(model, **kwargs)
    elif typ == 'group_lasso' or \
         typ == 'grouplasso':
        return GroupLasso(model, **kwargs)
    elif typ == 'dpp':
        return DeterminenalPointProcess(model, **kwargs)
    elif typ == 'dirichlet':
        return Dirichlet(model)
    else:
        raise Exception("Unrecognized prior type: %s" % typ)




class Categorical(Component):