Source code for liger_iris_drp_resources.model_spectra
import os
import gdown
from .utils import get_resource_dir
import logging
logger = logging.getLogger(__name__)
__all__ = [
'download_model_spectra',
'get_model_spectra_dir',
]
[docs]
def get_model_spectra_dir() -> str:
return os.path.join(get_resource_dir(), 'Model_Spectra')
[docs]
def download_model_spectra(
output_dir: str | None = None,
skip_if_exists: bool = True
) -> str:
"""
Download Model spectra from a Google Drive folder.
Parameters
----------
output_dir : str | None
The directory to download the files to.
If None, a default directory will be used.
skip_if_exists : bool
If True, skip downloading if the output directory already exists and is not empty.
Default is True.
Returns
-------
model_spectra_dir : str
The path to the downloaded files.
"""
if output_dir is None:
output_dir = get_model_spectra_dir()
if skip_if_exists and os.path.exists(output_dir) and any(os.listdir(output_dir)):
logger.info(f"Model spectra directory {output_dir} already exists and is not empty. Skipping download.")
return output_dir
os.makedirs(output_dir, exist_ok=True)
url = 'https://drive.google.com/drive/folders/1v_Sy41ZlZFr2C1tg5c28agoAaXo7cR6r?usp=drive_link'
logger.info(f"Downloading Model spectra to {output_dir}...")
try:
files = gdown.download_folder(
url=url,
output=output_dir,
quiet=False,
)
if not files:
msg = "Failed to download Model spectra: no files returned"
logger.error(msg)
raise RuntimeError(msg)
if not os.listdir(output_dir):
msg = f"Download completed but directory is empty: {output_dir}"
logger.error(msg)
raise RuntimeError(msg)
logger.info(f"Successfully downloaded Model spectra to {output_dir}")
return output_dir
except Exception as e:
logger.error(f"Failed to download Model spectra: {e}")
raise RuntimeError("Model spectra download failed") from e