details = [
        detailers.Camera_rot_detailer(min_rot=-87., max_rot=87.),
        dither_detailer
    ]
    ddfs = generate_dd_surveys(nside=nside, nexp=nexp, detailers=details)
    greedy = gen_greedy_surveys(nside, nexp=nexp)
    blobs = generate_blobs(nside, nexp=nexp, mixed_pairs=True)
    surveys = [ddfs, blobs, greedy]

    scheduler = Core_scheduler(surveys, nside=nside)

    for obs in observations[0:max_indx]:
        scheduler.add_observation(obs)

    observatory = Model_observatory(nside=nside)
    observatory.mjd = obs['mjd']
    _ = observatory.observe(obs)
    observatory.mjd = obs['mjd']
    _ = observatory.observe(obs)

    conditions = observatory.return_conditions()
    scheduler.update_conditions(conditions)

    rewards = []
    reward_sizes = []
    for survey_list in scheduler.survey_lists:
        rw = []
        rws = []
        for survey in survey_list:
            reward = survey.calc_reward_function(conditions)
            if np.size(reward) > 1:
        extra_info=extra_info,
        filter_scheduler=filter_sched)


if __name__ == "__main__":

    nside = 32
    scheduler = make_scheduler()

    observatory = Model_observatory(nside=nside)
    sco = schema_converter()
    observations = sco.opsim2obs('baseline_nexp1_v1.6_1yrs.db')
    indx = 64840 - 1
    for obs in observations[0:indx]:
        scheduler.add_observation(obs)
    observatory.mjd = obs['mjd']
    # Observatory starts parked, so need to send an expose command to slew to the correct position
    temp = observatory.observe(obs)
    # It took some time to make that slew, so reset the time again
    observatory.mjd = observations[indx]['mjd']
    should_match_obs, new_night = observatory.observe(obs)

    conditions = observatory.return_conditions()
    scheduler.update_conditions(conditions)
    for survey in scheduler.survey_lists[-1]:
        print(survey.filtername,
              np.nanmax(survey.calc_reward_function(conditions)))

    import pdb
    pdb.set_trace()