Source code for GUIBRUSHR.General_Constants.Classes.Instrument
from numpy import array, append
[docs]
class Instrument:
"""
Represents an astronomical instrument with its spectral properties and observation nights.
Attributes:
name (str): Instrument name.
path_instrument (str): Path to instrument data directory.
resolution (float): Spectral resolution.
hwhm_km_s (float): Half-width at half-maximum in km/s.
wl_min (float): Minimum wavelength.
wl_max (float): Maximum wavelength.
nights (str): Underscore-separated observation date identifiers.
dates (list): Individual date identifiers parsed from nights.
ndate (int): Number of dates.
nights_unique_bool (NDArray): Boolean array flagging unique night entries.
night_arr (NDArray): Array of Night objects.
lr_data: Low-resolution data associated with this instrument.
"""
[docs]
def __init__(self, name, path_instrument, resolution, hwhm_km_s=None, wl_min=None, wl_max=None, nights=None, lr_data=None):
self.name = name
self.path_instrument = path_instrument
self.resolution = resolution
self.hwhm_km_s = hwhm_km_s
self.wl_min = wl_min
self.wl_max = wl_max
self.nights = nights
if self.nights is not None:
self.dates = self.nights.split('_')
self.ndate = len(self.dates)
nights = [
night.replace('A', '').replace('B', '')
for night in self.dates
]
unique_night_flag = [
night not in nights[0:i]
for i, night in enumerate(nights)
]
self.nights_unique_bool = array(unique_night_flag)
self.night_arr = array([])
else:
self.ndate = self.dates = self.night_arr = self.nights_unique_bool = None
self.lr_data = lr_data
[docs]
def append_night_obj(self, night_obj):
"""Append a Night object to the night_arr array."""
self.night_arr = append(self.night_arr, night_obj)