Move spex prism loader to specutils
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia dagli entry point mostrati _identify_spex, identify_spex_prism e spex_prism_loader, quindi leggi il relativo specutils issue 1259 per il contesto di destinazione. Il lavoro è completato quando il loader SpeX e il suo comportamento di identificazione sono stati spostati in specutils e il comportamento esistente di FITS, unità, incertezze e metadati è preservato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Move Spex loader to specutils. Related issue https://github.com/astropy/specutils/issues/1259
def _identify_spex(filename):
"""
Check whether the given file is a SpeX data product.
"""
try:
with fits.open(filename, memmap=False) as hdulist:
return "spex" in hdulist[0].header["INSTRUME"].lower() and "irtf" in hdulist[0].header["TELESCOP"].lower()
except Exception: # pylint: disable=broad-except,
return False
def identify_spex_prism(origin, *args, **kwargs):
"""
Confirm this is a SpeX Prism FITS file.
See FITS keyword reference at http://irtfweb.ifa.hawaii.edu/~spex/observer/
Notes: GRAT has values of: ShortXD, Prism, LXD_long, LXD_short, SO_long, SO_short
"""
is_spex = _identify_spex(args[0])
if is_spex:
with fits.open(args[0], memmap=False) as hdulist:
return (
isinstance(args[0], str)
and os.path.splitext(args[0].lower())[1] == ".fits"
and is_spex
and ("lowres" in hdulist[0].header["GRAT"].lower() or "prism" in hdulist[0].header["GRAT"].lower())
)
else:
return is_spex
@data_loader("Spex Prism", identifier=identify_spex_prism, extensions=["fits"], dtype=Spectrum)
def spex_prism_loader(filename, **kwargs):
"""Open a SpeX Prism file and convert it to a Spectrum1D object"""
with fits.open(filename, **kwargs) as hdulist:
header = hdulist[0].header
tab = hdulist[0].data
# Handle missing/incorrect units
try:
flux_unit = header["YUNITS"].replace("ergs", "erg ").strip()
wave_unit = header["XUNITS"].replace("Microns", "um")
except (KeyError, ValueError):
# For now, assume some default units
flux_unit = "erg"
wave_unit = "um"
wave, data = tab[0] * Unit(wave_unit), tab[1] * Unit(flux_unit)
if tab.shape[0] == 3:
uncertainty = StdDevUncertainty(tab[2])
else:
uncertainty = None
meta = {"header": header}
return Spectrum(flux=data, spectral_axis=wave, uncertainty=uncertainty, meta=meta)
- Lingua principale
- Python
- Stelle
- 12
- Fork
- 5
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di astrodbtoolkit/AstrodbKit
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
astrodbtoolkit/AstrodbKit#110 ·
-
Nulls and load_table Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
astrodbtoolkit/AstrodbKit#109 ·
-
astrodbtoolkit/AstrodbKit#105 · 1 assegnatario ·
-
bug
astrodbtoolkit/AstrodbKit#103 · 1 assegnatario ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
astrodbtoolkit/AstrodbKit#101 · 1 commento ·
Tutte le issue di astrodbtoolkit/AstrodbKit
Issue simili
-
bug confirmed issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
open-webui/open-webui#30750 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100