def updateTau(self): #perform max_iter Gibbs updates iter = 0 self.lp = self.logPosterior(self.gamma_store[0,:],self.tau,self.eta_store[0,:]) self.lp_star = self.lp self.tau_star = np.copy(self.tau) self.tau_store[iter,]=np.copy(self.tau) while (iter < self.max_iter): nchange = sampletau.sample_tau(self.tau, self.gamma_store[iter,:], self.eta_store[iter,:], self.variants) #nchange = self.sampleTau(self.gamma_star,self.eta_star) self.ll = self.logLikelihood(self.gamma_store[iter,:],self.tau,self.eta_store[iter,:]) self.lp = self.logPosterior(self.gamma_store[iter,:],self.tau,self.eta_store[iter,:]) if (self.lp > self.lp_star): self.tau_star = np.copy(self.tau) self.lp_star = self.lp self.tau_store[iter,]=np.copy(self.tau) self.ll_store[iter]=self.ll if (iter % 10 == 0): logging.info('Gibbs Iter %d, no. changed = %d, nll = %f'%(iter,nchange,self.lp)) sys.stdout.flush() iter = iter + 1 self.updateTauIndices()
def update(self): #perform max_iter Gibbs updates iter = 0 self.ll = self.logLikelihood(self.gamma,self.tau,self.eta) self.lp = self.logPosterior(self.gamma,self.tau,self.eta) self.storeStarState(iter) while (iter < self.max_iter): self.sampleMu(self.tau,self.gamma,self.eta) self.sampleGamma() #nchange = self.sampleTau() nchange = sampletau.sample_tau(self.tau, self.gamma, self.eta, self.variants) self.sampleEta() self.ll = self.logLikelihood(self.gamma,self.tau,self.eta) self.lp = self.logPosterior(self.gamma,self.tau,self.eta) self.ll_store[iter] = self.ll if(self.lp > self.lp_star): self.storeStarState(iter) self.mu_store[iter,]=np.copy(self.mu) self.tau_store[iter,]=np.copy(self.tau) self.E_store[iter,]=np.copy(self.E) self.eta_store[iter,] = np.copy(self.eta) self.gamma_store[iter,] = np.copy(self.gamma) if (iter % 10 == 0): logging.info('Gibbs Iter %d, no. changed = %d, nlp = %f'%(iter,nchange,self.lp)) iter = iter + 1 self.updateTauIndices()
def sampleTauC(self, tau, variants, eta, gamma=None, epsilon=None): if gamma is None: gamma = self.gamma if epsilon is None: epsilon = self.epsilon V = tau.shape[0] #rework gamma matrix gammaR = self.maskGamma(gamma, eta) nchange = sampletau.sample_tau(tau, gammaR, epsilon, variants) return nchange
def sampleTauC(self,tau,variants,eta,gamma=None,epsilon=None): if gamma is None: gamma = self.gamma if epsilon is None: epsilon = self.epsilon V = tau.shape[0] #rework gamma matrix gammaR = self.maskGamma(gamma,eta) nchange = sampletau.sample_tau(tau, gammaR, epsilon, variants) return nchange