Source code for species.data.filters

"""
Module for downloading filter data from the SVO website.
"""

import os

import wget
import numpy as np


[docs]def download_filter(filter_id): """ Parameters ---------- filter_id : str Filter ID. Returns ------- numpy.ndarray Wavelength (micron). numpy.ndarray Transmission. """ if filter_id == 'LCO/VisAO.Ys': url = 'https://xwcl.science/magao/visao/VisAO_Ys_filter_curve.dat' wget.download(url, out='VisAO_Ys_filter_curve.dat', bar=None) wavelength, transmission, _, _ = np.loadtxt('VisAO_Ys_filter_curve.dat', unpack=True) wavelength = wavelength[:-7] transmission = transmission[:-7] os.remove('VisAO_Ys_filter_curve.dat') else: url = 'http://svo2.cab.inta-csic.es/svo/theory/fps/getdata.php?format=ascii&id='+filter_id wget.download(url, out='filter.dat', bar=None) if os.stat('filter.dat').st_size == 0: raise ValueError(f'Filter {filter_id} not found on the SVO Filter Profile Service.') else: wavelength, transmission = np.loadtxt('filter.dat', unpack=True) wavelength *= 1e-4 # [micron] os.remove('filter.dat') if wavelength is not None: indices = [] for i in range(transmission.size): if i == 0 and transmission[i] == 0. and transmission[i+1] == 0.: indices.append(i) elif i == transmission.size-1 and transmission[i-1] == 0. and transmission[i] == 0.: indices.append(i) elif transmission[i-1] == 0. and transmission[i] == 0. and transmission[i+1] == 0.: indices.append(i) wavelength = np.delete(wavelength, indices) transmission = np.delete(transmission, indices) return wavelength, transmission