def test_08e_rotate_map(self): # there and back again for i in range(5): _inmap = hpt.dipole_pdf(16, a=0.5, v=1, y=0, z=0, pdf=False) rot_axis = coord.rand_vec(1) rot_angle = 4 * np.pi * np.random.random(1) - 2 * np.pi _rot_map = hpt.rotate_map(_inmap, rot_axis, rot_angle) # should be different after rotation self.assertTrue(not np.allclose(_inmap, _rot_map)) again_inmap = hpt.rotate_map(_rot_map, rot_axis, -rot_angle) # should be the same again after rotating back self.assertTrue(np.allclose(_inmap, again_inmap, rtol=1e-2)) self.assertTrue(np.abs(np.mean(_inmap - again_inmap)) < 1e-10) self.assertTrue(np.std(_inmap - again_inmap) < 1e-3)
def rotate_to_top(cmb_map, lon, lat): og_vec = hp.pixelfunc.ang2vec(lon, lat, lonlat=True) z_vec = np.array([0, 0, 1]) rot_vec = np.cross(z_vec, og_vec) rot_ang = np.arccos( np.dot(og_vec, z_vec) / (np.linalg.norm(og_vec) * np.linalg.norm(z_vec))) cmb_map_2 = hpt.rotate_map(cmb_map, rot_vec, rot_ang) return cmb_map_2
def test_08a_rotate_map(self): # size(rot_axis) = 1 and size(rot_angle) = 1 nside = 64 npix = hpt.nside2npix(nside) for i in range(10): ipix = np.random.randint(npix) _inmap = np.zeros(npix) _inmap[ipix] = 1 rot_axis = np.squeeze( coord.rand_vec(1)) if i < 5 else coord.rand_vec(1) rot_angle = 4 * np.pi * np.random.random() - 2 * np.pi _rot_map = hpt.rotate_map(_inmap, rot_axis, rot_angle) v_hpt = hpt.pix2vec(nside, np.argmax(_rot_map)) # compare with well tested coord rotate function v_coord = coord.rotate(hpt.pix2vec(nside, ipix), rot_axis, rot_angle) self.assertTrue( coord.angle(v_hpt, v_coord) < hpt.max_pixrad(nside))
def test_08d_rotate_map(self): # size(rot_axis) = n and size(rot_angle) = 1 nside = 64 npix = hpt.nside2npix(nside) for i in range(10): ipix = np.random.randint(npix) _inmap = np.zeros(npix) _inmap[ipix] = 1 rot_axis = coord.rand_vec(5) rot_angle = 4 * np.pi * np.random.random(1) - 2 * np.pi _rot_map = hpt.rotate_map(_inmap, rot_axis, rot_angle) # compare with well tested coord rotate function for j in range(5): v_hpt = hpt.pix2vec(nside, np.argmax(_rot_map[j])) v_coord = coord.rotate(hpt.pix2vec(nside, ipix), rot_axis[:, j], rot_angle) self.assertTrue( coord.angle(v_hpt, v_coord) < hpt.max_pixrad(nside))
cs_lon = 207.8 cs_lat = -56.3 cs_vec = hp.pixelfunc.ang2vec(cs_lon, cs_lat, lonlat=True) vec_lon = 207.8 vec_lat = cs_lat + 90 vec = hp.pixelfunc.ang2vec(vec_lon, vec_lat, lonlat=True) no_dir = 12 rot_ang = np.pi / no_dir ang_rad = np.linspace((1 / 360) * 2 * np.pi, np.pi / 2, 90) no_circles = len(ang_rad) x_corr = np.zeros((no_dir, no_circles), dtype=complex) start = time.time() cmb_map = rotate_to_top(cmb_map_og * mask_ring, vec_lon, vec_lat) for i in range(no_dir): for j in range(len(ang_rad)): rad_lag = 0 strip_finder(cmb_map, ang_rad[j], NSIDE) circle_a = load_file('strip_a', bins) circle_b = load_file('strip_b', bins) x_corr[i, j] = match_circle_s(circle_a, circle_b, rad_lag, bins, 720) np.savetxt('/opt/local/l4astro/rbbg94/data/cs_dir_' + str(i) + '.csv', x_corr[i], delimiter=',') print time.time() - start cmb_map = hpt.rotate_map(cmb_map, cs_vec, rot_ang)