예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
 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
예제 #4
0
 def Y_prob (self,Y_c,LgY,YNoise):
     Y = 10**(LgY)
     ans = gaussian(Y,Y_c,YNoise)
     return ans