def dpmm(gfc, alpha, g0, g1, dof, prior_precision, gf1, sub, burnin, spatial_coords=None, nis=1000, co_clust=False, verbose=False): """ Apply the dpmm analysis to the data: python version """ from nipy.neurospin.clustering.imm import MixedIMM dim = gfc.shape[1] migmm = MixedIMM(alpha, dim) migmm.set_priors(gfc) migmm.set_constant_densities(null_dens=g0, prior_dens=g1) migmm._prior_dof = dof migmm._prior_scale = np.diag(prior_precision[0]/dof) migmm._inv_prior_scale_ = [np.diag(dof*1./(prior_precision[0]))] migmm.sample(gfc, null_class_proba=1-gf1, niter=burnin, init=False, kfold=sub) if verbose: print 'number of components: ', migmm.k #sampling if co_clust: like, pproba, co_clust = migmm.sample( gfc, null_class_proba=1-gf1, niter=nis, sampling_points=spatial_coords, kfold=sub, co_clustering=co_clust) if verbose: print 'number of components: ', migmm.k return like, 1-pproba, co_clust else: like, pproba = migmm.sample( gfc, null_class_proba=1-gf1, niter=nis, sampling_points=spatial_coords, kfold=sub, co_clustering=co_clust) if verbose: print 'number of components: ', migmm.k return like, 1-pproba