def Prob_per_cluster(self,int_HMF,cluster_props,dn_dzdm_int): c_z, c_zerr, c_m, c_merr = cluster_props if (c_zerr > 0): z_arr = np.arange(-3.*c_zerr,(3.+0.1)*c_zerr,c_zerr) + c_z dn_dzdm = dn_dzdm_int(z_arr,np.log10(c_m)) N_per = np.trapz(dn_dzdm*gaussian(z_arr,c_z,c_zerr),dx=np.diff(z_arr)) ans = N_per else: dn_dzdm = dn_dzdm_int(c_z,np.log10(c_m)) ans = dn_dzdm #print dn_dzdm #kmin=1e-4 #kmax=5. #knum=200 #int_kh, int_pk = int_HMF._pk(c_z,kmin,kmax,knum) #delts = int_HMF.zarr*0.0 + 200. #print c_m #dn_dlnm = dn_dlogM(np.array([c_m,c_m*1.01]),c_z,int_HMF.cc.rhoc0om,200,int_kh,int_pk,'comoving') #print dn_dlogM(np.array([c_m,c_m*1.01]),int_HMF.zarr,int_HMF.cc.rhoc0om,delts,int_HMF.kh,int_HMF.pk,'comoving') #print dn_dlnm #print int_HMF.dn_dM(np.outer(np.array([1e14*1.01,1e14*1.05]),np.ones(len(int_HMF.zarr))),200.) #print int_HMF.M200[0:2,0] #m1 = int_HMF.M200[0,0] #m2 = int_HMF.M200[1,0] #print m1,m2,c_m #print int_HMF.dn_dM(np.outer(np.array([m1*1.01,c_m*1.01]),np.ones(len(int_HMF.zarr))),200.) #print int_HMF.dn_dM(int_HMF.M200[0:2,:],200.) #print int_HMF.dn_dM(np.outer(np.array([c_m*1.01,1e14*1.01]),np.ones(len(int_HMF.zarr))),200.) #blahs = dn_dlnm/np.array([c_m,c_m]) #print blahs return ans
def lnprior(self,theta,parlist,priorval,priorlist): param_vals = alter_fparams(self.fparams,parlist,theta) prioravg = priorval[0,:] priorwth = priorval[1,:] lnp = 0. for k,prioravg in enumerate(prioravg): lnp += np.log(gaussian(param_vals[priorlist[k]],prioravg,priorwth[k],noNorm=True)) try: if ((param_vals['scat'] < 0) or (param_vals['tau'] < 0)) : lnp += -np.inf except: pass if (self.simpars): pars = ['omch2','ombh2','H0','As','ns'] mins = [0.001,0.005,40.,7.389056098930651e-10,0.8] maxs = [0.99,0.1,100.,5.459815003314424e-09,1.2] else: pars = ['omch2','ombh2','H0','As','ns','massbias','yslope','scat'] mins = [0.001,0.005,40.,7.389056098930651e-10,0.8,0.2,-0.6,0.001 ] maxs = [0.99,0.1,100.,5.459815003314424e-09,1.2,1.4,0.6,0.8 ] for k,par in enumerate(pars): if param_vals[par]<mins[k] or param_vals[par]>maxs[k]: lnp += -np.inf return lnp
def Prob_per_cluster(self, int_HMF, cluster_props, dn_dzdm_int, param_vals): c_z, c_zerr, c_y, c_yerr = cluster_props if (c_zerr > 0): z_arr = np.arange(-3. * c_zerr, (3. + 0.1) * c_zerr, c_zerr) + c_z Pfunc_ind, M200 = self.Pfunc_per_zarr(int_HMF.M.copy(), z_arr, c_y, c_yerr, int_HMF, param_vals) dn_dzdm = dn_dzdm_int(z_arr, np.log10(int_HMF.M.copy())) N_z_ind = np.trapz(dn_dzdm * Pfunc_ind, dx=np.diff(M200, axis=0), axis=0) N_per = np.trapz(N_z_ind * gaussian(z_arr, c_z, c_zerr), dx=np.diff(z_arr)) ans = N_per else: Pfunc_ind = self.Pfunc_per(int_HMF.M.copy(), c_z, c_y, c_yerr, param_vals) #print "PFunc",Pfunc_ind M200 = int_HMF.cc.Mass_con_del_2_del_mean200( int_HMF.M.copy(), 500, c_z) dn_dzdm = dn_dzdm_int(c_z, np.log10(int_HMF.M.copy()))[:, 0] #print "dndm", dn_dzdm,dn_dzdm_int(c_z,np.log10(int_HMF.M.copy())) #print "M200", M200 N_z_ind = np.trapz(dn_dzdm * Pfunc_ind, dx=np.diff(M200, axis=0), axis=0) ans = N_z_ind return ans
def Y_prob (self,Y_c,LgY,YNoise): Y = 10**(LgY) ans = gaussian(Y,Y_c,YNoise) return ans