def get_hdf5_filename_list(search_dict, file_level, diffraction_order):
    """search obs database for lno nadirs matching the search parameters
    output list of hdf5 filenames satisfying criteria"""

    #search database for parameters
    search_query = make_query_from_search_dict(search_dict, file_level,
                                               diffraction_order)

    database_name = "lno_nadir_%s" % file_level
    db_obj = obs_database(database_name)
    query_output = db_obj.query(search_query)
    db_obj.close()

    #test new calibrations on a nadir observation
    obs_data_dict = make_obs_dict("lno", query_output, filenames_only=True)

    #get filenames matching search parameters
    hdf5_filenames = obs_data_dict["filename"]

    return hdf5_filenames
Beispiel #2
0
# SAVE_FIGS = False
SAVE_FIGS = True

diffraction_orders = [167, 168, 169, 170]
order_text = "167-170"
file_level = "hdf5_level_1p0a"

# degree_binning = 2
degree_binning = 1

search_query = "SELECT * from %s WHERE " % file_level + " OR ".join(
    ["diffraction_order == %i" % i for i in diffraction_orders])

database_name = "lno_nadir_%s" % file_level
db_obj = obs_database(database_name, silent=True)
query_output = db_obj.query(search_query)
db_obj.close()

albedoMap, albedoMapExtents = get_TES_albedo_map()

#cut off top and bottom like NOMAD. 8px per degree => 16 deg cutoff = 128 points
albedoMap = albedoMap[128:(1440 - 128), :]
albedoMapExtents = [-180, 180, -74, 74]
"""conversion TES to OMEGA order 169
TES = 0.1, OMEGA = 0.108
TES = 0.3, OMEGA = 0.462

slope = (0.462-0.108)/(0.3-0.1)
"""
def plot_lno_groundtracks(search_dict,
                          file_level,
                          diffraction_order,
                          plot_fig=True,
                          save_fig=True):
    """search obs database for lno nadirs matching the search parameters
    plot groundtracks and output list of hdf5 filenames satisfying criteria"""

    #search database for parameters
    search_query = make_query_from_search_dict(search_dict, file_level,
                                               diffraction_order)

    database_name = "lno_nadir_%s" % file_level
    db_obj = obs_database(database_name, silent=True)
    query_output = db_obj.query(search_query)
    db_obj.close()

    #test new calibrations on a nadir observation
    obs_data_dict = make_obs_dict("lno", query_output, filenames_only=True)

    #get filenames matching search parameters
    hdf5_filenames = obs_data_dict["filename"]

    if plot_fig:
        fig0, ax0 = plt.subplots(figsize=(FIG_X - 4, FIG_Y - 3))

        #draw rectangle on search area
        if "longitude" in search_dict[diffraction_order].keys(
        ) and "latitude" in search_dict[diffraction_order].keys():
            rectangle = np.asarray([
                [search_dict[diffraction_order]["longitude"][0], search_dict[diffraction_order]["latitude"][0]], \
                [search_dict[diffraction_order]["longitude"][1], search_dict[diffraction_order]["latitude"][0]], \
                [search_dict[diffraction_order]["longitude"][1], search_dict[diffraction_order]["latitude"][1]], \
                [search_dict[diffraction_order]["longitude"][0], search_dict[diffraction_order]["latitude"][1]], \
                [search_dict[diffraction_order]["longitude"][0], search_dict[diffraction_order]["latitude"][0]], \
            ])
            ax0.plot(rectangle[:, 0], rectangle[:, 1], "k")

        for hdf5_filename in hdf5_filenames:

            hdf5_file = open_hdf5_file(hdf5_filename)

            lat = hdf5_file["Geometry/Point0/Lat"][:, 0]
            lon = hdf5_file["Geometry/Point0/Lon"][:, 1]

            if len(search_query) > 200:
                midpoint = int(len(search_query) / 2)
                ax0.set_title(search_query[:midpoint] + "\n" +
                              search_query[midpoint:])
            else:
                ax0.set_title(search_query)
            ax0.scatter(lon, lat, label=hdf5_filename)
            ax0.set_xlabel("Longitude")
            ax0.set_ylabel("Latitude")
        ax0.set_xlim((-180, 180))
        ax0.set_ylim((-90, 90))
        ax0.legend()
        ax0.grid()

        if save_fig:
            fig0.savefig(
                os.path.join(paths["BASE_DIRECTORY"], "output",
                             "groundtrack_order_%i.png" % diffraction_order))

    return hdf5_filenames
Beispiel #4
0
    parser = argparse.ArgumentParser()
    parser.add_argument('command',
                        type=str,
                        help='Enter command: so_occultation, lno_nadir')
    parser.add_argument('level',
                        type=str,
                        help='Enter full level name: e.g. hdf5_level_0p3a')
    parser.add_argument('beg', type=str, help='Enter start date YYYY-MM-DD')
    parser.add_argument('end', type=str, help='Enter end date YYYY-MM-DD')
    parser.add_argument(
        '-regenerate',
        action='store_true',
        help='Delete table and regenerate. Always use on first run')
    parser.add_argument('-silent', action='store_true', help='Output messages')
    parser.add_argument('--regex',
                        type=str,
                        default="",
                        help='Output messages')
    args = parser.parse_args()
    command = args.command
else:
    command = ""

print("Running command", command)

if command != "":
    dbName = "%s_%s" % (command, args.level)
    db_obj = obs_database(dbName)
    db_obj.process_channel_data(args)
    db_obj.close()