# Path: distributions/dbg/special.py

# 
# Path: distributions/dbg/random.py
# LOG = logging.getLogger(__name__)
#     S = inner(inner(z, inv(sigma)), z)
#     X = multivariate_normal(mean=numpy.zeros(d), cov=Lambda, size=nu)
#     S = numpy.dot(X.T, X)
#     T = numpy.zeros((d, d))
#     D, = mu0.shape
#     Z = 0.
# def seed(x):
# def sample_discrete_log(scores):
# def sample_bernoulli(prob):
# def sample_discrete(probs, total=None):
# def sample_normal(mu, sigmasq):
# def sample_chi2(nu):
# def sample_student_t(dof, mu, Sigma):
# def score_student_t(x, nu, mu, sigma):
# def sample_wishart_naive(nu, Lambda):
# def sample_wishart(nu, Lambda):
# def sample_wishart_v2(nu, Lambda):
# def sample_inverse_wishart(nu, S):
# def sample_normal_inverse_wishart(mu0, lambda0, psi0, nu0):
# def sample_partition_from_counts(items, counts):
# def sample_stick(gamma, tol=1e-3):
# def sample_negative_binomial(p, r):


from distributions.dbg.special import log, factorial, gammaln
from distributions.dbg.random import sample_gamma, sample_poisson
from distributions.mixins import SharedMixin, GroupIoMixin, SharedIoMixin
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



NAME = 'GammaPoisson'
EXAMPLES = [
    {
        'shared': {'alpha': 1., 'inv_beta': 1.},
        'values': [0, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 2, 3],
    }
]
Value = int


class Shared(SharedMixin, SharedIoMixin):
    def __init__(self):
        self.alpha = None
        self.inv_beta = None

    def plus_group(self, group):

# Path: distributions/dbg/special.py

# 
# Path: distributions/dbg/random.py
# LOG = logging.getLogger(__name__)
#     S = inner(inner(z, inv(sigma)), z)
#     X = multivariate_normal(mean=numpy.zeros(d), cov=Lambda, size=nu)
#     S = numpy.dot(X.T, X)
#     T = numpy.zeros((d, d))
#     D, = mu0.shape
#     Z = 0.
# def seed(x):
# def sample_discrete_log(scores):
# def sample_bernoulli(prob):
# def sample_discrete(probs, total=None):
# def sample_normal(mu, sigmasq):
# def sample_chi2(nu):
# def sample_student_t(dof, mu, Sigma):
# def score_student_t(x, nu, mu, sigma):
# def sample_wishart_naive(nu, Lambda):
# def sample_wishart(nu, Lambda):
# def sample_wishart_v2(nu, Lambda):
# def sample_inverse_wishart(nu, S):
# def sample_normal_inverse_wishart(mu0, lambda0, psi0, nu0):
# def sample_partition_from_counts(items, counts):
# def sample_stick(gamma, tol=1e-3):
# def sample_negative_binomial(p, r):


# Path: distributions/dbg/models/gp.py
from distributions.dbg.special import log, factorial, gammaln
from distributions.dbg.random import sample_gamma, sample_poisson
from distributions.mixins import SharedMixin, GroupIoMixin, SharedIoMixin

# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



NAME = 'GammaPoisson'
EXAMPLES = [
    {
        'shared': {'alpha': 1., 'inv_beta': 1.},
        'values': [0, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 2, 3],
    }
]
Value = int


class Shared(SharedMixin, SharedIoMixin):
    def __init__(self):
        self.alpha = None
        self.inv_beta = None

    def plus_group(self, group):

        post = self.__class__()