def logprior(self,prior): model=2 logprior = 0. #failure frequencies logprior += chiamante_statfunc.dbeta(self.eta_arr,prior['arrfail_alpha'],prior['arrfail_beta'],True) #centroids/sigma j = self.p[0].argmax() if j==0: sigma_mu = prior['sigma_mu'][0:2,0:2] else: sigma_mu = prior['sigma_mu'][4:,4:] logprior += chiamante_statfunc.diwishart(self.sigma[j],prior['v0'][j],prior['s0'][j],True) + chiamante_statfunc.dmvnorm(self.mu[j],prior['mu0'][j],sigma_mu,True) return logprior
def chiamante_logprior(prior,parameters,popidx,hwe_prior): logprior = 0. model = prior['model'] if hwe_prior: for idx,ii in enumerate(popidx): if prior['hwe_var']>0.: logprior += chiamante_statfunc.ddirichlet(parameters['p'][idx],parameters['alpha'][idx],True) + chiamante_statfunc.dbeta(parameters['raf'][idx],prior['raf_alpha'][idx],prior['raf_beta'][idx],True) else: logprior += chiamante_statfunc.dbeta(parameters['raf'][idx],prior['raf_alpha'][idx],prior['raf_beta'][idx],True) else: logprior += chiamante_statfunc.ddirichlet(parameters['p'],np.array([1.01,1.01,1.01]),True) #failure frequencies logprior += chiamante_statfunc.dbeta(parameters['eta_seq'],prior['seqfail_alpha'],prior['seqfail_beta'],True) logprior += chiamante_statfunc.dbeta(parameters['eta_array'],prior['arrfail_alpha'],prior['arrfail_beta'],True) #centroids/sigma for j in range(3): if model==1: #sigma_mu = sigma/kappa0 logprior += chiamante_statfunc.diwishart(parameters['sigma'][j],prior['v0'][j],prior['s0'][j],True) + chiamante_statfunc.dmvnorm(parameters['mu'][j],prior['mu0'][j],parameters['sigma'][j]/prior['kappa0'][j],True) else: if model==2: #sigma_mu independent of sigma logprior += chiamante_statfunc.diwishart(parameters['sigma'][j],prior['v0'][j],prior['s0'][j],True) + chiamante_statfunc.dmvnorm(parameters['mu'][j],prior['mu0'][j],prior['sigma_mu'][j],True) if model==3: # mu prior is 6 dimensional MVN logprior += chiamante_statfunc.diwishart(parameters['sigma'][j],prior['v0'][j],prior['s0'][j],True) if model==3: logprior += chiamante_statfunc.dmvnorm(np.hstack(parameters['mu']),np.hstack(prior['mu0']),prior['sigma_mu'],True) return logprior