def setUpClass(cls): cls._tile_radius = angularSeparation(0.0, 0.0, 2.0, 2.0) dir_name = os.path.join(getPackageDir('sims_catUtils'), 'tests') cls._tmpdir = tempfile.mkdtemp(dir=dir_name) cls._temp_gal_db = os.path.join(cls._tmpdir, 'test_galaxies.db') ra_min = -2.25 cls._ra_min = ra_min ra_max = 2.251 cls._d_ra = 0.05 ra_grid = np.arange(ra_min, ra_max, cls._d_ra) dec_grid = np.arange(ra_min, ra_max, cls._d_ra) print('raw grid %d' % len(ra_grid)) ra_dec_mesh = np.meshgrid(ra_grid, dec_grid) ra_grid = ra_dec_mesh[0].flatten() dec_grid = ra_dec_mesh[1].flatten() # add a very small offset so that numerical precision # does not foul things up on the tile boundaries rng = np.random.RandomState(7163) ra_grid += 1.0e-5 * (rng.random_sample(len(ra_grid)) - 0.5) dec_grid += 1.0e-5 * (rng.random_sample(len(dec_grid)) - 0.5) galtag = (100 * np.round(45 + ra_grid / cls._d_ra) + np.round(45 + dec_grid / cls._d_ra)).astype(int) assert len(galtag) == len(np.unique(galtag)) htmid_grid = htm.findHtmid(ra_grid, dec_grid, 21) print('got htmid %d' % len(htmid_grid)) print(htm.levelFromHtmid(htmid_grid.min())) print(htm.levelFromHtmid(htmid_grid.max())) assert htm.levelFromHtmid(htmid_grid.min()) == 21 assert htm.levelFromHtmid(htmid_grid.max()) == 21 gid = np.arange(len(ra_grid), dtype=int) assert len(galtag) == len(np.unique(galtag)) print(ra_grid.max(), ra_grid.min()) with sqlite3.connect(cls._temp_gal_db) as conn: c = conn.cursor() query = '''CREATE TABLE galaxy(htmid int, id int, galid text, ra real, dec real, galtag int, redshift)''' c.execute(query).fetchall() values = ((int(hh), int(ii), str(ii), r, d, int(g), 0.5) for hh, ii, r, d, g in zip(htmid_grid, gid, ra_grid, dec_grid, galtag)) c.executemany('INSERT INTO galaxy VALUES (?,?,?,?,?,?,?)', values)
mgr = multiprocessing.Manager() out_data = mgr.dict() lock = multiprocessing.Lock() n_tot = 0 n_processed = 0 with h5py.File(obs_param_name,'r') as obs_params: for htmid_query in htmid_list: if htmid_query not in htmid_to_obs: continue n_lc_so_far = 0 for name in out_data.keys(): n_lc_so_far += len(out_data[name][0]) print('now simulating ',htmid_query,n_lc_so_far) query_level = htm.levelFromHtmid(htmid_query) trixel_query = htm.trixelFromHtmid(htmid_query) ra_query, dec_query = trixel_query.get_center() radius_query = trixel_query.get_radius() print(ra_query, dec_query, radius_query) obs_query = ObservationMetaData(pointingRA=ra_query, pointingDec=dec_query, boundType='circle', boundLength=radius_query) col_names = ['ra', 'decl', 'umag', 'gmag', 'rmag', 'imag', 'zmag', 'ymag', 'lc_id', 't0', 'var_type', 'ebv', 'parallax',
parser = argparse.ArgumentParser() parser.add_argument('--do_1', default=False, action='store_true') parser.add_argument('--do_2', default=False, action='store_true') parser.add_argument('--do_3', default=False, action='store_true') parser.add_argument('--do_4', default=False, action='store_true') args = parser.parse_args() with open('data/htmid_to_obs_map.pickle', 'rb') as in_file: htmid_map = pickle.load(in_file) tx_dict = htm.getAllTrixels(6) tx_list = [] for htmid in tx_dict: if htm.levelFromHtmid(htmid) == 6: tx_list.append(tx_dict[htmid]) gal_n_ra, gal_n_dec = equatorialFromGalactic(0.0, 90.0) gal_s_ra, gal_s_dec = equatorialFromGalactic(0.0, -90.0) if args.do_1: ######### Region 1 #1) ~600 deg2 along ecliptic plane, say |latitude| < 30 and a 100 deg stretch # in longitude, but with |galactic latitude| > 30 deg # must be fully inside one of these two half spaces to have # |galactic latitude| > 30 gal_n_30_hs = htm.halfSpaceFromRaDec(gal_n_ra, gal_n_dec, 60.0) gal_s_30_hs = htm.halfSpaceFromRaDec(gal_s_ra, gal_s_dec, 60.0)
htmid_to_obs_fname = "data/htmid_to_obs_map.pickle" assert os.path.isfile(htmid_to_obs_fname) with open(htmid_to_obs_fname, 'rb') as in_file: htmid_to_obs = pickle.load(in_file) md5_hasher = hashlib.md5() with open(obs_fname, 'rb') as in_file: for chunk in iter(lambda: in_file.read(4096), b""): md5_hasher.update(chunk) md5_sum = md5_hasher.hexdigest() assert md5_sum == htmid_to_obs['md5_sum'] htmid_of_interest = 9484 htmid_level_of_interest = htm.levelFromHtmid(htmid_of_interest) obs_list = np.array(htmid_to_obs[htmid_of_interest]) obs_dex_list = obs_list-1 print(len(obs_list)) with h5py.File(obs_fname, 'r') as obs_file: shld_be = 1 + np.arange(len(obs_file['obsHistID'].value), dtype=int) np.testing.assert_array_equal(shld_be, obs_file['obsHistID'].value) np.testing.assert_array_equal(obs_file['obsHistID'].value[obs_dex_list], obs_list) obs_subset = {} for field_name in obs_file.keys(): obs_subset[field_name] = obs_file[field_name].value[obs_dex_list] trixel_of_interest = htm.trixelFromHtmid(htmid_of_interest)
'htmid to obsHistID') args = parser.parse_args() if args.obs_params is None: raise RuntimeError("must specify obs_params") if args.out_file is None: raise RuntimeError("must specify out_file") trixel_level = 6 trixel_dict = htm.getAllTrixels(trixel_level) trixel_arr = [] trixel_ra = [] trixel_dec = [] trixel_radius = [] for htmid in trixel_dict: if htm.levelFromHtmid(htmid) == trixel_level: tx = trixel_dict[htmid] trixel_arr.append(tx) ra, dec = tx.get_center() trixel_ra.append(ra) trixel_dec.append(dec) trixel_radius.append(tx.get_radius()) del trixel_dict trixel_arr = np.array(trixel_arr) trixel_ra = np.array(trixel_ra) trixel_dec = np.array(trixel_dec) trixel_radius = np.array(trixel_radius) htmid_to_obs = {}