def r200_match(i, index, mock, obs): dists = astro.ang_sep((mock.ra[i], mock.dec[i]), (obs.ra[index], obs.dec[index])) * 60.0 new_index = np.where((dists - (1.0 * mock.r200[i])) <= 0.0)[0] if len(new_index) > 0: return index[new_index], dists[new_index] else: return [False], [False]
def r200_match(i, index, mock, obs): dists = astro.ang_sep((mock.ra[index], mock.dec[index]), (obs.ra[i], obs.dec[i])) * 60.0 new_index = np.where((dists - (1.0 * mock.r200[index])) <= 0.0)[0] if len(new_index) > 0: dist_data = 1.0 - (dists[new_index] / mock.r200[index[new_index]]) ** 2 return index[new_index], comp.scale(dist_data, 0.0, np.sum(dist_data)) else: return [], []
def get_size(self, centre=None): if centre is None: centre = self.m_centre d_ang = np.mean( astro.ang_sep((self.mem.ra, self.mem.dec), (centre[0], centre[1]))) self.size_arcm = d_ang * 60.0 self.area_arcm = np.pi * self.size_arcm**2 self.size_mpc = np.mean(self.mem.r) self.area_mpc = np.pi * self.size_mpc**2
def get_size(self, centre = None): if centre is None: centre = self.m_centre d_ang = np.mean(astro.ang_sep((self.mem.ra, self.mem.dec), (centre[0], centre[1]))) self.size_arcm = d_ang * 60.0 self.area_arcm = np.pi * self.size_arcm ** 2 self.size_mpc = np.mean(self.mem.r) self.area_mpc = np.pi * self.size_mpc ** 2
# read cluster file data = np.genfromtxt(sys.argv[1], unpack = True, dtype = 'float') cluster = np.genfromtxt(sys.argv[2], unpack = True, dtype = 'float') cluster_num = float(sys.argv[3]) sncl = data[8, data[0] == cluster_num] index = cluster[0] == cluster_num # cluster properties racl = np.median(cluster[4, index]) decl = np.median(cluster[5, index]) zcl = np.median(cluster[6, index]) dists = astro.ang_sep([cluster[4, index], cluster[5, index]], [racl, decl]) * 60.0 area = np.pi * np.mean(dists) ** 2 # arcmin^2 # Mpc per arcmin scale da = cosmo2.d_angdi(zcl, omega_m, omega_l) * cosmo2.d_H(h0) mpca = astro.deg2rad(da / 60.0) # coordinates wrt cluster center gx = 60. * (racl - cluster[4, index]) * np.cos(astro.deg2rad(cluster[5, index])) gy = 60. * (cluster[5, index] - decl) # arcmin # adaptive kernel density map gadk = ss.gaussian_kde(np.vstack([gx * mpca, gy * mpca]), bw_method = 'silverman') xedges = np.linspace(-0.6, 0.6, 100) yedges = np.linspace(-1.0, 1.0, 100)
for i in range(cluster.size): c_bin_count[c_rich_bin_index[i], c_z_bin_index[i]] += 1 for i in range(mock.size): m_bin_count[m_rich_bin_index[i], m_z_bin_index[i]] += 1 if m_match_flag[i] == -1: #Find clusters that match primary matching conditions. index1 = np.where((c_match_flag == -1) & (np.fabs(mock.z[i] - cluster.z) <= (z_factor * opts.delta_z * (1 + mock.z[i]))) & (cluster.ra >= mock.minra[i]) & (cluster.ra <= mock.maxra[i]) & (cluster.dec >= mock.mindec[i]) & (cluster.dec <= mock.maxdec[i]))[0] if len(index1) > 0: #Calculate the projected distance to halo centre for these clusters. dists = [] for j in index1: dist = astro.ang_sep((mock.ra[i], mock.dec[i]), (cluster.ra[j],cluster.dec[j])) * 60.0 dists.extend([dist]) dists = np.array(dists) #Find clusters within r200. index2 = np.where(dists <= mock.r200[i])[0] if len(index2) > 0: dists = dists[index2] index1 = index1[index2] #Check if any of these have the same N_gal value. index3 = np.where(cluster.rich[index1] == cluster.rich[index1[0]])[0] if len(index3) > 0: dists = dists[index3] index1 = index1[index3] #Choose the cluster closest to the halo. index4 = np.argmin(dists) index1 = index1[index4]