Source code for pyreduce.datasets

# -*- coding: utf-8 -*-
"""
Provides example datasets for the examples

This requires the server to be up and running,
if data needs to be downloaded
"""
import logging
import os
import tarfile
from os.path import dirname, isfile, join

import wget

logger = logging.getLogger(__name__)


[docs]def load_data_from_server(filename, directory): server = r"http://sme.astro.uu.se/pyreduce/" url = server + filename directory = join(directory, filename) wget.download(url, out=directory)
[docs]def get_dataset(name, local_dir=None): """Load a dataset Note ---- This method will not override existing files with the same name, even if they have a different content. Therefore if the files were changed for any reason, the user has to manually delete them from the disk before using this method. Parameters ---------- name : str Name of the dataset local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ if local_dir is None: local_dir = dirname(__file__) local_dir = join(local_dir, "../") # load data if necessary fname = f"{name}.tar.gz" data_dir = join(local_dir, "datasets", name) filename = join(data_dir, fname) os.makedirs(data_dir, exist_ok=True) if not os.path.isfile(filename): logger.info("Downloading dataset %s", name) logger.info("Data is stored at %s", data_dir) load_data_from_server(fname, data_dir) else: logger.info("Using existing dataset %s", name) # Extract the downloaded .tar.gz file with tarfile.open(filename) as file: raw_dir = join(data_dir, "raw") names = [f for f in file if not isfile(join(raw_dir, f.name))] if len(names) != 0: logger.info("Extracting data from tarball") file.extractall(path=raw_dir, members=names) return data_dir
[docs]def UVES(local_dir=None): # pragma: no cover """Load an example dataset instrument: UVES target: HD132205 Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("UVES", local_dir)
[docs]def HARPS(local_dir=None): # pragma: no cover """Load an example dataset instrument: HARPS target: HD109200 Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("HARPS", local_dir)
[docs]def LICK_APF(local_dir=None): # pragma: no cover """Load an example dataset instrument: LICK_APF target: KIC05005618 Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("APF", local_dir)
[docs]def MCDONALD(local_dir=None): # pragma: no cover """Load an example dataset instrument: JWST_MIRI target: ? Data simulated with MIRIsim Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("MCDONALD", local_dir)
[docs]def JWST_MIRI(local_dir=None): # pragma: no cover """Load an example dataset instrument: JWST_MIRI target: ? Data simulated with MIRIsim Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("MIRI", local_dir)
[docs]def JWST_NIRISS(local_dir=None): # pragma: no cover """Load an example dataset instrument: JWST_NIRISS target: ? Data simulated with awesimsoss Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("NIRISS", local_dir)
[docs]def KECK_NIRSPEC(local_dir=None): # pragma: no cover """Load an example dataset instrument: KECK_NIRSPEC target: GJ1214 Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("NIRSPEC", local_dir)
[docs]def XSHOOTER(local_dir=None): # pragma: no cover """Load an example dataset instrument: XSHOOTER target: Ux-Ori Parameters ---------- local_dir : str, optional directory to save data at (default: "./") Returns ------- dataset_dir : str directory where the data was saved """ return get_dataset("XSHOOTER", local_dir)