Source code for rubin_sim.data.rs_download_data

__all__ = ("get_data_dir", "get_baseline", "data_dict", "rs_download_testing", "rs_download_data")

import argparse
import glob
import os

from rubin_scheduler.data import DEFAULT_DATA_URL, download_rubin_data
from rubin_scheduler.data import get_data_dir as gdd


[docs] def get_data_dir() -> str: """Wraps rubin_scheduler.data.get_data_dir(). Provided here for backwards compatibility. Returns ------- $RUBIN_SIM_DATA_DIR : `str` Directory containing the necessary data for rubin_sim_data. """ return gdd()
[docs] def get_baseline() -> str: """Get the path to the baseline cadence simulation sqlite file. Returns ------- file : `str` Path to the baseline cadence simulation sqlite file. """ dd = get_data_dir() path = os.path.join(dd, "sim_baseline") file = glob.glob(path + "/*10yrs.db")[0] return file
[docs] def data_dict() -> dict: """ Dictionary containing expected version information for rubin_sim_data data sets, for this version of rubin_sim. Returns ------- file_dict : `dict` Data bucket filenames dictionary with keys: ``"name"`` Data bucket name (`str`). ``"version"`` Versioned file name (`str`). """ # Note for developers: # to create tar files and follow any sym links, run: e.g. # ``tar -chvzf maf_may_2021.tgz maf`` file_dict = { "maf": "maf_2024_06_13.tgz", "maps": "maps_2022_2_28.tgz", "movingObjects": "movingObjects_oct_2021.tgz", "orbits": "orbits_2022_3_1.tgz", "orbits_precompute": "orbits_precompute_2023_05_23.tgz", "sim_baseline": "sim_baseline_2024_10_08.tgz", "skybrightness": "skybrightness_2023_09_11.tgz", "throughputs": "throughputs_2023_09_22.tgz", "tests": "tests_2024_04_23.tgz", } return file_dict
[docs] def rs_download_testing() -> None: """Convenience function for github actions, to download only a subset of data. Contains maf,maps,movingObjects,skybrightness,throughputs and tests. For users who don't care about moving objects, this is likely sufficient. """ all_files = data_dict() keys = ["maf", "maps", "movingObjects", "skybrightness", "throughputs", "tests"] subset = {} for k in keys: subset[k] = all_files[k] download_rubin_data( subset, dirs=None, print_versions_only=False, update=True, force=False, url_base=DEFAULT_DATA_URL, tdqm_disable=True, )
[docs] def rs_download_data() -> None: """Utility to download necessary data for rubin_sim. Wrapper around rubin_scheduler.scheduler_download_data, but downloading the data files specified by rubin_sim. """ files = data_dict() parser = argparse.ArgumentParser(description="Download data files for rubin_sim package") parser.add_argument( "--versions", dest="versions", default=False, action="store_true", help="Report expected versions, then quit", ) parser.add_argument( "-d", "--dirs", type=str, default=None, help="Comma-separated list of directories to download", ) parser.add_argument( "-f", "--force", dest="force", default=False, action="store_true", help="Force re-download of data directory(ies)", ) parser.add_argument( "--url_base", type=str, default=DEFAULT_DATA_URL, help="Root URL of download location", ) parser.add_argument( "--tdqm_disable", dest="tdqm_disable", default=False, action="store_true", help="Turn off tdqm progress bar", ) parser.add_argument( "--update", dest="update", default=False, action="store_true", help="Update versions of data on disk to match current", ) args = parser.parse_args() download_rubin_data( files, dirs=args.dirs, print_versions_only=args.versions, update=args.update, force=args.force, url_base=args.url_base, tdqm_disable=args.tdqm_disable, )