Esempio n. 1
0
    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',
Esempio n. 3
0
    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)
Esempio n. 4
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)
Esempio n. 5
0
                        '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 = {}