from cryoem.model.isomixture cimport IsoMixture
from cryoem.model.prior cimport IsoMixturePrior


cdef class IsoMixtureCloudSampler:
    cdef:
        int _num_components, _num_data_points, _assignment_sums_sum
        int _dimension
        bint _fix_weights, _fix_std
        long[:] _assignments, _assignment_sums
        double[:] _distances
        double[:, :] _data, _sampled_means, _soft_assignments
        object _prior
    cpdef init_memory(self, int K)
    cpdef init_memory_check(self, IsoMixture mixture)
    cpdef fix_weights(self, bint value)
    cpdef fix_std(self, bint value)
    cpdef sample(self, IsoMixture mixture)
    cdef sample_assignments(self, IsoMixture mixture)
    cdef sample_weights(self, IsoMixture mixture)
    cdef sample_means(self, IsoMixture mixture)
    cdef sample_variance(self, IsoMixture mixture)    
