def SIS(theta, zs, zl, s=0.2, sigma_v=1000., w=-1.): c = 300000. # km s^-1 import advanced_calc, math radius = 2 * math.pi / (360. * 60. * 60) * theta einstein_radius = 4 * math.pi * (sigma_v / c)**2. * (advanced_calc.compute( zs, w) - advanced_calc.compute(zl, w)) / advanced_calc.compute(zs, w) kappa = einstein_radius / (2. * radius) decrement = (5. * s - 2) * kappa return kappa, decrement
def angdist_ratio(z): #d_cluster = dict_DCMR['%.2f' % cluster_z + '_' + '%.2f' % w + '_' + '%.2f' % WM] #advanced_calc.compute(clusterz,w) key = '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM if key in dict_DCMR: DS = dict_DCMR[key] else: DS = advanced_calc.compute(z, w, WM=WM) #dict_DCMR[] dict_DCMR[key] = DS ratio = (DS - d_cluster) / DS if ratio < 0: ratio = 0 return ratio / norm * 0.1
omega_lambda = 0.7 import scipy #for w in scipy.arange(-2,0,0.5): p, redchi, chisq = fit_mass(zs_f[:], scipy.array(amps_f)[:], scipy.array(ampErrs_f)[:], clusterz, w, omega_m, omega_lambda, dict_DCMR) #x.append(w) #y.append(redchi) print 'finished fitting' print redchi fit_val[str(w)] = redchi d_cluster = advanced_calc.compute(clusterz, w) import scipy ratios = [] zsrat = [] infinite = p[0] * (advanced_calc.compute(10000, w) - d_cluster) / advanced_calc.compute(10000, w) for z in scipy.arange(clusterz, 2.4, 0.02): zsrat.append(z) #ratios.append((p[0] * (advanced_calc.compute(z,w) - d_cluster)/advanced_calc.compute(z,w)) / infinite) DS = dict_DCMR[ '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM] #str(float('%.2f' % z)) + '_' + str(w) + '_' + str(WM)] ratios.append((p[0] * (DS - d_cluster) / DS) / infinite) z = 1.0
#cluster_z = 0.55 zs = scipy.array(zs) amps_t = scipy.array(amps)[zs > 0] / max ampErrs_t = scipy.array(ampErrs)[zs > 0] / max zs_f = zs[zs > 0] calc_z = zs_f[0] print amps_t, ampErrs_t amps_f = [] ampErrs_f = [] import advanced_calc d_cluster = advanced_calc.compute(cluster_z, -1.) base = (advanced_calc.compute(calc_z, -1.) - d_cluster) / advanced_calc.compute(calc_z, -1.) #for i in range(len(amps_t)): i = 0 corr = (advanced_calc.compute(zs_f[i], -1.) - d_cluster) / advanced_calc.compute(zs_f[i], -1.) / base amps_f.append(amps_t[i] / corr) ampErrs_f.append(ampErrs_t[i] / corr) i = 1 corr = (advanced_calc.compute(zs_f[i], -1.) - d_cluster) / advanced_calc.compute(zs_f[i], -1.) / base ampErrs_f.append( ((ampErrs_t[0] * corr)**2. + (ampErrs_t[i])**2.)**0.5 / amps[i]) amps_f.append(amps_t[i] / corr)
import scipy for w in [-1]: #scipy.arange(-10,10,2): color = 'black' print 'fitting' omega_m = 0.27 omega_lambda = 0.73 p, redchi = fit_mass(zs_f[:], scipy.array(amps_f)[:], scipy.array(ampErrs_f)[:], clusterz, w, omega_m, omega_lambda) print 'finished fitting' fit_val[str(w)] = redchi d_cluster = advanced_calc.compute(clusterz, w) import scipy ratios = [] zsrat = [] for z in scipy.arange(clusterz, 2, 0.01): zsrat.append(z) ratios.append(p[0] * (advanced_calc.compute(z, w) - d_cluster) / advanced_calc.compute(z, w)) print p[0], w print ratios, zsrat pylab.plot(scipy.array(zsrat), scipy.array(ratios), color=color,
def run(C, U, P): import pickle f = open('DA.pickle', 'r') m = pickle.Unpickler(f) dict_DCMR = m.load() import scipy, pylab, math r = scipy.arange(0.8, 1.2, 0.02) masses = dict(zip(r, scipy.zeros(len(r)))) masses_onepoint = dict(zip(r, scipy.zeros(len(r)))) zs = scipy.arange(0.01000, 4.0100, 0.0100) def parse(i, Z, Z_onepoint): import scipy from scipy import stats an = scipy.stats.norm.rvs() * 0.3 true_shear = (angdist_ratio(Z) + an) y = scipy.array([float(x) for x in P[i + 1][:-1].split(' ')[1:-1]]) vec = zip(zs, y) for m in masses.keys(): prob = 0 for v in vec: if v[1] > 0: prob += v[1] * math.exp( -1. * (m * angdist_ratio(v[0]) - true_shear)**2. / 0.3**2.) / (2. * math.pi)**0.5 #print true_shear, angdist_ratio(v[0]), v[1], prob, m #raw_input() #print prob, m masses[m] += math.log(prob) masses_onepoint[m] += math.exp( -1. * (m * angdist_ratio(Z_onepoint) - true_shear)**2. / 0.3**2.) / (2. * math.pi)**0.5 import advanced_calc cluster_z = 0.5 WM = 0.27 w = -1 d_cluster = advanced_calc.compute(cluster_z, w) DS = advanced_calc.compute(0.75, w, WM=WM) #dict_DCMR[] norm = (DS - d_cluster) / DS def angdist_ratio(z): #d_cluster = dict_DCMR['%.2f' % cluster_z + '_' + '%.2f' % w + '_' + '%.2f' % WM] #advanced_calc.compute(clusterz,w) key = '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM if key in dict_DCMR: DS = dict_DCMR[key] else: DS = advanced_calc.compute(z, w, WM=WM) #dict_DCMR[] dict_DCMR[key] = DS ratio = (DS - d_cluster) / DS if ratio < 0: ratio = 0 return ratio / norm * 0.1 CZ = [] UZ = [] fracs = [] vals = [] num = 0 for i in range(40000, 60000): if i % 10: print i cosmos_z = C.field('zp_best')[i] our_z = U.field('BPZ_Z_B')[i] mag = U.field('BPZ_M_0')[i] if mag < 25 and U.field( 'BPZ_ODDS' )[i] > 0.5 and our_z > cluster_z + 0.1 and our_z < 1. and cosmos_z > 0 and cosmos_z < 1.5: # and not (0.18 < cosmos_z < 0.025): # and our_z > 0.5: num += 1 CZ.append(cosmos_z) UZ.append(our_z) frac = parse(i, cosmos_z, our_z) fracs.append(frac) vals.append(angdist_ratio(our_z) / angdist_ratio(cosmos_z)) #print w, str(float(w)), '%.2f' % z + '_' + '%.2f' % w + '_' + '%.2f' % WM import pylab #pylab.hist(vals,bins=40) pylab.scatter(masses_onepoint.keys(), masses.values()) pylab.title(str(num)) pylab.show() pylab.scatter(masses.keys(), masses.values()) pylab.title(str(num)) pylab.show()
''' fit for each cosmology ''' #for w,color in [[-1.,'orange'],[-0.5,'red'],[-1.5,'blue'],[0,'black']]: import scipy for w in [-1]: #scipy.arange(-10,10,2): color = 'black' print 'fitting' omega_m = 0.27 omega_lambda = 0.73 p, redchi = fit_mass(zs_f[:],scipy.array(amps_f)[:],scipy.array(ampErrs_f)[:],clusterz,w,omega_m,omega_lambda) print 'finished fitting' fit_val[str(w)] = redchi d_cluster = advanced_calc.compute(clusterz,w) import scipy ratios = [] zsrat = [] infinite = p[0] * (advanced_calc.compute(10000,w) - d_cluster)/advanced_calc.compute(10000,w) for z in scipy.arange(clusterz,3,0.02): zsrat.append(z) ratios.append((p[0] * (advanced_calc.compute(z,w) - d_cluster)/advanced_calc.compute(z,w)) / infinite) print p[0], w print ratios, zsrat pylab.plot(scipy.array(zsrat), scipy.array(ratios), color=color) #,label=str(w)) pylab.legend()