コード例 #1
0
    weights = np.array([3.0, 3.0, .3, .3, 0.3, 0.3, 3., 3., 0., 3.])
    if filtername2 is None:
        # Need to scale weights up so filter balancing still works properly.
        weights = np.array([6.0, 0.6, 0.6, 3., 3., 0., 3.])
    # XXX-
    # This is where we could add a look-ahead basis function to include m5_diff in the future.
    # Actually, having a near-future m5 would also help prevent switching to u or g right at twilight?
    # Maybe just need a "filter future" basis function?
    if filtername2 is None:
        survey_name = 'blob, %s' % filtername
    else:
        survey_name = 'blob, %s%s' % (filtername, filtername2)
    surveys.append(
        fs.Blob_survey(bfs,
                       weights,
                       filtername=filtername,
                       filter2=filtername2,
                       survey_note=survey_name))

# Set up the greedy surveys for filling time when can't take pairs.
filters = ['u', 'g', 'r', 'i', 'z', 'y']
greedy_surveys = []
for filtername in filters:
    bfs = []
    bfs.append(fs.M5_diff_basis_function(filtername=filtername, nside=nside))
    bfs.append(
        Target_map_modulo_basis_function(
            filtername=filtername,
            mod_year=mod_year,
            offset=0,
            target_map=even_year_target[filtername],
コード例 #2
0
ファイル: blob_same_zmask.py プロジェクト: yoachim/18_scratch
def generate_slair_scheduler():
    nside = fs.set_default_nside(nside=32)
    # get rid of silly northern strip.
    target_map = fs.standard_goals(nside=nside)
    norm_factor = fs.calc_norm_factor(target_map)
    # List to hold all the surveys (for easy plotting later)
    surveys = []

    # Set up observations to be taken in blocks
    filter1s = ['u', 'g', 'r', 'i', 'z', 'y']
    filter2s = [None, 'g', 'r', 'i', None, None]
    pair_surveys = []
    for filtername, filtername2 in zip(filter1s, filter2s):
        bfs = []
        bfs.append(
            fs.M5_diff_basis_function(filtername=filtername, nside=nside))
        if filtername2 is not None:
            bfs.append(
                fs.M5_diff_basis_function(filtername=filtername2, nside=nside))
        bfs.append(
            fs.Target_map_basis_function(filtername=filtername,
                                         target_map=target_map[filtername],
                                         out_of_bounds_val=hp.UNSEEN,
                                         nside=nside,
                                         norm_factor=norm_factor))
        if filtername2 is not None:
            bfs.append(
                fs.Target_map_basis_function(
                    filtername=filtername2,
                    target_map=target_map[filtername2],
                    out_of_bounds_val=hp.UNSEEN,
                    nside=nside,
                    norm_factor=norm_factor))
        bfs.append(
            fs.Slewtime_basis_function(filtername=filtername, nside=nside))
        bfs.append(fs.Strict_filter_basis_function(filtername=filtername))
        bfs.append(
            fs.Zenith_shadow_mask_basis_function(nside=nside,
                                                 shadow_minutes=60.,
                                                 max_alt=76.))
        weights = np.array([3.0, 3.0, .3, .3, 3., 3., 0.])
        if filtername2 is None:
            # Need to scale weights up so filter balancing still works properly.
            weights = np.array([6.0, 0.6, 3., 3., 0.])
        # XXX-
        # This is where we could add a look-ahead basis function to include m5_diff in the future.
        # Actually, having a near-future m5 would also help prevent switching to u or g right at twilight?
        # Maybe just need a "filter future" basis function?
        if filtername2 is None:
            survey_name = 'blob, %s' % filtername
        else:
            survey_name = 'blob, %s%s' % (filtername, filtername2)
        surveys.append(
            fs.Blob_survey(bfs,
                           weights,
                           filtername=filtername,
                           filter2=filtername2,
                           survey_note=survey_name))
        pair_surveys.append(surveys[-1])

    # Let's set up some standard surveys as well to fill in the gaps. This is my old silly masked version.
    # It would be good to put in Tiago's verion and lift nearly all the masking. That way this can also
    # chase sucker holes.
    filters = ['u', 'g', 'r', 'i', 'z', 'y']
    #filters = ['i', 'z', 'y']
    greedy_surveys = []
    for filtername in filters:
        bfs = []
        bfs.append(
            fs.M5_diff_basis_function(filtername=filtername, nside=nside))
        bfs.append(
            fs.Target_map_basis_function(filtername=filtername,
                                         target_map=target_map[filtername],
                                         out_of_bounds_val=hp.UNSEEN,
                                         nside=nside,
                                         norm_factor=norm_factor))

        bfs.append(
            fs.North_south_patch_basis_function(zenith_min_alt=50.,
                                                nside=nside))
        bfs.append(
            fs.Slewtime_basis_function(filtername=filtername, nside=nside))
        bfs.append(fs.Strict_filter_basis_function(filtername=filtername))
        bfs.append(
            fs.Zenith_shadow_mask_basis_function(nside=nside,
                                                 shadow_minutes=60.,
                                                 max_alt=76.))
        weights = np.array([3.0, 0.3, 1., 3., 3., 0.])
        # Might want to try ignoring DD observations here, so the DD area gets covered normally--DONE
        surveys.append(
            fs.Greedy_survey_fields(bfs,
                                    weights,
                                    block_size=1,
                                    filtername=filtername,
                                    dither=True,
                                    nside=nside,
                                    ignore_obs='DD'))
        greedy_surveys.append(surveys[-1])

    # Set up the DD surveys
    dd_surveys = fs.generate_dd_surveys()
    surveys.extend(dd_surveys)

    survey_list_o_lists = [dd_surveys, pair_surveys, greedy_surveys]

    # put in as list-of-lists so pairs get evaluated first.
    scheduler = fs.Core_scheduler(survey_list_o_lists, nside=nside)
    return scheduler
コード例 #3
0
ファイル: blob_baseline.py プロジェクト: yoachim/SLAIR_runs
def generate_blob_surveys(nside):
    # Define what we want the final visit ratio map to look like

    target_maps, norm_factor = generate_target_maps(nside)

    # set up a cloud map
    cloud_map = target_maps['r'][0] * 0 + 0.7

    # Set up observations to be taken in blocks
    filter1s = ['u', 'g', 'r', 'i', 'z', 'y']
    filter2s = [None, 'g', 'r', 'i', None, None]

    pair_surveys = []
    for filtername, filtername2 in zip(filter1s, filter2s):
        bfs = []
        bfs.append(
            fs.M5_diff_basis_function(filtername=filtername, nside=nside))
        if filtername2 is not None:
            bfs.append(
                fs.M5_diff_basis_function(filtername=filtername2, nside=nside))
        bfs.append(
            fs.Target_map_basis_function(filtername=filtername,
                                         target_map=target_maps[filtername][0],
                                         out_of_bounds_val=hp.UNSEEN,
                                         nside=nside,
                                         norm_factor=norm_factor))
        if filtername2 is not None:
            bfs.append(
                fs.Target_map_basis_function(
                    filtername=filtername2,
                    target_map=target_maps[filtername2][0],
                    out_of_bounds_val=hp.UNSEEN,
                    nside=nside,
                    norm_factor=norm_factor))
        bfs.append(
            fs.Slewtime_basis_function(filtername=filtername, nside=nside))
        bfs.append(fs.Strict_filter_basis_function(filtername=filtername))
        # Masks, give these 0 weight
        bfs.append(
            fs.Zenith_shadow_mask_basis_function(nside=nside,
                                                 shadow_minutes=60.,
                                                 max_alt=76.))
        bfs.append(
            fs.Moon_avoidance_basis_function(nside=nside, moon_distance=40.))
        bfs.append(
            fs.Bulk_cloud_basis_function(max_cloud_map=cloud_map, nside=nside))
        weights = np.array([3.0, 3.0, .3, .3, 3., 3., 0., 0., 0.])
        if filtername2 is None:
            # Need to scale weights up so filter balancing still works properly.
            weights = np.array([6.0, 0.6, 3., 3., 0., 0., 0.])
        if filtername2 is None:
            survey_name = 'blob, %s' % filtername
        else:
            survey_name = 'blob, %s%s' % (filtername, filtername2)
        pair_surveys.append(
            fs.Blob_survey(bfs,
                           weights,
                           filtername=filtername,
                           filter2=filtername2,
                           survey_note=survey_name,
                           ignore_obs='DD',
                           tag_fields=True,
                           tag_map=target_maps[filtername][1],
                           tag_names=target_maps[filtername][2]))

    return pair_surveys
コード例 #4
0
    bfs.append(fs.North_south_patch_basis_function(zenith_min_alt=50., zenith_pad=20.,
                                                   nside=nside))
    bfs.append(fs.Quadrant_basis_function(quadrants=['N', 'E', 'S'], azWidth=90.))
    bfs.append(fs.Moon_avoidance_basis_function(nside=nside, moon_distance=40.))
    bfs.append(fs.Bulk_cloud_basis_function(max_cloud_map=cloud_map, nside=nside))
    weights = np.array([0., 0.3, 0.3, 3., 1., 1., 0., 0., 0., 0., 0.])
    if filtername2 is None:
        # Need to scale weights up so filter balancing still works properly.
        weights = np.array([0., 0.6, 3., 1., 1., 0., 0., 0., 0., 0.])

    if filtername2 is None:
        survey_name = 'blob, %s' % filtername
    else:
        survey_name = 'blob, %s%s' % (filtername, filtername2)
    surveys.append(fs.Blob_survey(bfs, weights, filtername=filtername,
                                  filter2=filtername2,
                                  survey_note=survey_name, az_range=180.,
                                  search_radius=90, ignore_obs='DD'))
    pair_surveys.append(surveys[-1])


#filters = ['u', 'g', 'r', 'i', 'z', 'y']
filters = ['y']
greedy_surveys = []
for filtername in filters:
    bfs = []
    bfs.append(fs.M5_diff_basis_function(filtername=filtername, nside=nside))
    bfs.append(fs.Target_map_basis_function(filtername=filtername,
                                            target_map=target_map[filtername],
                                            out_of_bounds_val=hp.UNSEEN, nside=nside,
                                            norm_factor=norm_factor))
コード例 #5
0
    bfs.append(fs.Slewtime_basis_function(filtername=filtername, nside=nside))
    bfs.append(fs.Strict_filter_basis_function(filtername=filtername))
    bfs.append(fs.Zenith_shadow_mask_basis_function(nside=nside, shadow_minutes=60., max_alt=76.))
    weights = np.array([3.0, 3.0, .3, .3, 0.3, 0.3, 3., 3., 0.])
    if filtername2 is None:
        # Need to scale weights up so filter balancing still works properly.
        weights = np.array([6.0, 0.6, 0.6, 3., 3., 0.])
    # XXX-
    # This is where we could add a look-ahead basis function to include m5_diff in the future.
    # Actually, having a near-future m5 would also help prevent switching to u or g right at twilight?
    # Maybe just need a "filter future" basis function?
    if filtername2 is None:
        survey_name = 'blob, %s' % filtername
    else:
        survey_name = 'blob, %s%s' % (filtername, filtername2)
    surveys.append(fs.Blob_survey(bfs, weights, filtername=filtername, filter2=filtername2,
                                  survey_note=survey_name, ignore_obs='DD'))

# Set up the greedy surveys for filling time when can't take pairs.
filters = ['u', 'g', 'r', 'i', 'z', 'y']
greedy_surveys = []
for filtername in filters:
    bfs = []
    bfs.append(fs.M5_diff_basis_function(filtername=filtername, nside=nside))
    bfs.append(Target_map_modulo_basis_function(filtername=filtername,
                                                mod_year=mod_year, offset=0,
                                                target_map=even_year_target[filtername],
                                                norm_factor=even_norm))

    bfs.append(Target_map_modulo_basis_function(filtername=filtername,
                                                mod_year=mod_year, offset=offset,
                                                target_map=even_year_target[filtername],