From b8584c2b68e362337878111a2a21a74be20e3179 Mon Sep 17 00:00:00 2001 From: profxj Date: Mon, 9 Jan 2023 15:02:45 -0800 Subject: [PATCH 01/46] trying to extract only the 'good' slits --- pypeit/core/skysub.py | 1 + pypeit/extraction.py | 86 ++++++++++++++++++++++-------------------- pypeit/find_objects.py | 1 + pypeit/pypeit.py | 12 +++--- pypeit/slittrace.py | 20 +++++++--- 5 files changed, 67 insertions(+), 53 deletions(-) diff --git a/pypeit/core/skysub.py b/pypeit/core/skysub.py index 1e6ba94826..7d71af8f5d 100644 --- a/pypeit/core/skysub.py +++ b/pypeit/core/skysub.py @@ -1218,6 +1218,7 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, else: msgs.error('Number of specobjs in sobjs is not an integer multiple of the number or ordres!') + # Set bad obj to -nan order_snr = np.zeros((norders, nobjs)) uni_objid = np.unique(sobjs[sobjs.sign > 0].ECH_OBJID) for iord in range(norders): diff --git a/pypeit/extraction.py b/pypeit/extraction.py index 64878027d6..98946a0514 100644 --- a/pypeit/extraction.py +++ b/pypeit/extraction.py @@ -55,6 +55,8 @@ class Extract: Global spectral flexure correction for each slit (in pixels) vel_corr (float): Relativistic reference frame velocity correction (e.g. heliocentyric/barycentric/topocentric) + extract_bpm (`numpy.ndarray`_): + Bad pixel mask for extraction """ @@ -231,13 +233,17 @@ def __init__(self, sciImg, slits, sobjs_obj, spectrograph, par, objtype, global_ # Now apply a global flexure correction to each slit provided it's not a standard star if self.par['flexure']['spec_method'] != 'skip' and not self.std_redux: + # Update slitshift values self.spec_flexure_correct(mode='global') - if self.nobj_to_extract > 0: - for iobj in range(self.sobjs_obj.nobj): - islit = self.slits.spatid_to_zero(self.sobjs_obj[iobj].SLITID) - self.sobjs_obj[iobj].update_flex_shift(self.slitshift[islit], flex_type='global') - - # remove objects found in `BOXSLIT` (we don't want to extract those) + # Apply? + for iobj in range(self.sobjs_obj.nobj): + # Ignore negative sources + if self.sobjs_obj[iobj].sign < 0 and not self.return_negative: + continue + islit = self.slits.spatid_to_zero(self.sobjs_obj[iobj].SLITID) + self.sobjs_obj[iobj].update_flex_shift(self.slitshift[islit], flex_type='global') + + # Remove objects rejected for one or another reasons (we don't want to extract those) remove_idx = [] for i, sobj in enumerate(self.sobjs_obj): if sobj.SLITID in list(self.slits.spat_id[self.extract_bpm]): @@ -260,14 +266,14 @@ def nsobj_to_extract(self): else: return 0 - @property - def nobj_to_extract(self): - """ - Number of objects to extract. Defined in children - Returns: - - """ - return None +# @property +# def nobj_to_extract(self): +# """ +# Number of objects to extract. Defined in children +# Returns: +# +# """ +# return None def initialise_slits(self, slits, initial=False): """ @@ -400,9 +406,8 @@ def run(self, model_noise=None, spat_pix=None): See main doc string for description """ - # Do we have any detected objects to extract? - if self.nobj_to_extract > 0: + if self.nsobj_to_extract > 0: # Extract + Return self.skymodel, self.objmodel, self.ivarmodel, self.outmask, self.sobjs \ = self.extract(self.global_sky, model_noise=model_noise, spat_pix=spat_pix) @@ -436,9 +441,8 @@ def run(self, model_noise=None, spat_pix=None): # TODO: change slits.mask > 2 to use named flags. reduce_masked = np.where(np.invert(self.extract_bpm_init) & self.extract_bpm & (self.slits.mask > 2))[0] if len(reduce_masked) > 0: - # TODO Change BADREDUCE to BADEXTRACT self.slits.mask[reduce_masked] = self.slits.bitmask.turn_on( - self.slits.mask[reduce_masked], 'BADREDUCE') + self.slits.mask[reduce_masked], 'BADEXTRACT') # Return return self.skymodel, self.objmodel, self.ivarmodel, self.outmask, self.sobjs, self.waveimg, self.tilts @@ -684,15 +688,15 @@ def __init__(self, sciImg, slits, sobjs_obj, spectrograph, par, objtype, **kwarg super().__init__(sciImg, slits, sobjs_obj, spectrograph, par, objtype, **kwargs) - @property - def nobj_to_extract(self): - """ - See parent method docs. - - Returns: - - """ - return self.nsobj_to_extract +# @property +# def nobj_to_extract(self): +# """ +# See parent method docs. +# +# Returns: +# +# """ +# return self.nsobj_to_extract # TODO: JFH Should we reduce the number of iterations for standards or # near-IR redux where the noise model is not being updated? @@ -833,20 +837,20 @@ def __init__(self, sciImg, slits, sobjs_obj, spectrograph, par, objtype, **kwarg 'assigned in the relevant SlitTraceSet.') - @property - def nobj_to_extract(self): - """ - See parent method docs. - - Returns: - - """ - - norders = self.order_vec.size - if (self.nsobj_to_extract % norders) == 0: - return int(self.nsobj_to_extract/norders) - else: - msgs.error('Number of specobjs in sobjs is not an integer multiple of the number or ordres!') +# @property +# def nobj_to_extract(self): +# """ +# See parent method docs. +# +# Returns: +# +# """ +# +# norders = self.order_vec.size +# if (self.nsobj_to_extract % norders) == 0: +# return int(self.nsobj_to_extract/norders) +# else: +# msgs.error('Number of specobjs in sobjs is not an integer multiple of the number or orders!') # JFH TODO Should we reduce the number of iterations for standards or near-IR redux where the noise model is not # being updated? diff --git a/pypeit/find_objects.py b/pypeit/find_objects.py index 296b2b4064..31629cc63a 100644 --- a/pypeit/find_objects.py +++ b/pypeit/find_objects.py @@ -337,6 +337,7 @@ def run(self, std_trace=None, show_peaks=False, show_skysub_fit=False): # If the skip_skysub is set (i.e. image is already sky-subtracted), simply find objects if self.par['reduce']['findobj']['skip_skysub']: + msgs.info("Skipping global sky sub as per user request") sobjs_obj, self.nobj = self.find_objects(self.sciImg.image, self.sciImg.ivar, std_trace=std_trace, show=self.findobj_show, show_peaks=show_peaks) diff --git a/pypeit/pypeit.py b/pypeit/pypeit.py index f6aa896c8b..8236783537 100644 --- a/pypeit/pypeit.py +++ b/pypeit/pypeit.py @@ -577,9 +577,8 @@ def reduce_exposure(self, frames, bg_frames=None, std_outfile=None): detectors = self.spectrograph.select_detectors(subset=subset) msgs.info(f'Detectors to work on: {detectors}') - # Loop on Detectors + # Loop on Detectors -- Calibrate, process image, find objects # TODO: Attempt to put in a multiprocessing call here? - # objfind for self.det in detectors: msgs.info(f'Reducing detector {self.det}') # run calibration @@ -597,8 +596,8 @@ def reduce_exposure(self, frames, bg_frames=None, std_outfile=None): # in the slitmask stuff in between the two loops calib_slits.append(self.caliBrate.slits) # global_sky, skymask and sciImg are needed in the extract loop - initial_sky, sobjs_obj, sciImg, objFind = self.objfind_one(frames, self.det, bg_frames, - std_outfile=std_outfile) + initial_sky, sobjs_obj, sciImg, objFind = self.objfind_one( + frames, self.det, bg_frames, std_outfile=std_outfile) if len(sobjs_obj)>0: all_specobjs_objfind.add_sobj(sobjs_obj) initial_sky_list.append(initial_sky) @@ -711,7 +710,7 @@ def calib_one(self, frames, det): """ - msgs.info(f'Building calibrations for detector {det}') + msgs.info(f'Building/loading calibrations for detector {det}') # Instantiate Calibrations class caliBrate = calibrations.Calibrations.get_instance( self.fitstbl, self.par['calibrations'], self.spectrograph, @@ -893,7 +892,7 @@ def extract_one(self, frames, det, sciImg, objFind, initial_sky, sobjs_obj): flagged_slits = np.where(objFind.reduce_bpm)[0] if len(flagged_slits) > 0: self.caliBrate.slits.mask[flagged_slits] = \ - self.caliBrate.slits.bitmask.turn_on(self.caliBrate.slits.mask[flagged_slits], 'BADREDUCE') + self.caliBrate.slits.bitmask.turn_on(self.caliBrate.slits.mask[flagged_slits], 'BADSKYSUB') msgs.info("Extraction begins for {} on det={}".format(self.basename, det)) @@ -909,6 +908,7 @@ def extract_one(self, frames, det, sciImg, objFind, initial_sky, sobjs_obj): if not self.par['reduce']['extraction']['skip_extraction']: # Perform the extraction + embed(header='911 of pypeit.py') skymodel, objmodel, ivarmodel, outmask, sobjs, waveImg, tilts = self.exTract.run() # Apply a reference frame correction to each object and the waveimg self.exTract.refframe_correct(self.fitstbl["ra"][frames[0]], self.fitstbl["dec"][frames[0]], self.obstime, diff --git a/pypeit/slittrace.py b/pypeit/slittrace.py index 0947fc327f..be49c3a8d4 100644 --- a/pypeit/slittrace.py +++ b/pypeit/slittrace.py @@ -32,9 +32,10 @@ class SlitTraceBitMask(BitMask): """ Mask bits used during slit tracing. """ - version = '1.0.0' + version = '1.0.1' def __init__(self): + # Only ever append new bits (and don't remove old ones) mask = dict([ ('SHORTSLIT', 'Slit formed by left and right edge is too short. Not ignored for flexure'), ('BOXSLIT', 'Slit formed by left and right edge is valid (large enough to be a valid ' @@ -44,7 +45,9 @@ def __init__(self): ('BADTILTCALIB', 'Tilts analysis failed for this slit'), ('SKIPFLATCALIB', 'Flat field generation failed for this slit. Skip flat fielding'), ('BADFLATCALIB', 'Flat field generation failed for this slit. Ignore it fully.'), - ('BADREDUCE', 'Skysub/extraction failed for this slit'), + ('BADREDUCE', 'Reduction failed for this slit'), # THIS IS DEPRECATED BUT STAYS HERE TO ALLOW FOR BACKWARDS COMPATIBILITY + ('BADSKYSUB', 'Skysub failed for this slit'), + ('BADEXTRACT', 'Extraction failed for this slit'), ]) super(SlitTraceBitMask, self).__init__(list(mask.keys()), descr=list(mask.values())) @@ -58,7 +61,7 @@ def exclude_for_flexure(self): # Ignore these flags when performing a flexure calculation # Currently they are *all* of the flags.. return ['SHORTSLIT', 'USERIGNORE', 'BADWVCALIB', 'BADTILTCALIB', - 'SKIPFLATCALIB', 'BADFLATCALIB', 'BADREDUCE'] + 'SKIPFLATCALIB', 'BADFLATCALIB', 'BADSKYSUB', 'BADEXTRACT'] @@ -258,9 +261,14 @@ def _validate(self): if self.slitbitm is None: self.slitbitm = ','.join(list(self.bitmask.keys())) else: - # Validate - if self.slitbitm != ','.join(list(self.bitmask.keys())): - msgs.error("Input BITMASK keys differ from current data model!") + # Validate -- All of the keys must be present and in current order, but new ones can exist + bitms = self.slitbitm.split(',') + curbitm = list(self.bitmask.keys()) + for kk, bit in enumerate(bitms): + if curbitm[kk] != bit: + msgs.error("Input BITMASK keys differ from current data model!") + # Update to current, no matter what + self.slitbitm = ','.join(list(self.bitmask.keys())) # Mask if self.mask is None: self.mask = self.mask_init.copy() From 93c65d4b35645101b3e27785646ed282f753999e Mon Sep 17 00:00:00 2001 From: profxj Date: Mon, 9 Jan 2023 16:38:53 -0800 Subject: [PATCH 02/46] working? --- pypeit/core/skysub.py | 29 +++++++++++++++++++---------- pypeit/pypeit.py | 22 ++++++++++++---------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/pypeit/core/skysub.py b/pypeit/core/skysub.py index 7d71af8f5d..de78b35e3c 100644 --- a/pypeit/core/skysub.py +++ b/pypeit/core/skysub.py @@ -1210,24 +1210,29 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, # Find the spat IDs gdslit_spat = np.unique(slitmask[slitmask >= 0]).astype(int) # Unique sorts - if gdslit_spat.size != norders: - msgs.error("You have not dealt with masked orders properly") + #if gdslit_spat.size != norders: + # msgs.error("You have not dealt with masked orders properly") - if (np.sum(sobjs.sign > 0) % norders) == 0: - nobjs = int((np.sum(sobjs.sign > 0)/norders)) - else: - msgs.error('Number of specobjs in sobjs is not an integer multiple of the number or ordres!') + #if (np.sum(sobjs.sign > 0) % norders) == 0: + # nobjs = int((np.sum(sobjs.sign > 0)/norders)) + #else: + # msgs.error('Number of specobjs in sobjs is not an integer multiple of the number or ordres!') # Set bad obj to -nan - order_snr = np.zeros((norders, nobjs)) uni_objid = np.unique(sobjs[sobjs.sign > 0].ECH_OBJID) + nobjs = len(uni_objid) + order_snr = np.zeros((norders, nobjs)) for iord in range(norders): for iobj in range(nobjs): ind = (sobjs.ECH_ORDERINDX == iord) & (sobjs.ECH_OBJID == uni_objid[iobj]) - order_snr[iord,iobj] = sobjs[ind].ech_snr + # Allow for missed/bad order + if np.sum(ind) == 0: + order_snr[iord,iobj] = -np.nan + else: + order_snr[iord,iobj] = sobjs[ind].ech_snr # Compute the average SNR and find the brightest object - snr_bar = np.mean(order_snr,axis=0) + snr_bar = np.nanmean(order_snr,axis=0) srt_obj = snr_bar.argsort()[::-1] ibright = srt_obj[0] # index of the brightest object # Now extract the orders in descending order of S/N for the brightest object @@ -1237,7 +1242,8 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, # Print out a status message str_out = '' for iord in srt_order_snr: - str_out += '{:<8d}{:<8d}{:>10.2f}'.format(slit_vec[iord], order_vec[iord], order_snr[iord,ibright]) + msgs.newline() + if np.isfinite(order_snr[iord,ibright]): + str_out += '{:<8d}{:<8d}{:>10.2f}'.format(slit_vec[iord], order_vec[iord], order_snr[iord,ibright]) + msgs.newline() dash = '-'*27 dash_big = '-'*40 msgs.info(msgs.newline() + 'Reducing orders in order of S/N of brightest object:' + msgs.newline() + dash + @@ -1245,6 +1251,9 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, msgs.newline() + str_out) # Loop over orders in order of S/N ratio (from highest to lowest) for the brightest object for iord in srt_order_snr: + # Is this a bad slit? + if not np.any(np.isfinite(order_snr[iord,:])): + continue order = order_vec[iord] msgs.info("Local sky subtraction and extraction for slit/order: {:d}/{:d}".format(iord,order)) other_orders = (fwhm_here > 0) & np.invert(fwhm_was_fit) diff --git a/pypeit/pypeit.py b/pypeit/pypeit.py index 8236783537..df88162a8d 100644 --- a/pypeit/pypeit.py +++ b/pypeit/pypeit.py @@ -888,11 +888,19 @@ def extract_one(self, frames, det, sciImg, objFind, initial_sky, sobjs_obj): final_global_sky = objFind.global_skysub(previous_sky=initial_sky, skymask=skymask, show=self.show) scaleImg = objFind.scaleimg + # Each spec2d file includes the slits object with unique flagging + # for extraction failures. So we make a copy here before those flags + # are modified. + maskdef_designtab = self.caliBrate.slits.maskdef_designtab + slits = copy.deepcopy(self.caliBrate.slits) + slits.maskdef_designtab = None + + # update here slits.mask since global_skysub modify reduce_bpm and we need to propagate it into extraction flagged_slits = np.where(objFind.reduce_bpm)[0] if len(flagged_slits) > 0: - self.caliBrate.slits.mask[flagged_slits] = \ - self.caliBrate.slits.bitmask.turn_on(self.caliBrate.slits.mask[flagged_slits], 'BADSKYSUB') + slits.mask[flagged_slits] = \ + slits.bitmask.turn_on(slits.mask[flagged_slits], 'BADSKYSUB') msgs.info("Extraction begins for {} on det={}".format(self.basename, det)) @@ -901,14 +909,13 @@ def extract_one(self, frames, det, sciImg, objFind, initial_sky, sobjs_obj): # At instantiaton, the fullmask in self.sciImg is modified # TODO Are we repeating steps in the init for FindObjects and Extract?? self.exTract = extraction.Extract.get_instance( - sciImg, self.caliBrate.slits, sobjs_obj, self.spectrograph, + sciImg, slits, sobjs_obj, self.spectrograph, self.par, self.objtype, global_sky=final_global_sky, waveTilts=self.caliBrate.wavetilts, wv_calib=self.caliBrate.wv_calib, bkg_redux=self.bkg_redux, return_negative=self.par['reduce']['extraction']['return_negative'], std_redux=self.std_redux, basename=self.basename, show=self.show) if not self.par['reduce']['extraction']['skip_extraction']: # Perform the extraction - embed(header='911 of pypeit.py') skymodel, objmodel, ivarmodel, outmask, sobjs, waveImg, tilts = self.exTract.run() # Apply a reference frame correction to each object and the waveimg self.exTract.refframe_correct(self.fitstbl["ra"][frames[0]], self.fitstbl["dec"][frames[0]], self.obstime, @@ -933,14 +940,9 @@ def extract_one(self, frames, det, sciImg, objFind, initial_sky, sobjs_obj): # Construct table of spectral flexure spec_flex_table = Table() - spec_flex_table['spat_id'] = self.caliBrate.slits.spat_id + spec_flex_table['spat_id'] = slits.spat_id spec_flex_table['sci_spec_flexure'] = self.exTract.slitshift - # pull out maskdef_designtab from caliBrate.slits - maskdef_designtab = self.caliBrate.slits.maskdef_designtab - slits = copy.deepcopy(self.caliBrate.slits) - slits.maskdef_designtab = None - # Construct the Spec2DObj spec2DObj = spec2dobj.Spec2DObj(sciimg=sciImg.image, ivarraw=sciImg.ivar, From 3db2c60b84c975258f074d2f222e4d275d5d53a0 Mon Sep 17 00:00:00 2001 From: profxj Date: Mon, 9 Jan 2023 16:57:43 -0800 Subject: [PATCH 03/46] CHANGES --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 7be3da4252..f9baaf91fe 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -15,6 +15,7 @@ - OpenMP link fix - Enable boxcar_radius for manual extraction - Prevent flexure crash +- Allow for bad orders during extraction (without crashing) 1.11.0 (21 Oct 2022) -------------------- From 0ad0de6a1556ac2a85bd716d9e70047a543fd800 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 30 Jan 2023 20:30:03 +0000 Subject: [PATCH 04/46] add OSIRIS+ --- pypeit/flatfield.py | 5 + pypeit/spectrographs/gtc_osiris.py | 626 ++++++++++++++++++++++++++++- 2 files changed, 628 insertions(+), 3 deletions(-) diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 31507a4de1..57e2a3ff22 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -288,6 +288,11 @@ def get_spat_bsplines(self, frametype='illum', finecorr=False): fctxt = "fine correction to the " pixel_bsplines = self.pixelflat_finecorr illum_bsplines = self.illumflat_finecorr + # Do a quick check if no data exist + if pixel_bsplines is not None: + if pixel_bsplines[0].xval is None: pixel_bsplines = None + if illum_bsplines is not None: + if illum_bsplines[0].xval is None: illum_bsplines = None else: fctxt = "" pixel_bsplines = self.pixelflat_spat_bsplines diff --git a/pypeit/spectrographs/gtc_osiris.py b/pypeit/spectrographs/gtc_osiris.py index 0c4ec3b506..19e064b040 100644 --- a/pypeit/spectrographs/gtc_osiris.py +++ b/pypeit/spectrographs/gtc_osiris.py @@ -11,13 +11,631 @@ from pypeit.core import framematch from pypeit.spectrographs import spectrograph from pypeit.images import detector_container +from astropy import wcs, units import astropy.io.fits as fits +from astropy.time import Time +from astropy.coordinates import SkyCoord, EarthLocation -class GTCOSIRISSpectrograph(spectrograph.Spectrograph): +class GTCOSIRISPlusSpectrograph(spectrograph.Spectrograph): """ Child of Spectrograph to handle GTC/OSIRIS specific code """ + ndet = 1 + name = 'gtc_osiris_plus' + telescope = telescopes.GTCTelescopePar() + camera = 'OSIRIS' + url = 'http://www.gtc.iac.es/instruments/osiris/' + header_name = 'OSIRIS' + supported = True + comment = 'See :doc:`gtc_osiris`' + + def __init__(self): + super().__init__() + self.location = EarthLocation.of_site('lapalma') + + def get_detector_par(self, det, hdu=None): + """ + Return metadata for the selected detector. + + Detector data from `here + `__. + + Args: + det (:obj:`int`): + 1-indexed detector number. + hdu (`astropy.io.fits.HDUList`_, optional): + The open fits file with the raw image of interest. If not + provided, frame-dependent parameters are set to a default. + + Returns: + :class:`~pypeit.images.detector_container.DetectorContainer`: + Object with the detector metadata. + """ + binning = '1,1' if hdu is None else self.get_meta_value(self.get_headarr(hdu), 'binning') + gain = 1.90 if hdu is None else self.get_headarr(hdu)[0]['GAIN'] + ronoise = 4.3 + + # Detector 1 + detector_dict1 = dict( + binning = binning, + det = 1, + dataext = 0, + specaxis = 1, + specflip = True, + spatflip = False, + platescale = 0.125, # arcsec per pixel + darkcurr = 0.0, + saturation = 65535., # ADU + nonlinear = 0.95, + mincounts = 0, + numamplifiers = 1, + gain = np.atleast_1d([gain]), + ronoise = np.atleast_1d([ronoise]), + datasec = np.atleast_1d('[180:4112,50:4096]'), + oscansec = np.atleast_1d('[180:4112,8:46]') # Trim down the oscansec - looks like some bad pixels + ) + + detectors = [detector_dict1] + # Return + return detector_container.DetectorContainer(**detectors[det-1]) + + + @classmethod + def default_pypeit_par(cls): + """ + Return the default parameters to use for this instrument. + + Returns: + :class:`~pypeit.par.pypeitpar.PypeItPar`: Parameters required by + all of ``PypeIt`` methods. + """ + par = super().default_pypeit_par() + + # Ignore PCA + par['calibrations']['slitedges']['sync_predict'] = 'nearest' + par['calibrations']['slitedges']['bound_detector'] = True + + # Set pixel flat combination method + par['calibrations']['pixelflatframe']['process']['combine'] = 'median' + # Wavelength calibration methods + par['calibrations']['wavelengths']['method'] = 'full_template' + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI,ArI'] + + # Set the default exposure time ranges for the frame typing + par['scienceframe']['exprng'] = [90, None] + par['calibrations']['biasframe']['exprng'] = [None, 1] + par['calibrations']['darkframe']['exprng'] = [999999, None] # No dark frames + par['calibrations']['pinholeframe']['exprng'] = [999999, None] # No pinhole frames + par['calibrations']['arcframe']['exprng'] = [None, None] # Long arc exposures + par['calibrations']['arcframe']['process']['clip'] = False + par['calibrations']['standardframe']['exprng'] = [None, 180] + # Multiple arcs with different lamps, so can't median combine nor clip, also need to remove continuum + par['calibrations']['arcframe']['process']['combine'] = 'mean' + par['calibrations']['arcframe']['process']['subtract_continuum'] = True + par['calibrations']['tiltframe']['process']['clip'] = False + par['calibrations']['tiltframe']['process']['combine'] = 'mean' + par['calibrations']['tiltframe']['process']['subtract_continuum'] = True + + # Increase the wave tilts order, given the longish slit + par['calibrations']['tilts']['spat_order'] = 5 + par['calibrations']['tilts']['spec_order'] = 5 + + # Only extract one object per standard frame + par['reduce']['findobj']['maxnumber_std'] = 1 + + # Turn off the 2D fit - this seems to be giving bad results for OSIRIS + par['reduce']['skysub']['no_poly'] = True + return par + + def init_meta(self): + """ + Define how metadata are derived from the spectrograph files. + + That is, this associates the ``PypeIt``-specific metadata keywords + with the instrument-specific header cards using :attr:`meta`. + """ + self.meta = {} + # Required (core) + self.meta['ra'] = dict(ext=0, card='RA') + self.meta['dec'] = dict(ext=0, card='DEC') + self.meta['target'] = dict(ext=0, card='object') + self.meta['idname'] = dict(ext=0, card='obsmode') + self.meta['decker'] = dict(ext=0, card='MASKNAME') + self.meta['binning'] = dict(card=None, compound=True) + self.meta['detector'] = dict(ext=0, card='detector') + self.meta['mjd'] = dict(ext=0, card='MJD-OBS') + self.meta['exptime'] = dict(ext=0, card='EXPTIME') + self.meta['airmass'] = dict(ext=0, card='AIRMASS') + self.meta['dispname'] = dict(ext=0, card='GRISM') + self.meta['datasec'] = dict(ext=0, card='DETSIZE') + self.meta['dichroic'] = dict(ext=0, card='FILTER1') + self.meta['instrument'] = dict(ext=0, card='INSTRUME') + self.meta['slitwid'] = dict(card=None, compound=True) + + def compound_meta(self, headarr, meta_key): + """ + Methods to generate metadata requiring interpretation of the header + data, instead of simply reading the value of a header card. + + Args: + headarr (:obj:`list`): + List of `astropy.io.fits.Header`_ objects. + meta_key (:obj:`str`): + Metadata keyword to construct. + + Returns: + object: Metadata value read from the header(s). + """ + if meta_key == 'binning': + binspatial, binspec = parse.parse_binning(headarr[0]['HIERARCH P_BINNING'].split("_")[1]) + binning = parse.binning2string(binspec, binspatial)[::-1] + return binning + elif meta_key == 'pressure': + try: + return headarr[0]['PRESSURE'] * 0.001 # Must be in astropy.units.bar + except KeyError: + msgs.warn("Pressure is not in header") + return 0.0 + elif meta_key == 'temperature': + try: + return headarr[0]['TAMBIENT'] # Must be in astropy.units.deg_C + except KeyError: + msgs.warn("Temperature is not in header") + return 0.0 + elif meta_key == 'humidity': + try: + return headarr[0]['HUMIDITY'] + except KeyError: + msgs.warn("Humidity is not in header") + return 0.0 + elif meta_key == 'obstime': + return Time(headarr[0]['DATE-END']) + elif meta_key == 'gain': + return headarr[0]['GAIN'] + elif meta_key == 'slitwid': + if self.name == "gtc_maat": + msgs.warn("HACK FOR MAAT SIMS --- NEED TO GET SLICER SCALE FROM HEADER, IDEALLY") + return 0.305 / 3600.0 + elif self.name == "gtc_osiris_plus": + return headarr[0]['SLITW']/3600.0 # Slit width in degrees + else: + msgs.error("Could not determine slit width from header information") + + def configuration_keys(self): + """ + Return the metadata keys that define a unique instrument + configuration. + + This list is used by :class:`~pypeit.metadata.PypeItMetaData` to + identify the unique configurations among the list of frames read + for a given reduction. + + Returns: + :obj:`list`: List of keywords of data pulled from file headers + and used to constuct the :class:`~pypeit.metadata.PypeItMetaData` + object. + """ + return ['dispname', 'decker', 'binning'] + + def check_frame_type(self, ftype, fitstbl, exprng=None): + """ + Check for frames of the provided type. + + Args: + ftype (:obj:`str`): + Type of frame to check. Must be a valid frame type; see + frame-type :ref:`frame_type_defs`. + fitstbl (`astropy.table.Table`_): + The table with the metadata for one or more frames to check. + exprng (:obj:`list`, optional): + Range in the allowed exposure time for a frame of type + ``ftype``. See + :func:`pypeit.core.framematch.check_frame_exptime`. + + Returns: + `numpy.ndarray`_: Boolean array with the flags selecting the + exposures in ``fitstbl`` that are ``ftype`` type frames. + """ + good_exp = framematch.check_frame_exptime(fitstbl['exptime'], exprng) + if ftype in ['science', 'standard']: + return good_exp & (np.logical_not(np.char.startswith(np.char.lower(fitstbl['target']), 'lamp'))) & \ + (np.char.lower(fitstbl['target']) != 'spectralflat') & \ + (np.char.lower(fitstbl['target']) != 'bias') + if ftype in ['arc', 'tilt']: + return good_exp & (np.char.startswith(np.char.lower(fitstbl['target']), 'lamp')) + if ftype in ['pixelflat', 'trace', 'illumflat']: + return good_exp & (np.char.lower(fitstbl['target']) == 'spectralflat') + if ftype == 'bias': + return good_exp & (np.char.lower(fitstbl['target']) == 'bias') + + msgs.warn('Cannot determine if frames are of type {0}.'.format(ftype)) + return np.zeros(len(fitstbl), dtype=bool) + + def config_independent_frames(self): + """ + Define frame types that are independent of the fully defined + instrument configuration. + + Bias and dark frames are considered independent of a configuration. + Standards are assigned to the correct configuration frame group by + grism (i.e. ignoring that they are taken with a wider slit). + See :func:`~pypeit.metadata.PypeItMetaData.set_configurations`. + + Returns: + :obj:`dict`: Dictionary where the keys are the frame types that + are configuration independent and the values are the metadata + keywords that can be used to assign the frames to a configuration + group. + """ + return {'standard': 'dispname','bias': None, 'dark': None} + + def config_specific_par(self, scifile, inp_par=None): + """ + Modify the ``PypeIt`` parameters to hard-wired values used for + specific instrument configurations. + + Args: + scifile (:obj:`str`): + File to use when determining the configuration and how + to adjust the input parameters. + inp_par (:class:`~pypeit.par.parset.ParSet`, optional): + Parameter set used for the full run of PypeIt. If None, + use :func:`default_pypeit_par`. + + Returns: + :class:`~pypeit.par.parset.ParSet`: The PypeIt parameter set + adjusted for configuration specific parameter values. + """ + # Start with instrument wide + par = super().config_specific_par(scifile, inp_par=inp_par) + + if self.get_meta_value(scifile, 'idname') == 'OsirisMOS': + par['reduce']['findobj']['find_trim_edge'] = [1,1] + par['calibrations']['slitedges']['sync_predict'] = 'pca' + par['calibrations']['slitedges']['det_buffer'] = 1 + elif self.get_meta_value(scifile, 'idname') == 'OsirisLongSlitSpectroscopy': + # Do not tweak the slit edges for longslit + par['calibrations']['flatfield']['tweak_slits'] = False + + # Wavelength calibration and setup-dependent parameters + if self.get_meta_value(scifile, 'dispname') == 'R300B': + # par['calibrations']['wavelengths']['wv_cen'] = 4405. + # par['calibrations']['wavelengths']['disp'] = 4.96 + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R300B.fits' + par['reduce']['findobj']['find_min_max'] = [750, 2051] + par['calibrations']['slitedges']['det_min_spec_length'] = 0.25 + par['calibrations']['slitedges']['fit_min_spec_length'] = 0.25 + par['calibrations']['slitedges']['smash_range'] = [0.38, 0.62] + par['calibrations']['flatfield']['slit_illum_finecorr'] = False + par['reduce']['cube']['wave_min'] = 3600.0 + par['reduce']['cube']['wave_max'] = 7200.0 + elif self.get_meta_value(scifile, 'dispname') == 'R300R': + # par['calibrations']['wavelengths']['wv_cen'] = 6635. + # par['calibrations']['wavelengths']['disp'] = 7.74 + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R300R.fits' + par['reduce']['findobj']['find_min_max'] = [750, 2051] + par['calibrations']['slitedges']['det_min_spec_length'] = 0.25 + par['calibrations']['slitedges']['fit_min_spec_length'] = 0.25 + par['calibrations']['slitedges']['smash_range'] = [0.38, 0.62] + par['calibrations']['flatfield']['slit_illum_finecorr'] = False + par['reduce']['cube']['wave_min'] = 4800.0 + par['reduce']['cube']['wave_max'] = 10000.0 + elif self.get_meta_value(scifile, 'dispname') == 'R500B': + # par['calibrations']['wavelengths']['wv_cen'] = 4745. + # par['calibrations']['wavelengths']['disp'] = 3.54 + par['calibrations']['wavelengths']['lamps'] = ['HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R500B.fits' + par['reduce']['findobj']['find_min_max'] = [500, 2051] + par['reduce']['cube']['wave_min'] = 3600.0 + par['reduce']['cube']['wave_max'] = 7200.0 + elif self.get_meta_value(scifile, 'dispname') == 'R500R': + # par['calibrations']['wavelengths']['wv_cen'] = 7165. + # par['calibrations']['wavelengths']['disp'] = 4.88 + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R500R.fits' + par['reduce']['findobj']['find_min_max'] = [450, 2051] + par['reduce']['cube']['wave_min'] = 4800.0 + par['reduce']['cube']['wave_max'] = 10000.0 + elif self.get_meta_value(scifile, 'dispname') == 'R1000B': + # par['calibrations']['wavelengths']['wv_cen'] = 5455. + # par['calibrations']['wavelengths']['disp'] = 2.12 + par['calibrations']['wavelengths']['lamps'] = ['ArI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R1000B.fits' + elif self.get_meta_value(scifile, 'dispname') == 'R1000R': + # par['calibrations']['wavelengths']['wv_cen'] = 7430. + # par['calibrations']['wavelengths']['disp'] = 2.62 + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R1000R.fits' + elif self.get_meta_value(scifile, 'dispname') == 'R2000B': + # par['calibrations']['wavelengths']['wv_cen'] = 4755. + # par['calibrations']['wavelengths']['disp'] = 0.86 + par['calibrations']['wavelengths']['fwhm'] = 15.0 + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2000B.fits' + elif self.get_meta_value(scifile, 'dispname') == 'R2500U': + # par['calibrations']['wavelengths']['wv_cen'] = 3975. + # par['calibrations']['wavelengths']['disp'] = 0.62 + par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500U.fits' + elif self.get_meta_value(scifile, 'dispname') == 'R2500V': + # par['calibrations']['wavelengths']['wv_cen'] = 5185. + # par['calibrations']['wavelengths']['disp'] = 0.85 + par['calibrations']['wavelengths']['lamps'] = ['HgI','NeI','XeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500V.fits' + elif self.get_meta_value(scifile, 'dispname') == 'R2500R': + # par['calibrations']['wavelengths']['wv_cen'] = 6560. + # par['calibrations']['wavelengths']['disp'] = 1.04 + par['calibrations']['wavelengths']['lamps'] = ['ArI,HgI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500R.fits' + elif self.get_meta_value(scifile, 'dispname') == 'R2500I': + # par['calibrations']['wavelengths']['wv_cen'] = 8650. + # par['calibrations']['wavelengths']['disp'] = 1.36 + par['calibrations']['wavelengths']['lamps'] = ['ArI,XeI,NeI'] + par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500I.fits' + par['sensfunc']['algorithm'] = 'IR' + par['sensfunc']['IR']['telgridfile'] = "TelFit_MaunaKea_3100_26100_R20000.fits" + else: + msgs.warn('gtc_osiris.py: template arc missing for this grism! Trying holy-grail...') + par['calibrations']['wavelengths']['method'] = 'holy-grail' + + # Return + return par + + def bpm(self, filename, det, shape=None, msbias=None): + """ + Generate a default bad-pixel mask. + + Even though they are both optional, either the precise shape for + the image (``shape``) or an example file that can be read to get + the shape (``filename`` using :func:`get_image_shape`) *must* be + provided. + + Args: + filename (:obj:`str` or None): + An example file to use to get the image shape. + det (:obj:`int`): + 1-indexed detector number to use when getting the image + shape from the example file. + shape (tuple, optional): + Processed image shape + Required if filename is None + Ignored if filename is not None + msbias (`numpy.ndarray`_, optional): + Master bias frame used to identify bad pixels. **This is + ignored for KCWI.** + + Returns: + `numpy.ndarray`_: An integer array with a masked value set + to 1 and an unmasked value set to 0. All values are set to + 0. + """ + # Call the base-class method to generate the empty bpm; msbias is always set to None. + bpm_img = super().bpm(filename, det, shape=shape, msbias=None) + + # Extract some header info + head0 = fits.getheader(filename, ext=0) + binning = self.get_meta_value([head0], 'binning') + #binning = head0['CCD-SUM'] + + msgs.warn("Bad pixel mask is not available for det={0:d} binning={1:s}".format(det, binning)) + bc = [] + # Construct a list of the bad columns + # bc = [] + # if det == 1: + # # No bad pixel columns on detector 1 + # pass + # elif det == 2: + # if binning == '1 1': + # # The BPM is based on 2x2 binning data, so the 2x2 numbers are just multiplied by two + # msgs.warn("BPM is likely over-estimated for 1x1 binning") + # bc = [[220, 222, 3892, 4100], + # [952, 954, 2304, 4100]] + # elif binning == '2 2': + # bc = [[110, 111, 1946, 2050], + # [476, 477, 1154, 2050]] + # else: + # msgs.warn("Bad pixel mask is not available for det={0:d} binning={1:s}".format(det, binning)) + # bc = [] + + # Apply these bad columns to the mask + for bb in range(len(bc)): + bpm_img[bc[bb][2]:bc[bb][3] + 1, bc[bb][0]:bc[bb][1] + 1] = 1 + + return bpm_img + + +class GTCMAATSpectrograph(GTCOSIRISPlusSpectrograph): + pypeline = 'IFU' + name = 'gtc_maat' + + def init_meta(self): + super().init_meta() + self.meta['obstime'] = dict(card=None, compound=True, required=False) + self.meta['pressure'] = dict(card=None, compound=True, required=False) + self.meta['temperature'] = dict(card=None, compound=True, required=False) + self.meta['humidity'] = dict(card=None, compound=True, required=False) + + @classmethod + def default_pypeit_par(cls): + par = super().default_pypeit_par() + + # LACosmics parameters + par['scienceframe']['process']['sigclip'] = 4.0 + par['scienceframe']['process']['objlim'] = 1.5 + par['scienceframe']['process']['use_illumflat'] = False # illumflat is applied when building the relative scale image in reduce.py, so should be applied to scienceframe too. + par['scienceframe']['process']['use_specillum'] = False # apply relative spectral illumination + par['scienceframe']['process']['spat_flexure_correct'] = False # don't correct for spatial flexure - varying spatial illumination profile could throw this correction off. Also, there's no way to do astrometric correction if we can't correct for spatial flexure of the contbars frames + par['scienceframe']['process']['use_biasimage'] = False + par['scienceframe']['process']['use_darkimage'] = False + par['calibrations']['flatfield']['slit_illum_finecorr'] = False + # Don't do 1D extraction for 3D data - it's meaningless because the DAR correction must be performed on the 3D data. + par['reduce']['extraction']['skip_extraction'] = True # Because extraction occurs before the DAR correction, don't extract + + # Decrease the wave tilts order, given the shorter slits of the IFU + par['calibrations']['tilts']['spat_order'] = 1 + par['calibrations']['tilts']['spec_order'] = 1 + + # Make sure that this is reduced as a slit (as opposed to fiber) spectrograph + par['reduce']['cube']['slit_spec'] = True + par['reduce']['cube']['combine'] = False # Make separate spec3d files from the input spec2d files + + # Sky subtraction parameters + par['reduce']['skysub']['no_poly'] = True + par['reduce']['skysub']['bspline_spacing'] = 0.6 + par['reduce']['skysub']['joint_fit'] = False + par['reduce']['findobj']['skip_skysub'] = True + par['reduce']['findobj']['skip_final_global'] = True + + # Don't correct flexure by default, but you should use slitcen, + # because this is a slit-based IFU where no objects are extracted. + par['flexure']['spec_method'] = 'skip' + par['flexure']['spec_maxshift'] = 2.5 # Just in case someone switches on spectral flexure, this needs to be minimal + + # Flux calibration parameters + par['sensfunc']['UVIS']['extinct_correct'] = False # This must be False - the extinction correction is performed when making the datacube + + return par + + def get_wcs(self, hdr, slits, platescale, wave0, dwv, spatial_scale=None): + """ + Construct/Read a World-Coordinate System for a frame. + + Args: + hdr (`astropy.io.fits.Header`_): + The header of the raw frame. The information in this + header will be extracted and returned as a WCS. + slits (:class:`~pypeit.slittrace.SlitTraceSet`): + Slit traces. + platescale (:obj:`float`): + The platescale of an unbinned pixel in arcsec/pixel (e.g. + detector.platescale). + wave0 (:obj:`float`): + The wavelength zeropoint. + dwv (:obj:`float`): + Change in wavelength per spectral pixel. + + Returns: + `astropy.wcs.wcs.WCS`_: The world-coordinate system. + """ + msgs.info("Calculating the WCS") + # Get the x and y binning factors, and the typical slit length + binspec, binspat = parse.parse_binning(self.get_meta_value([hdr], 'binning')) + + # Get the pixel and slice scales + pxscl = platescale * binspat / 3600.0 # Need to convert arcsec to degrees + slscl = self.get_meta_value([hdr], 'slitwid') + if spatial_scale is not None: + if pxscl > spatial_scale / 3600.0: + msgs.warn("Spatial scale requested ({0:f}'') is less than the pixel scale ({1:f}'')".format(spatial_scale, pxscl*3600.0)) + # Update the pixel scale + pxscl = spatial_scale / 3600.0 # 3600 is to convert arcsec to degrees + + # Get the typical slit length (this changes by ~0.3% over all slits, so a constant is fine for now) + slitlength = int(np.round(np.median(slits.get_slitlengths(initial=True, median=True)))) + + # Get RA/DEC + raval = self.get_meta_value([hdr], 'ra') + decval = self.get_meta_value([hdr], 'dec') + + # Create a coordinate + coord = SkyCoord(raval, decval, unit=(units.deg, units.deg)) + + # Get rotator position + msgs.warn("HACK FOR MAAT SIMS --- NEED TO FIGURE OUT RPOS and RREF FOR MAAT FROM HEADER INFO") + if 'ROTPOSN' in hdr: + rpos = hdr['ROTPOSN'] + else: + rpos = 0. + if 'ROTREFAN' in hdr: + rref = hdr['ROTREFAN'] + else: + rref = 0. + # Get the offset and PA + rotoff = 0.0 # IFU-SKYPA offset (degrees) + skypa = rpos + rref # IFU position angle (degrees) + crota = np.radians(-(skypa + rotoff)) + + # Calculate the fits coordinates + cdelt1 = -slscl + cdelt2 = pxscl + if coord is None: + ra = 0. + dec = 0. + crota = 1 + else: + ra = coord.ra.degree + dec = coord.dec.degree + # Calculate the CD Matrix + cd11 = cdelt1 * np.cos(crota) # RA degrees per column + cd12 = abs(cdelt2) * np.sign(cdelt1) * np.sin(crota) # RA degrees per row + cd21 = -abs(cdelt1) * np.sign(cdelt2) * np.sin(crota) # DEC degress per column + cd22 = cdelt2 * np.cos(crota) # DEC degrees per row + # Get reference pixels (set these to the middle of the FOV) + crpix1 = 11 # i.e. see get_datacube_bins (11 is used as the reference point - somewhere in the middle of the FOV) + crpix2 = slitlength / 2. + crpix3 = 1. + # Get the offset + msgs.warn("HACK FOR MAAT SIMS --- Need to obtain offset from header?") + off1 = 0. + off2 = 0. + off1 /= binspec + off2 /= binspat + crpix1 += off1 + crpix2 += off2 + + # Create a new WCS object. + msgs.info("Generating MAAT WCS") + w = wcs.WCS(naxis=3) + w.wcs.equinox = hdr['EQUINOX'] + w.wcs.name = 'MAAT' + w.wcs.radesys = 'FK5' + # Insert the coordinate frame + w.wcs.cname = ['MAAT RA', 'MAAT DEC', 'MAAT Wavelength'] + w.wcs.cunit = [units.degree, units.degree, units.Angstrom] + w.wcs.ctype = ["RA---TAN", "DEC--TAN", "WAVE"] + w.wcs.crval = [ra, dec, wave0] # RA, DEC, and wavelength zeropoints + w.wcs.crpix = [crpix1, crpix2, crpix3] # RA, DEC, and wavelength reference pixels + w.wcs.cd = np.array([[cd11, cd12, 0.0], [cd21, cd22, 0.0], [0.0, 0.0, dwv]]) + w.wcs.lonpole = 180.0 # Native longitude of the Celestial pole + w.wcs.latpole = 0.0 # Native latitude of the Celestial pole + + return w + + def get_datacube_bins(self, slitlength, minmax, num_wave): + r""" + Calculate the bin edges to be used when making a datacube. + + Args: + slitlength (:obj:`int`): + Length of the slit in pixels + minmax (`numpy.ndarray`_): + An array with the minimum and maximum pixel locations on each + slit relative to the reference location (usually the centre + of the slit). Shape must be :math:`(N_{\rm slits},2)`, and is + typically the array returned by + :func:`~pypeit.slittrace.SlitTraceSet.get_radec_image`. + num_wave (:obj:`int`): + Number of wavelength steps. Given by:: + int(round((wavemax-wavemin)/delta_wave)) + + Args: + :obj:`tuple`: Three 1D `numpy.ndarray`_ providing the bins to use + when constructing a histogram of the spec2d files. The elements + are :math:`(x,y,\lambda)`. + """ + xbins = np.arange(1 + 23) - 11.0 - 0.5 # 23 is for 23 slices, and 11 is the reference slit + ybins = np.linspace(np.min(minmax[:, 0]), np.max(minmax[:, 1]), 1+slitlength) - 0.5 + spec_bins = np.arange(1+num_wave) - 0.5 + return xbins, ybins, spec_bins + + +class GTCOSIRISSpectrograph(spectrograph.Spectrograph): + """ + Child of Spectrograph to handle GTC/OSIRIS specific code (old detector: MAT-44-82) + """ ndet = 2 name = 'gtc_osiris' telescope = telescopes.GTCTelescopePar() @@ -178,9 +796,11 @@ def compound_meta(self, headarr, meta_key): object: Metadata value read from the header(s). """ if meta_key == 'binning': - binspatial, binspec = parse.parse_binning(headarr[0]['CCDSUM']) + binspatial, binspec = parse.parse_binning(headarr[0]['CCD-SUM']) binning = parse.binning2string(binspec, binspatial) return binning + elif meta_key == 'obstime': + return Time(headarr[0]['DATE-END']) def configuration_keys(self): """ @@ -384,7 +1004,7 @@ def bpm(self, filename, det, shape=None, msbias=None): # Extract some header info head0 = fits.getheader(filename, ext=0) - binning = head0['CCDSUM'] + binning = head0['CCD-SUM'] # Construct a list of the bad columns bc = [] From f31dbc15dc49282092abfd5783e730c65fe22928 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 18:41:41 -0700 Subject: [PATCH 05/46] tox.ini - deprecate py37, update astropy lts, fill in numpy backversions --- tox.ini | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tox.ini b/tox.ini index 7811c22df4..7d19933a45 100644 --- a/tox.ini +++ b/tox.ini @@ -1,9 +1,9 @@ [tox] envlist = - py{37,38,39}-test{,-alldeps,-pyside2,-pyqt5,-shapely}{,-cov} - py{37,38,39}-test-numpy{118,119} - py{37,38,39}-test-astropy{lts,42} - py{37,38,39}-test-{numpy,astropy,linetools,ginga}dev + py{38,39,310,311}-test{,-alldeps,-pyside2,-pyqt5,-shapely}{,-cov} + py{38,39,310,311}-test-numpy{118,119,120,121,122,123} + py{38,39,310,311}-test-astropylts + py{38,39,310,311}-test-{numpy,astropy,linetools,ginga}dev codestyle requires = setuptools >= 30.3.0 @@ -39,7 +39,10 @@ description = cov: and test coverage numpy118: with numpy 1.18.* numpy119: with numpy 1.19.* - astropy42: with astropy 4.2.* + numpy120: with numpy 1.20.* + numpy121: with numpy 1.21.* + numpy122: with numpy 1.22.* + numpy123: with numpy 1.23.* astropylts: with the latest astropy LTS # The following provides some specific pinnings for key packages @@ -48,9 +51,12 @@ deps = cov: coverage numpy118: numpy==1.18.* numpy119: numpy==1.19.* + numpy120: numpy==1.20.* + numpy121: numpy==1.21.* + numpy122: numpy==1.22.* + numpy123: numpy==1.23.* - astropy42: astropy==4.2.* - astropylts: astropy==4.0.* + astropylts: astropy==5.0.* numpydev: :NIGHTLY:numpy astropydev: git+https://github.com/astropy/astropy.git#egg=astropy From 16e8e0cb0d5dc6647e3679b3abd85e8f95befb2e Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 18:42:20 -0700 Subject: [PATCH 06/46] tweak CI workflows to use python 3.9 and 3.10; update versions of actions being used --- .github/workflows/ci_cron.yml | 6 +++--- .github/workflows/ci_tests.yml | 25 +++++++++++-------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci_cron.yml b/.github/workflows/ci_cron.yml index c5ffe67aed..718ea09dec 100644 --- a/.github/workflows/ci_cron.yml +++ b/.github/workflows/ci_cron.yml @@ -15,15 +15,15 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python: [3.8, 3.9] + python: ['3.9', '3.10'] toxenv: [test-alldeps, test-numpydev, test-linetoolsdev, test-gingadev, test-astropydev, conda] steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: develop - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: Install base dependencies diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index f4a41ce476..7061e577af 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -6,9 +6,6 @@ on: - release - develop pull_request: - schedule: - # run every Monday at 6am UTC - - cron: '0 6 * * 1' env: SETUP_XVFB: True # avoid issues if something tries to open a GUI window @@ -20,13 +17,13 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python: [3.8, 3.9] + python: ['3.9', '3.10'] toxenv: [test, test-alldeps-cov, test-linetoolsdev, test-gingadev, test-astropydev, conda] steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: Install base dependencies @@ -37,7 +34,7 @@ jobs: tox -e ${{ matrix.toxenv }} - name: Upload coverage to codecov if: "contains(matrix.toxenv, '-cov')" - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV }} file: ./coverage.xml @@ -51,13 +48,13 @@ jobs: fail-fast: false matrix: os: [windows-latest, macos-latest] - python: [3.8, 3.9] + python: ['3.9', '3.10'] toxenv: [test-alldeps] steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: Install base dependencies @@ -89,7 +86,7 @@ jobs: run: | yum update -y && yum install -y wget git gcc - name: Check out repository - uses: actions/checkout@v1 + uses: actions/checkout@v3 with: fetch-depth: 0 - name: Install and configure miniconda @@ -109,11 +106,11 @@ jobs: codestyle: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Python codestyle check - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: - python-version: 3.9 + python-version: '3.10' - name: Install base dependencies run: | python -m pip install --upgrade pip From 8155e769d6fa1b4246b4e868f29496cdd1c4eb07 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 20:14:15 -0700 Subject: [PATCH 07/46] fetch depth 0 no longer works; setuptools can't find version --- .github/workflows/ci_tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 7061e577af..183a433464 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -87,8 +87,6 @@ jobs: yum update -y && yum install -y wget git gcc - name: Check out repository uses: actions/checkout@v3 - with: - fetch-depth: 0 - name: Install and configure miniconda # Restrict to 3.9 until we migrate to 3.10 run: | From 62bf86b9fc3b1a60c26fa0964e140b828243d0fe Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 20:15:21 -0700 Subject: [PATCH 08/46] fix python_requires in setup.cfg --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 5005543234..8a9ef079bb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ classifiers = zip_safe = False use_2to3=False packages = find: -python_requires = >=3.8,<3.10 +python_requires = >=3.8,<=3.11 setup_requires = setuptools_scm include_package_data = True install_requires = From b6039a72d11982b3dc816ec092811337bf308cf6 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 22:45:21 -0700 Subject: [PATCH 09/46] add repo so git 2.x will get installed on centos 7 --- .github/workflows/ci_tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 183a433464..f9e7b953ec 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -84,6 +84,7 @@ jobs: steps: - name: Install base CentOS dependencies run: | + yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm yum update -y && yum install -y wget git gcc - name: Check out repository uses: actions/checkout@v3 From 1779d75cab05ced18ec1e03fc2047c4b20760b29 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 22:59:42 -0700 Subject: [PATCH 10/46] go back to fetch depth 0 since that wasn't the problem; try installing libgomp in centos --- .github/workflows/ci_tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index f9e7b953ec..dd650567a6 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -85,9 +85,11 @@ jobs: - name: Install base CentOS dependencies run: | yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm - yum update -y && yum install -y wget git gcc + yum update -y && yum install -y wget git gcc libgomp - name: Check out repository uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Install and configure miniconda # Restrict to 3.9 until we migrate to 3.10 run: | From 6b2d5f0f719e0408f7efafc29448ba070729296e Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Fri, 3 Feb 2023 23:43:34 -0700 Subject: [PATCH 11/46] test files still not getting installed on centos; trying pip install -e as a test --- .github/workflows/ci_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index dd650567a6..249a96ba13 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -102,7 +102,7 @@ jobs: source ~/.bashrc && python -m pip install --upgrade pip tox && python --version - name: Test with tox run: | - source ~/.bashrc && tox -e ${{ matrix.toxenv }} + source ~/.bashrc && pip install -e . && tox -e ${{ matrix.toxenv }} codestyle: runs-on: ubuntu-latest From 204d285ba91e03b851945d513c535d16a805b6be Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 03:11:17 -0700 Subject: [PATCH 12/46] numpy < 1.20 dropped as of jan 2023 so drop those here too --- tox.ini | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tox.ini b/tox.ini index 7d19933a45..f6ff2aba78 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] envlist = py{38,39,310,311}-test{,-alldeps,-pyside2,-pyqt5,-shapely}{,-cov} - py{38,39,310,311}-test-numpy{118,119,120,121,122,123} + py{38,39,310,311}-test-numpy{120,121,122,123} py{38,39,310,311}-test-astropylts py{38,39,310,311}-test-{numpy,astropy,linetools,ginga}dev codestyle @@ -37,8 +37,6 @@ description = devdeps: with the latest developer version of key dependencies oldestdeps: with the oldest supported version of key dependencies cov: and test coverage - numpy118: with numpy 1.18.* - numpy119: with numpy 1.19.* numpy120: with numpy 1.20.* numpy121: with numpy 1.21.* numpy122: with numpy 1.22.* @@ -49,8 +47,6 @@ description = deps = cov: coverage - numpy118: numpy==1.18.* - numpy119: numpy==1.19.* numpy120: numpy==1.20.* numpy121: numpy==1.21.* numpy122: numpy==1.22.* From 96698200b3fd8d591d2a9c96405ba07633bddfd2 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 03:11:41 -0700 Subject: [PATCH 13/46] try adding tests dir to manifest to see if that helps conda CI --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index 1e3df766e2..019c6268bc 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,6 +6,7 @@ include setup.cfg recursive-include pypeit *.pyx *.c *.pxd *.h recursive-include pypeit/data * +recursive-include pypeit/tests * recursive-include docs * recursive-include licenses * recursive-include cextern * From 949685265b308bfff9dea70dcf367568e6bdb5ca Mon Sep 17 00:00:00 2001 From: Dave Date: Mon, 6 Feb 2023 12:49:24 +0000 Subject: [PATCH 14/46] Various NOT-ALFOSC updates -Added missing NOT-ALFOSC preferred standards -Added a couple of NIST HeI lines observed in the He arcs for Grism3 of NOT-ALFOSC -Added reid arxiv solution for Grism 3 of NOT-ALFOSC --- pypeit/data/arc_lines/lists/HeI_lines.dat | 3 + .../reid_arxiv/not_alfosc_grism3.fits | Bin 0 -> 40320 bytes pypeit/data/standards/ing/ing_info.txt | 5 +- pypeit/data/standards/ing/mSP0305p261.dat | 82 ++++++++++++++++++ pypeit/data/standards/ing/mSP0946p139.dat | 81 +++++++++++++++++ pypeit/data/standards/ing/mSP1446p259.dat | 81 +++++++++++++++++ pypeit/spectrographs/not_alfosc.py | 4 +- 7 files changed, 254 insertions(+), 2 deletions(-) create mode 100644 pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism3.fits create mode 100644 pypeit/data/standards/ing/mSP0305p261.dat create mode 100644 pypeit/data/standards/ing/mSP0946p139.dat create mode 100644 pypeit/data/standards/ing/mSP1446p259.dat diff --git a/pypeit/data/arc_lines/lists/HeI_lines.dat b/pypeit/data/arc_lines/lists/HeI_lines.dat index b8686823fe..f358c6460b 100644 --- a/pypeit/data/arc_lines/lists/HeI_lines.dat +++ b/pypeit/data/arc_lines/lists/HeI_lines.dat @@ -2,7 +2,10 @@ | ion | wave | NIST | Instr | amplitude | Source | | HeI | 3889.7500 | 1 | 4 | 2565 | kastb_600_PYPIT.json | | HeI | 4027.3292 | 1 | 4 | 153 | kastb_600_PYPIT.json | +| HeI | 4472.7350 | 1 | 0 | 30 | ALFOSC | | HeI | 4714.4644 | 1 | 4 | 275 | kastb_600_PYPIT.json | | HeI | 4923.3053 | 1 | 4 | 656 | kastb_600_PYPIT.json | | HeI | 5017.0772 | 1 | 4 | 2341 | kastb_600_PYPIT.json | | HeI | 5877.2490 | 1 | 0 | 1000 | FORS2 | +| HeI | 6679.9950 | 1 | 0 | 300 | ALFOSC | +| HeI | 7067.1380 | 1 | 0 | 200 | ALFOSC | diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism3.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism3.fits new file mode 100644 index 0000000000000000000000000000000000000000..26dc06a568b92010c48a7fcb038cdc62f4c893ce GIT binary patch literal 40320 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�s=qM2fW%4 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 Dvq%Tu literal 0 HcmV?d00001 diff --git a/pypeit/data/standards/ing/ing_info.txt b/pypeit/data/standards/ing/ing_info.txt index 1f63d64a45..22b9d0473a 100644 --- a/pypeit/data/standards/ing/ing_info.txt +++ b/pypeit/data/standards/ing/ing_info.txt @@ -1,4 +1,4 @@ -# Incomplete list of the ING (GTC preferred) standards +# Incomplete list of the ING (GTC and NOT preferred) standards # http://www.gtc.iac.es/observing/media/specphotstars.html # Not all stars in this list are included - most of the standards # listed on the above website are already covered elsewhere in PypeIt. @@ -12,3 +12,6 @@ mross640.dat Ross640 16:28:25.03 +36:46:15.4 mhz15.dat HZ15 04:40:39.32 +08:40:45.3 mSP0644p375.dat SP0644+375 06:47:37.99 +37:30:57.0 mgrw708.dat GRW+708247 19:00:10.25 +70:39:51.2 +mSP0305p261.dat SP0305+261 03:08:25.60 +26:19:51.0 +mSP0946p139.dat SP0946+139 09:48:56.10 +13:44:39.0 +mSP1446p259.dat SP1446+259 14:49:02.40 +25:42:09.0 diff --git a/pypeit/data/standards/ing/mSP0305p261.dat b/pypeit/data/standards/ing/mSP0305p261.dat new file mode 100644 index 0000000000..401d148651 --- /dev/null +++ b/pypeit/data/standards/ing/mSP0305p261.dat @@ -0,0 +1,82 @@ +* +* H D 1 9 4 4 5 +* +* Table file for HD19445 flux standard, based on data +* from Oke and Gunn, Ap.J. 266,713-717 Mar 1983. These data +* represent directly measured fluxes, and should be used accordingly. +* This file is designed for use with the Figaro routine GSPIKE. +* +SET .Z.UNITS = "AB Magnitudes" +SET .Z.LABEL = "Flux" +SET .Z.REVSCALE = 1 +SET .Z.MAGFLAG = 1 +SET .TABLE.BANDWIDTH = 40 +* +3080 9.476 40 +3160 9.391 40 +3240 9.310 40 +3320 9.232 40 +3400 9.168 40 +3480 9.103 40 +3560 9.039 40 +3640 8.979 40 +3680 8.945 40 +3720 8.919 40 +3760 8.849 40 +3800 8.731 40 +3840 8.744 40 +3880 8.702 40 +3920 8.702 40 +3960 8.690 40 +3980 8.681 40 +4000 8.500 40 +4020 8.483 40 +4060 8.479 40 +4100 8.527 40 +4140 8.403 40 +4200 8.385 40 +4240 8.373 40 +4260 8.378 40 +4300 8.434 40 +4340 8.483 40 +4380 8.296 40 +4400 8.293 40 +4560 8.235 40 +4760 8.180 40 +4800 8.157 40 +4820 8.166 40 +4860 8.250 40 +4900 8.136 40 +4920 8.134 40 +4960 8.130 40 +5000 8.118 40 +5120 8.081 40 +5240 8.048 40 +5400 8.014 40 +5560 7.982 40 +5760 7.948 40 +6020 7.908 40 +6420 7.862 40 +6460 7.858 40 +6500 7.854 40 +6540 7.890 40 +6560 7.948 40 +6580 7.907 40 +6620 7.845 40 +6660 7.843 40 +6700 7.840 40 +6740 7.839 40 +6780 7.837 40 +7100 7.812 40 +7460 7.790 40 +7780 7.776 40 +8100 7.760 40 +8380 7.759 40 +8780 7.755 40 +9300 7.752 40 +9700 7.752 40 +9940 7.752 40 +10260 7.752 40 +10820 7.760 40 +11140 7.760 40 +12000 7.763 40 diff --git a/pypeit/data/standards/ing/mSP0946p139.dat b/pypeit/data/standards/ing/mSP0946p139.dat new file mode 100644 index 0000000000..2b05dca26b --- /dev/null +++ b/pypeit/data/standards/ing/mSP0946p139.dat @@ -0,0 +1,81 @@ +* +* H D 8 4 9 3 7 +* +* Table file for the flux standard star HD84937, taken from +* Oke and Gunn, Ap.J. 266, 713 (1983). Note that the data +* points are all for 40 A bands. This file is designed for +* use with the Figaro routine GSPIKE. +* +SET .Z.UNITS = "AB Magnitudes" +SET .Z.LABEL = "Flux" +SET .Z.REVSCALE = 1 +SET .TABLE.BANDWIDTH = 40 +* + 3080 9.677 40 + 3160 9.610 40 + 3240 9.542 40 + 3320 9.480 40 + 3400 9.422 40 + 3480 9.370 40 + 3560 9.310 40 + 3640 9.269 40 + 3680 9.243 40 + 3720 9.205 40 + 3760 9.099 40 + 3800 8.937 40 + 3840 8.910 40 + 3880 8.873 40 + 3920 8.815 40 + 3960 8.843 40 + 3980 8.841 40 + 4000 8.667 40 + 4020 8.642 40 + 4060 8.640 40 + 4100 8.726 40 + 4140 8.572 40 + 4200 8.548 40 + 4240 8.543 40 + 4260 8.547 40 + 4300 8.602 40 + 4340 8.691 40 + 4380 8.522 40 + 4400 8.496 40 + 4560 8.448 40 + 4760 8.400 40 + 4800 8.400 40 + 4820 8.398 40 + 4860 8.522 40 + 4900 8.393 40 + 4920 8.383 40 + 4960 8.359 40 + 5000 8.351 40 + 5120 8.332 40 + 5240 8.315 40 + 5400 8.290 40 + 5560 8.266 40 + 5760 8.237 40 + 6020 8.202 40 + 6420 8.174 40 + 6460 8.171 40 + 6500 8.178 40 + 6540 8.245 40 + 6560 8.313 40 + 6580 8.244 40 + 6620 8.176 40 + 6660 8.166 40 + 6700 8.162 40 + 6740 8.161 40 + 6780 8.150 40 + 7100 8.133 40 + 7460 8.125 40 + 7780 8.123 40 + 8100 8.112 40 + 8380 8.111 40 + 8780 8.115 40 + 9300 8.119 40 + 9700 8.123 40 + 9940 8.130 40 +10260 8.137 40 +10820 8.150 40 +11140 8.160 40 +12000 8.180 40 diff --git a/pypeit/data/standards/ing/mSP1446p259.dat b/pypeit/data/standards/ing/mSP1446p259.dat new file mode 100644 index 0000000000..4dbe184088 --- /dev/null +++ b/pypeit/data/standards/ing/mSP1446p259.dat @@ -0,0 +1,81 @@ +* +* B D + 2 6 2 6 0 6 +* +* Table file for the flux standard star BD+26 2606, taken from +* Oke and Gunn, Ap.J. 266, 713 (1983). Note that the data +* points are all for 40 A bands. This file is designed for +* use with the Figaro routine GSPIKE. +* +SET .Z.UNITS = "AB Magnitudes" +SET .Z.LABEL = "Flux" +SET .Z.REVSCALE = 1 +SET .TABLE.BANDWIDTH = 40 +* + 3080 11.155 40 + 3160 11.072 40 + 3240 10.988 40 + 3320 10.935 40 + 3400 10.866 40 + 3480 10.806 40 + 3560 10.750 40 + 3640 10.698 40 + 3680 10.670 40 + 3720 10.651 40 + 3760 10.540 40 + 3800 10.394 40 + 3840 10.393 40 + 3880 10.356 40 + 3920 10.292 40 + 3960 10.318 40 + 3980 10.317 40 + 4000 10.144 40 + 4020 10.116 40 + 4060 10.104 40 + 4100 10.184 40 + 4140 10.060 40 + 4200 10.021 40 + 4240 10.005 40 + 4260 10.008 40 + 4300 10.060 40 + 4340 10.139 40 + 4380 9.971 40 + 4400 9.955 40 + 4560 9.908 40 + 4760 9.843 40 + 4800 9.824 40 + 4820 9.822 40 + 4860 9.930 40 + 4900 9.804 40 + 4920 9.800 40 + 4960 9.782 40 + 5000 9.768 40 + 5120 9.741 40 + 5240 9.719 40 + 5400 9.693 40 + 5560 9.660 40 + 5760 9.630 40 + 6020 9.594 40 + 6420 9.552 40 + 6460 9.548 40 + 6500 9.550 40 + 6540 9.590 40 + 6560 9.637 40 + 6580 9.597 40 + 6620 9.545 40 + 6660 9.539 40 + 6700 9.535 40 + 6740 9.532 40 + 6780 9.527 40 + 7100 9.502 40 + 7460 9.485 40 + 7780 9.474 40 + 8100 9.463 40 + 8380 9.457 40 + 8780 9.457 40 + 9300 9.458 40 + 9700 9.458 40 + 9940 9.461 40 +10260 9.462 40 +10820 9.468 40 +11140 9.473 40 +12000 9.488 40 diff --git a/pypeit/spectrographs/not_alfosc.py b/pypeit/spectrographs/not_alfosc.py index c5b6c35b27..c04078bd7b 100644 --- a/pypeit/spectrographs/not_alfosc.py +++ b/pypeit/spectrographs/not_alfosc.py @@ -270,7 +270,9 @@ def config_specific_par(self, scifile, inp_par=None): par = super().config_specific_par(scifile, inp_par=inp_par) # Wavelength calibrations - if self.get_meta_value(scifile, 'dispname') == 'Grism_#4': + if self.get_meta_value(scifile, 'dispname') == 'Grism_#3': + par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism3.fits' + elif self.get_meta_value(scifile, 'dispname') == 'Grism_#4': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism4.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#7': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism7.fits' From de025f4c5737c890050b0c7c4d89f0ae265931f2 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 11:49:33 -0700 Subject: [PATCH 15/46] add specific entry for numpy 1.24.x so that the type deprecation is explicitly covered --- tox.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tox.ini b/tox.ini index f6ff2aba78..e524ba7a21 100644 --- a/tox.ini +++ b/tox.ini @@ -41,6 +41,7 @@ description = numpy121: with numpy 1.21.* numpy122: with numpy 1.22.* numpy123: with numpy 1.23.* + numpy124: with numpy 1.24.* astropylts: with the latest astropy LTS # The following provides some specific pinnings for key packages @@ -51,6 +52,7 @@ deps = numpy121: numpy==1.21.* numpy122: numpy==1.22.* numpy123: numpy==1.23.* + numpy124: numpy==1.24.* astropylts: astropy==5.0.* From a3b6033ec8bedd8ff8803026f1e86cca722a9720 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 14:36:11 -0700 Subject: [PATCH 16/46] let's see if running tox in develop mode can get around needing to put test files in manifest --- .github/workflows/ci_tests.yml | 2 +- MANIFEST.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 249a96ba13..391922d0d8 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -102,7 +102,7 @@ jobs: source ~/.bashrc && python -m pip install --upgrade pip tox && python --version - name: Test with tox run: | - source ~/.bashrc && pip install -e . && tox -e ${{ matrix.toxenv }} + source ~/.bashrc && tox -e --develop ${{ matrix.toxenv }} codestyle: runs-on: ubuntu-latest diff --git a/MANIFEST.in b/MANIFEST.in index 019c6268bc..96a31cd8ff 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,7 +6,7 @@ include setup.cfg recursive-include pypeit *.pyx *.c *.pxd *.h recursive-include pypeit/data * -recursive-include pypeit/tests * +# recursive-include pypeit/tests * recursive-include docs * recursive-include licenses * recursive-include cextern * From 344b18817734ecc9691e8859dd1e3dac133a154f Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 16:47:26 -0700 Subject: [PATCH 17/46] cron workflow was failing because configuration of numpydev was no longer correct. fixed to follow how astropy does it --- tox.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index e524ba7a21..b0ef727a23 100644 --- a/tox.ini +++ b/tox.ini @@ -9,12 +9,12 @@ requires = setuptools >= 30.3.0 pip >= 19.3.1 isolated_build = true -indexserver = - NIGHTLY = https://pypi.anaconda.org/scipy-wheels-nightly/simple [testenv] # Suppress display of matplotlib plots generated during docs build -setenv = MPLBACKEND=agg +setenv = + MPLBACKEND=agg + numpydev: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/scipy-wheels-nightly/simple # Pass through the following environment variables which may be needed for the CI passenv = HOME,WINDIR,LC_ALL,LC_CTYPE,CC,CI,PYPEIT_DEV @@ -56,7 +56,7 @@ deps = astropylts: astropy==5.0.* - numpydev: :NIGHTLY:numpy + numpydev: numpy>=0.0.dev0 astropydev: git+https://github.com/astropy/astropy.git#egg=astropy linetoolsdev: git+https://github.com/linetools/linetools.git#egg=linetools From 714fe11250f08a9e0f4c2d0e3ba7a1a7faac79e7 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 16:48:04 -0700 Subject: [PATCH 18/46] fix centos test after change to tox command failed --- .github/workflows/ci_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 391922d0d8..dd650567a6 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -102,7 +102,7 @@ jobs: source ~/.bashrc && python -m pip install --upgrade pip tox && python --version - name: Test with tox run: | - source ~/.bashrc && tox -e --develop ${{ matrix.toxenv }} + source ~/.bashrc && tox -e ${{ matrix.toxenv }} codestyle: runs-on: ubuntu-latest From c72108fb117006dfb903fa92847e814ba959020f Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 17:36:51 -0700 Subject: [PATCH 19/46] try making sure setuptools_scm is up to date in the centos test. --- .github/workflows/ci_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index dd650567a6..055c998e72 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -99,7 +99,7 @@ jobs: /conda/bin/conda init - name: Install base dependencies run: | - source ~/.bashrc && python -m pip install --upgrade pip tox && python --version + source ~/.bashrc && python -m pip install --upgrade pip tox setuptools_scm && python --version - name: Test with tox run: | source ~/.bashrc && tox -e ${{ matrix.toxenv }} From c25b09a0b51d5d2300e81bcbd87df688a4246d30 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Mon, 6 Feb 2023 17:49:07 -0700 Subject: [PATCH 20/46] put test file tree back in MANIFEST.in to make centos tests happy --- MANIFEST.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 96a31cd8ff..019c6268bc 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,7 +6,7 @@ include setup.cfg recursive-include pypeit *.pyx *.c *.pxd *.h recursive-include pypeit/data * -# recursive-include pypeit/tests * +recursive-include pypeit/tests * recursive-include docs * recursive-include licenses * recursive-include cextern * From aade1b149b5980f506e6f05579ac7dfd3b9c903d Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 7 Feb 2023 15:55:14 +0000 Subject: [PATCH 21/46] PR comments --- pypeit/flatfield.py | 8 +-- pypeit/spectrographs/gtc_osiris.py | 76 +++------------------------- pypeit/spectrographs/spectrograph.py | 2 +- 3 files changed, 13 insertions(+), 73 deletions(-) diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 57e2a3ff22..f460aca43f 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -289,10 +289,10 @@ def get_spat_bsplines(self, frametype='illum', finecorr=False): pixel_bsplines = self.pixelflat_finecorr illum_bsplines = self.illumflat_finecorr # Do a quick check if no data exist - if pixel_bsplines is not None: - if pixel_bsplines[0].xval is None: pixel_bsplines = None - if illum_bsplines is not None: - if illum_bsplines[0].xval is None: illum_bsplines = None + if pixel_bsplines is not None and pixel_bsplines[0].xval is None: + pixel_bsplines = None + if illum_bsplines is not None and illum_bsplines[0].xval is None: + illum_bsplines = None else: fctxt = "" pixel_bsplines = self.pixelflat_spat_bsplines diff --git a/pypeit/spectrographs/gtc_osiris.py b/pypeit/spectrographs/gtc_osiris.py index 19e064b040..51e0cee1fa 100644 --- a/pypeit/spectrographs/gtc_osiris.py +++ b/pypeit/spectrographs/gtc_osiris.py @@ -54,7 +54,7 @@ def get_detector_par(self, det, hdu=None): """ binning = '1,1' if hdu is None else self.get_meta_value(self.get_headarr(hdu), 'binning') gain = 1.90 if hdu is None else self.get_headarr(hdu)[0]['GAIN'] - ronoise = 4.3 + ronoise = 4.3 if hdu is None else self.get_headarr(hdu)[0]['RDNOISE'] # Detector 1 detector_dict1 = dict( @@ -168,7 +168,7 @@ def compound_meta(self, headarr, meta_key): object: Metadata value read from the header(s). """ if meta_key == 'binning': - binspatial, binspec = parse.parse_binning(headarr[0]['HIERARCH P_BINNING'].split("_")[1]) + binspatial, binspec = parse.parse_binning(headarr[0]['CCDSUM']) binning = parse.binning2string(binspec, binspatial)[::-1] return binning elif meta_key == 'pressure': @@ -198,7 +198,7 @@ def compound_meta(self, headarr, meta_key): msgs.warn("HACK FOR MAAT SIMS --- NEED TO GET SLICER SCALE FROM HEADER, IDEALLY") return 0.305 / 3600.0 elif self.name == "gtc_osiris_plus": - return headarr[0]['SLITW']/3600.0 # Slit width in degrees + return headarr[0]['SLITW']/3600.0 # Convert slit width from arcseconds to degrees else: msgs.error("Could not determine slit width from header information") @@ -239,11 +239,11 @@ def check_frame_type(self, ftype, fitstbl, exprng=None): """ good_exp = framematch.check_frame_exptime(fitstbl['exptime'], exprng) if ftype in ['science', 'standard']: - return good_exp & (np.logical_not(np.char.startswith(np.char.lower(fitstbl['target']), 'lamp'))) & \ + return good_exp & (np.logical_not(np.char.startswith(np.char.lower(fitstbl['target']), 'arclamp'))) & \ (np.char.lower(fitstbl['target']) != 'spectralflat') & \ (np.char.lower(fitstbl['target']) != 'bias') if ftype in ['arc', 'tilt']: - return good_exp & (np.char.startswith(np.char.lower(fitstbl['target']), 'lamp')) + return good_exp & (np.char.startswith(np.char.lower(fitstbl['target']), 'arclamp')) if ftype in ['pixelflat', 'trace', 'illumflat']: return good_exp & (np.char.lower(fitstbl['target']) == 'spectralflat') if ftype == 'bias': @@ -268,7 +268,7 @@ def config_independent_frames(self): keywords that can be used to assign the frames to a configuration group. """ - return {'standard': 'dispname','bias': None, 'dark': None} + return {'standard': 'dispname', 'bias': None, 'dark': None} def config_specific_par(self, scifile, inp_par=None): """ @@ -300,8 +300,6 @@ def config_specific_par(self, scifile, inp_par=None): # Wavelength calibration and setup-dependent parameters if self.get_meta_value(scifile, 'dispname') == 'R300B': - # par['calibrations']['wavelengths']['wv_cen'] = 4405. - # par['calibrations']['wavelengths']['disp'] = 4.96 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R300B.fits' par['reduce']['findobj']['find_min_max'] = [750, 2051] @@ -312,8 +310,6 @@ def config_specific_par(self, scifile, inp_par=None): par['reduce']['cube']['wave_min'] = 3600.0 par['reduce']['cube']['wave_max'] = 7200.0 elif self.get_meta_value(scifile, 'dispname') == 'R300R': - # par['calibrations']['wavelengths']['wv_cen'] = 6635. - # par['calibrations']['wavelengths']['disp'] = 7.74 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R300R.fits' par['reduce']['findobj']['find_min_max'] = [750, 2051] @@ -324,55 +320,37 @@ def config_specific_par(self, scifile, inp_par=None): par['reduce']['cube']['wave_min'] = 4800.0 par['reduce']['cube']['wave_max'] = 10000.0 elif self.get_meta_value(scifile, 'dispname') == 'R500B': - # par['calibrations']['wavelengths']['wv_cen'] = 4745. - # par['calibrations']['wavelengths']['disp'] = 3.54 par['calibrations']['wavelengths']['lamps'] = ['HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R500B.fits' par['reduce']['findobj']['find_min_max'] = [500, 2051] par['reduce']['cube']['wave_min'] = 3600.0 par['reduce']['cube']['wave_max'] = 7200.0 elif self.get_meta_value(scifile, 'dispname') == 'R500R': - # par['calibrations']['wavelengths']['wv_cen'] = 7165. - # par['calibrations']['wavelengths']['disp'] = 4.88 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R500R.fits' par['reduce']['findobj']['find_min_max'] = [450, 2051] par['reduce']['cube']['wave_min'] = 4800.0 par['reduce']['cube']['wave_max'] = 10000.0 elif self.get_meta_value(scifile, 'dispname') == 'R1000B': - # par['calibrations']['wavelengths']['wv_cen'] = 5455. - # par['calibrations']['wavelengths']['disp'] = 2.12 par['calibrations']['wavelengths']['lamps'] = ['ArI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R1000B.fits' elif self.get_meta_value(scifile, 'dispname') == 'R1000R': - # par['calibrations']['wavelengths']['wv_cen'] = 7430. - # par['calibrations']['wavelengths']['disp'] = 2.62 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R1000R.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2000B': - # par['calibrations']['wavelengths']['wv_cen'] = 4755. - # par['calibrations']['wavelengths']['disp'] = 0.86 par['calibrations']['wavelengths']['fwhm'] = 15.0 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2000B.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500U': - # par['calibrations']['wavelengths']['wv_cen'] = 3975. - # par['calibrations']['wavelengths']['disp'] = 0.62 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500U.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500V': - # par['calibrations']['wavelengths']['wv_cen'] = 5185. - # par['calibrations']['wavelengths']['disp'] = 0.85 par['calibrations']['wavelengths']['lamps'] = ['HgI','NeI','XeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500V.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500R': - # par['calibrations']['wavelengths']['wv_cen'] = 6560. - # par['calibrations']['wavelengths']['disp'] = 1.04 par['calibrations']['wavelengths']['lamps'] = ['ArI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500R.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500I': - # par['calibrations']['wavelengths']['wv_cen'] = 8650. - # par['calibrations']['wavelengths']['disp'] = 1.36 par['calibrations']['wavelengths']['lamps'] = ['ArI,XeI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500I.fits' par['sensfunc']['algorithm'] = 'IR' @@ -418,27 +396,11 @@ def bpm(self, filename, det, shape=None, msbias=None): # Extract some header info head0 = fits.getheader(filename, ext=0) binning = self.get_meta_value([head0], 'binning') - #binning = head0['CCD-SUM'] msgs.warn("Bad pixel mask is not available for det={0:d} binning={1:s}".format(det, binning)) - bc = [] # Construct a list of the bad columns - # bc = [] - # if det == 1: - # # No bad pixel columns on detector 1 - # pass - # elif det == 2: - # if binning == '1 1': - # # The BPM is based on 2x2 binning data, so the 2x2 numbers are just multiplied by two - # msgs.warn("BPM is likely over-estimated for 1x1 binning") - # bc = [[220, 222, 3892, 4100], - # [952, 954, 2304, 4100]] - # elif binning == '2 2': - # bc = [[110, 111, 1946, 2050], - # [476, 477, 1154, 2050]] - # else: - # msgs.warn("Bad pixel mask is not available for det={0:d} binning={1:s}".format(det, binning)) - # bc = [] + bc = [] + # TODO :: Add BPM # Apply these bad columns to the mask for bb in range(len(bc)): @@ -904,62 +866,40 @@ def config_specific_par(self, scifile, inp_par=None): # Wavelength calibrations if self.get_meta_value(scifile, 'dispname') == 'R300B': - # par['calibrations']['wavelengths']['wv_cen'] = 4405. - # par['calibrations']['wavelengths']['disp'] = 4.96 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R300B.fits' par['reduce']['findobj']['find_min_max']=[750,2051] elif self.get_meta_value(scifile, 'dispname') == 'R300R': - # par['calibrations']['wavelengths']['wv_cen'] = 6635. - # par['calibrations']['wavelengths']['disp'] = 7.74 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R300R.fits' par['reduce']['findobj']['find_min_max']=[750,2051] elif self.get_meta_value(scifile, 'dispname') == 'R500B': - # par['calibrations']['wavelengths']['wv_cen'] = 4745. - # par['calibrations']['wavelengths']['disp'] = 3.54 par['calibrations']['wavelengths']['lamps'] = ['HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R500B.fits' par['reduce']['findobj']['find_min_max']=[500,2051] elif self.get_meta_value(scifile, 'dispname') == 'R500R': - # par['calibrations']['wavelengths']['wv_cen'] = 7165. - # par['calibrations']['wavelengths']['disp'] = 4.88 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R500R.fits' par['reduce']['findobj']['find_min_max']=[450,2051] elif self.get_meta_value(scifile, 'dispname') == 'R1000B': - # par['calibrations']['wavelengths']['wv_cen'] = 5455. - # par['calibrations']['wavelengths']['disp'] = 2.12 par['calibrations']['wavelengths']['lamps'] = ['ArI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R1000B.fits' elif self.get_meta_value(scifile, 'dispname') == 'R1000R': - # par['calibrations']['wavelengths']['wv_cen'] = 7430. - # par['calibrations']['wavelengths']['disp'] = 2.62 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R1000R.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2000B': - # par['calibrations']['wavelengths']['wv_cen'] = 4755. - # par['calibrations']['wavelengths']['disp'] = 0.86 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2000B.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500U': - # par['calibrations']['wavelengths']['wv_cen'] = 3975. - # par['calibrations']['wavelengths']['disp'] = 0.62 par['calibrations']['wavelengths']['lamps'] = ['XeI,HgI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500U.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500V': - # par['calibrations']['wavelengths']['wv_cen'] = 5185. - # par['calibrations']['wavelengths']['disp'] = 0.85 par['calibrations']['wavelengths']['lamps'] = ['HgI','NeI','XeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500V.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500R': - # par['calibrations']['wavelengths']['wv_cen'] = 6560. - # par['calibrations']['wavelengths']['disp'] = 1.04 par['calibrations']['wavelengths']['lamps'] = ['ArI,HgI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500R.fits' elif self.get_meta_value(scifile, 'dispname') == 'R2500I': - # par['calibrations']['wavelengths']['wv_cen'] = 8650. - # par['calibrations']['wavelengths']['disp'] = 1.36 par['calibrations']['wavelengths']['lamps'] = ['ArI,XeI,NeI'] par['calibrations']['wavelengths']['reid_arxiv'] = 'gtc_osiris_R2500I.fits' par['sensfunc']['algorithm'] = 'IR' diff --git a/pypeit/spectrographs/spectrograph.py b/pypeit/spectrographs/spectrograph.py index b954bcd670..23247c49b2 100644 --- a/pypeit/spectrographs/spectrograph.py +++ b/pypeit/spectrographs/spectrograph.py @@ -1278,7 +1278,7 @@ def get_meta_value(self, inp, meta_key, required=False, value = headarr[self.meta[meta_key]['ext']][self.meta[meta_key]['card']] except (KeyError, TypeError) as e: if ignore_bad_header or not required: - msgs.warn("Bad Header, but we'll try to continue on..") + msgs.warn("Bad Header key ({0:s}), but we'll try to continue on..".format(meta_key)) else: raise e From ccd30166d47ba1bd86b554f89a89db55c0a207c9 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 7 Feb 2023 20:26:41 +0000 Subject: [PATCH 22/46] changes --- CHANGES.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 40cc7a595e..b6f8759840 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,8 @@ - (Hotfix) Specify sphinx versions to correctly work with sphinx_rtd_theme +- (Hotfix) Fixed error when showing flats in Ginga when the fine correction is not performed +- Implemented the upgraded GTC/OSIRIS+ 1.12.0 (31 Jan 2023) -------------------- From 07b8d00ba38a1adf44243bc267abb91d79adb466 Mon Sep 17 00:00:00 2001 From: "T. E. Pickering" Date: Tue, 7 Feb 2023 18:52:28 -0700 Subject: [PATCH 23/46] fix python requires to accept all 3.11.x --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 8a9ef079bb..0021a00546 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ classifiers = zip_safe = False use_2to3=False packages = find: -python_requires = >=3.8,<=3.11 +python_requires = >=3.8,<3.12 setup_requires = setuptools_scm include_package_data = True install_requires = From 549c27eb97cc4e7adcbac5edd1dbdbf885e3f0f2 Mon Sep 17 00:00:00 2001 From: Dave Date: Wed, 8 Feb 2023 03:53:49 +0000 Subject: [PATCH 24/46] Update not_alfosc.py --- pypeit/spectrographs/not_alfosc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pypeit/spectrographs/not_alfosc.py b/pypeit/spectrographs/not_alfosc.py index c04078bd7b..3ee6e3ab80 100644 --- a/pypeit/spectrographs/not_alfosc.py +++ b/pypeit/spectrographs/not_alfosc.py @@ -111,7 +111,8 @@ def default_pypeit_par(cls): # Ignore PCA par['calibrations']['slitedges']['sync_predict'] = 'nearest' par['calibrations']['slitedges']['bound_detector'] = True - # Flats are sometimes quite ugly due to dust on the slit which leads to the erroneous detection of multiple slits. Setting a higher edge_thresh seems to fail because of the bound_detector. + # Flats are sometimes quite ugly due to dust on the slit which leads to the erroneous detection of multiple slits. So set a higher edge_thresh and minimum_slit_gap. + par['calibrations']['slitedges']['edge_thresh'] = 30 par['calibrations']['slitedges']['minimum_slit_gap'] = 15 # Set pixel flat combination method From 914460675487a0825f5fd99f4365b2529bf02a92 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 8 Feb 2023 22:21:29 +0000 Subject: [PATCH 25/46] fix keymap --- pypeit/core/gui/identify.py | 18 +++++------------- pypeit/core/gui/object_find.py | 18 ++++++------------ 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/pypeit/core/gui/identify.py b/pypeit/core/gui/identify.py index 14373ebced..605f4bab81 100644 --- a/pypeit/core/gui/identify.py +++ b/pypeit/core/gui/identify.py @@ -139,19 +139,11 @@ def __init__(self, canvas, axes, spec, specres, detns, line_lists, par, lflag_co self.anntexts = [] # Unset some of the matplotlib keymaps - matplotlib.pyplot.rcParams['keymap.fullscreen'] = '' # toggling fullscreen (Default: f, ctrl+f) - matplotlib.pyplot.rcParams['keymap.home'] = '' # home or reset mnemonic (Default: h, r, home) - matplotlib.pyplot.rcParams['keymap.back'] = '' # forward / backward keys to enable (Default: left, c, backspace) - matplotlib.pyplot.rcParams['keymap.forward'] = '' # left handed quick navigation (Default: right, v) - #matplotlib.pyplot.rcParams['keymap.pan'] = '' # pan mnemonic (Default: p) - matplotlib.pyplot.rcParams['keymap.zoom'] = '' # zoom mnemonic (Default: o) - matplotlib.pyplot.rcParams['keymap.save'] = '' # saving current figure (Default: s) - matplotlib.pyplot.rcParams['keymap.quit'] = '' # close the current figure (Default: ctrl+w, cmd+w) - matplotlib.pyplot.rcParams['keymap.grid'] = '' # switching on/off a grid in current axes (Default: g) - matplotlib.pyplot.rcParams['keymap.grid_minor'] = '' # switching on/off a (minor) grid in current axes (Default: G) - matplotlib.pyplot.rcParams['keymap.yscale'] = '' # toggle scaling of y-axes ('log'/'linear') (Default: l) - matplotlib.pyplot.rcParams['keymap.xscale'] = '' # toggle scaling of x-axes ('log'/'linear') (Default: L, k) - #matplotlib.pyplot.rcParams['keymap.all_axes'] = '' # enable all axes (Default: a) + for key in plt.rcParams.keys(): + if 'keymap' in key: + plt.rcParams[key] = [] + # Enable some useful ones, though + matplotlib.pyplot.rcParams['keymap.pan'] = ['p'] # Initialise the main canvas tools canvas.mpl_connect('draw_event', self.draw_callback) diff --git a/pypeit/core/gui/object_find.py b/pypeit/core/gui/object_find.py index 64c783a324..b06d0370aa 100644 --- a/pypeit/core/gui/object_find.py +++ b/pypeit/core/gui/object_find.py @@ -216,18 +216,12 @@ def __init__(self, canvas, image, frame, det, sobjs, left, right, obj_trace, tra self._object_traces.from_specobj(sobjs, det) # Unset some of the matplotlib keymaps - matplotlib.pyplot.rcParams['keymap.fullscreen'] = '' # toggling fullscreen (Default: f, ctrl+f) - #matplotlib.pyplot.rcParams['keymap.home'] = '' # home or reset mnemonic (Default: h, r, home) - matplotlib.pyplot.rcParams['keymap.back'] = '' # forward / backward keys to enable (Default: left, c, backspace) - matplotlib.pyplot.rcParams['keymap.forward'] = '' # left handed quick navigation (Default: right, v) - #matplotlib.pyplot.rcParams['keymap.pan'] = '' # pan mnemonic (Default: p) - matplotlib.pyplot.rcParams['keymap.zoom'] = '' # zoom mnemonic (Default: o) - matplotlib.pyplot.rcParams['keymap.save'] = '' # saving current figure (Default: s) - matplotlib.pyplot.rcParams['keymap.quit'] = '' # close the current figure (Default: ctrl+w, cmd+w) - matplotlib.pyplot.rcParams['keymap.grid'] = '' # switching on/off a grid in current axes (Default: g) - matplotlib.pyplot.rcParams['keymap.yscale'] = '' # toggle scaling of y-axes ('log'/'linear') (Default: l) - matplotlib.pyplot.rcParams['keymap.xscale'] = '' # toggle scaling of x-axes ('log'/'linear') (Default: L, k) - matplotlib.pyplot.rcParams['keymap.all_axes'] = '' # enable all axes (Default: a) + for key in plt.rcParams.keys(): + if 'keymap' in key: + plt.rcParams[key] = [] + # Enable some useful ones, though + matplotlib.pyplot.rcParams['keymap.home'] = ['h', 'r', 'home'] + matplotlib.pyplot.rcParams['keymap.pan'] = ['p'] # Initialise the main canvas tools canvas.mpl_connect('draw_event', self.draw_callback) From eff92a36f7a176371131d75f495c24338218bb6a Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 9 Feb 2023 16:26:42 +0000 Subject: [PATCH 26/46] ccdsum --- pypeit/spectrographs/gtc_osiris.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pypeit/spectrographs/gtc_osiris.py b/pypeit/spectrographs/gtc_osiris.py index 51e0cee1fa..4d3faa594a 100644 --- a/pypeit/spectrographs/gtc_osiris.py +++ b/pypeit/spectrographs/gtc_osiris.py @@ -758,7 +758,7 @@ def compound_meta(self, headarr, meta_key): object: Metadata value read from the header(s). """ if meta_key == 'binning': - binspatial, binspec = parse.parse_binning(headarr[0]['CCD-SUM']) + binspatial, binspec = parse.parse_binning(headarr[0]['CCDSUM']) binning = parse.binning2string(binspec, binspatial) return binning elif meta_key == 'obstime': @@ -944,7 +944,7 @@ def bpm(self, filename, det, shape=None, msbias=None): # Extract some header info head0 = fits.getheader(filename, ext=0) - binning = head0['CCD-SUM'] + binning = head0['CCDSUM'] # Construct a list of the bad columns bc = [] From 252588a5208c5be8df1711d6bd018ee4ac9dd483 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 10 Feb 2023 09:56:08 +0000 Subject: [PATCH 27/46] ccdsum --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index b6f8759840..364d24d768 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,7 @@ sphinx_rtd_theme - (Hotfix) Fixed error when showing flats in Ginga when the fine correction is not performed - Implemented the upgraded GTC/OSIRIS+ +- (Hotfix) keymap error when displaying GUIs 1.12.0 (31 Jan 2023) -------------------- From e7133d9127a4b2048dc1f0f07119eead88e53f12 Mon Sep 17 00:00:00 2001 From: Dave Date: Fri, 10 Feb 2023 11:13:14 +0000 Subject: [PATCH 28/46] Add grism 5 and 20, update reid arxiv solutions for others --- .../reid_arxiv/not_alfosc_grism17.fits | Bin 40320 -> 40320 bytes .../reid_arxiv/not_alfosc_grism18.fits | Bin 40320 -> 40320 bytes .../reid_arxiv/not_alfosc_grism19.fits | Bin 23040 -> 40320 bytes .../reid_arxiv/not_alfosc_grism20.fits | Bin 0 -> 40320 bytes .../reid_arxiv/not_alfosc_grism5.fits | Bin 0 -> 40320 bytes .../reid_arxiv/not_alfosc_grism7.fits | Bin 40320 -> 40320 bytes pypeit/spectrographs/not_alfosc.py | 8 ++++++-- 7 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism20.fits create mode 100644 pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism5.fits diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism17.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism17.fits index 1e39f9124caf3cc2e9cd3ea6aeab490af5bb08f5..4712afffddae00887115c7c570d7bd6f8453f07a 100644 GIT binary patch literal 40320 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 F{{Y=k(0l*@ diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism18.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism18.fits index 00b13fcc23808ad250dde33f45a1ee2fd510db51..4daa2c51ea2155f78478c3ce4223e6e1b8b77294 100644 GIT binary patch literal 40320 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

2M#-MdBhsXwv~4{qfsd;t4@l) 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 literal 40320 zcmeFZXHXT}wlGT0Ns>s;8AJqB(i)&(LIeQ=Afkd`01+`KK!Q19Kt)jzk(Igu1r=Eh zX2l#(RFbHGsE9-fzB#+s-sjx+o%_{&^}TvkuWGL!7Q>lG9%GK#K~rZ0`1u$bdKmtP zU$Eh5!^JD(m#j>TTWy%M($IHmaFF5Zq=oTO3lpRMLx1#N-cy4Erq2Cu<{OXZTbP)* zaD!pg!lZ?UNgEQP|MM*W`d@#qxl@A>_#gM@faZ%|6SpWj(QxIGzh+(<7ahNP>B{)k z|C;3A{_>d{?BhS_znL%i-#Y#e|D-4TANKvH+dmli2Lu0L;2#Y9gMoiA@DB$5!NC9j zF@W94ps6$cJq#_pr}_tbdHeZT{M)HU8!lQJzc6uwVba1yE20gf*C#Q~>A!XPuYdl3 z>OVXFKlh($e|*e;_MgYNp!rrr$HyeaVt+j9FHhVM_5bgF^n8y0X+Fm>4tRh6X+G5d zzxxGDoEhSe{P_PtybzPPa!rC^!otLbanVW9iT^oXnEbz+Z_IzeA3fiHp5MM%HXq&}O<#*8E7q*X6aJsghxf_1}Nu!T%K} z|NPHC82ASR|6t%B4E%$E|2qbt@X*H;C%JR1LCfx{{ShKin04ADW{)zf@oTz%*(?Mf zo%`tSx-qPu+30s7848c9B?qxrv)*F(IBL&+?4}^&$@C9K@W~xR9V-S|?~jhYzi3bl z3Uemj7rCkp5*r&Q^Hc!}PY<7RuNDzJIdr?*^6>rvwHMzMasIkg&~d&-&La`Qm$!PHNtypIxOBqy zu^R1^Xaefsj>eaDJ?+?$%xcEt)&4-?HNw26EQ56)FMj}yFJGS4lD>r1RgHd+5nN&Z z)%fvlRyE##6oLg!^Dvnnls{8aOVBR{pzz-Afrg_otX?^fg!6Au`-90RCtMyWc#O|) zh{jiodtaX($@+-ba~y`kM-`pXXmUoU;9yseX=Pq-))zA?LA@K6O*=3)YB zK;hfQyrny}K?dWa8qNPM=SX1oW{{%K15o&3-oD6pxvXA1{}i;JdX4?Z>^oQkh+2Vd z$xztv?08pV4XY2+?;2`v+FQ6jqXH!GbdM0+JoT2zG*ytn^jn4cf0q2zb;^zPH-CJo zQf?2wAh?Cmr#uLSty{h2mR)0g!1Q!QU!~%Rfp+qECOuN>N$Eh+gJl=_X!tLfi1pMe7V*)R-cew zY)PNe_eI{UZ{kazx|}HlwzODM;>sXO7K=w9nomYB!FKc>!H;mnu=~(_a+{@OpU+{{ z;`6RYu)_Fv^5gUcv_1($uwr+agNGlB#;?I3u$7B)*5C4@M$-F>1onuPyPDaV%>Fb{ ze>L0W)z4!EzwrL@5Uk$1)m$r-^?N^F5W$-H+Xuq$3Hc!z*jkGZ{@SKZ$*;q|HehQT z7AQsBU=3n=s-g4ge7H0Hoi?ir%h!C=U++Xa`^72206Jcd7=jJv>eyTGSe5vElhFJ| z8iCKRTw`_j+b%eC3&FZXeTC$Y zZ7H{h4!2#Ay7WcITe3`%2GQ6`0=2 zeZU@9JZK;tLn+hzO96Yrs=OnK_Zj`3jrzNd4zYDuB>0KXkMuv={hQ)PgHz0Sr2p8S zg^#ZpGzn;YYM}lQdyG^$P08W;^(kO`o5$XL=FadVl27);X0Kr{Q%ZIO`l-AIw$C|} zU{;l&51~KY5{;i6sc@f@%=(1EZq$FO-f+Z{2Lf9Ej7RXacYUh zye@zWQa1|@g#g=su6T`+qM!vYfAtTr12i?hJS=3j(fCH=17A9fH2frB_!+GibZAzz zh&Agkea;RE*!*ltli)6%{vqPWIZFJn+KsF%OivLser|P}MAke3Z7)tEICQt|!;p4L z8nfSi1cy&u#~(gTsbP7}24F`>KPZZ;5%kjdO$PRYJ7&+fi-S1bAHfULcB<&@VRh}m zKLjuK?pm(g7IaQ0_@nWF*alJDM`#u z4HU4Kxp)5F>M5Y@2hwlsLj(~pV(tj{AdNGLen!D*hwYLcIC^2`b!kpYgZTCyi_T8iSeU~ z`mc9fvnHtyL}`76`fvC-&3nj()q&?*h1xd}7PiK!jJ`XC;4Lc^9IA#He#P|NX4fAe zn8)g;$0Ino{rm2oy@HRJ-WL#@%Kq9kMM}_#>51hdZQ0MD!*(F{7r$j#4cC{h5PZPu z4(VrhW~+KemIJH*FaF(G;5bF5QK&zLfxSCsu1VKd0Zm_I@7R0IGqlH*vN|#Q-9+%d zPvzDGDR_^`I~&0V@_vV~CbH=L6d?Fe6l7PuW;NjRtweB^$-X}A8b)3Mf`NUc=~IF^ zpTTDWYCm>vlIZPwtlwDu$|M6jdto7`=74~PmLz3C{{u7u-p~2E@`|0= zK>IWLNM0_S4%f0P`ehUa!Tg8il^5PQX-Xce3)5c%^(S8O9%`{~9<(?KMqq(x_DB(SfY zntpsxgV7H?62LAG4>q52p0PK3QU40vs0U%kK@QWesuI|O_gm7{BL#mjco4N$o;p2y zRumzh0P_Pw0M4Zo}f zl}YnQ`aDJL59VLL+H{gNi2VtCzG{6%<-_+t1oKNcf*;i_+4xyk(2vyt@|W39PTw84 zDk5l=xOiaN2Gss+!I*P!Fi7eQ_!dJaTM4u8+3<$OaS8zNWIDP~-l+^J80$|rKKI>er#K>zC1?)!Cpp2~b0$TrKerWon_%&0K;dd;5%@>}c z{3na?XOR8;yyV2s@lFgqI#GLzMcl#5Y(axd4)PEX|F^bG@p;f8pzU)dlDDsyY!v4R zM0R_PB8Exh_)eTg!{``vUV{Zo>&-^5)!}K-I1$IBVxOalKpcc!Y%3NR% zB<_!O_Z1A}#<@y8vj+Ci*s8AyFBtzG>x1F0;p8iJph^3;BES*3;%)Ku8Yl|+lOwin zZ$rlykfrf03LJ^?jqD2sf)b2gOVnTTw@2oeYN31&14sJ$*)_-KG5+xa4dBRbQA|2I znv%izdh!)G@}4Pa)HN7M>puXF!k?iFy-_d<`_l_FfumHJ@@CXA(4_erwX1Ab(vhkV ze8Kjr2Cb($>0JEjiA?;Wp9~yzDbMGE1Hjm$2HtfMF@rTvo{LEA4hUib0s>k_ey|Dl4~^$#4{R$|WRYZPyA z3}?jz%O3q(e{zh~Cyi@1`8%HCn7p>KF>zsi$NWd2{$|HD?eg9J_BS{dq4F%hQ-Wbk zFTG^oSn0|v=)MIs{U0INx=wL_imrf;myrG7*yd_KdaO(-)AR=5*e`O>E|>Y6|2Yn( zGuB$KV)T_21)MRT6YKk~2;SiEBD4TFV+(TUN_n!rU4+^sxnSTpFMCzzxQ_J;$2()u z{NwD@62l*`8if8YXZ(+O>QU#I_%3cMa9qj!TUN2a#5cLXabG={vTFxu8RMTha6DZ? z{bH7b$z5ch8)bmQ>Z450Y-Q{xvR@pp>-KW0R*ZcLOa;!wE$0VM*HGg0`pLlY0i!|F zUxF9dAC;O5oXKJZGTU1~1lyYg3OG}4yBM7`pcsDw!P7FUCr=Y+>^-s{9KUJHHYA8J z@nkic&tFlcw0$d!j^APsJoAY_>~sr@){pzp`hkbm%v(~(=<5bFJ}6{txrsd!-(!4- zjQnj~{6Rp+ql-I$GrRU)UY`l0|J6|Y+?+GkPnI$E1KA@^XylgiQM#;pgzmW&2*2Sb zQFBZ31ics*gaBv$=OB@k6|5m_PP)6bGvrC zx`{d8dju~ZZmrsv50V(2dAooUS7mrVJQl>!?#y=E0B2?Tf?AC%LGvW^^F{k#H6_0* z`!L8!y~vH5&;y*+@;zF2p9=oq{(F`IC+W!y-)$u=W`IIh)@94s{w0QrH}B0ziW|TrNJz@YfUsZ;KKg)o)KJ z&;}I2DHaDZnuAzx@OiJH@u^=e27{9r|7S)YaME~pH(Cx-VzmBB22MueN)fLRp}s`@ zcev>9+uRBgw7p6J&d&bVrq@jveBXKloZUB$RK1I*q_KRpQNY=oGC%f)6D5ktXO8sM zejhtcRy~NK?9Ne#>A*QCEAh~~mh~I&e?2!k{DDJ?yIP@Y;*I7X8EA}98E>-DlxikK6f1kt7Se_+) zpGC(n7HB+o+D$$cNQq*5pN(L?vdPmYZj|U>>k}___p1FA(B$h)22RnjLF2eO#veY3 z=v5M)G^>0CqmPmO<6JT9%B+_JDJ&j05q(NOZLYkm!Nfz3Xg^mA6-D$Vh5jGH_x1P- z-u+&G=Sw&@#`^3scN7d`eT(vCoQmFWuhP6(-?4r*kN^%GLWQ{fxua%2F^R*lKE%Zf5*d|5Ax0L?{5~`A0(f3&-CWkw1F&be~~?J zI6A+96Uq4hbJ2WFVfoSKzLYxck3<5e*|6uUnGEAEb)oi8pJyiSP!ame$liZp^9Stj zGx3c(YHwYomDYC}6fpaRRRZU$%TDE6y&y^RAA;KlMNh8w0y2GS#B#Geyg1 z*dO3@WXhHNnklqzh<=@ZC%ut9z~tqrH2|keb?nn59T-9L8=9}X=4HhBS)hyMYil`h zdUH0ncl5KqAakc!h~%w*vE3&34T5e=p8@1w3|M}ajdrILFuqoy{SJQ5KQ@g=Dg0&s zhD%nOR*x6zUlHJnY-Ex5k^hA4l_P@1K+Ds}ThJiv&y|quyI*{S(NE%FcPPB=rF$iN)sxnonNu!MCz}iuSkCDBvo5e6c#cgNX;v zqjsfBAA28+00a8G4Zu}dIk+)uHH>|a5gZF#RTtd>r(|#|#v8N*uG*l_#!-3TFb6wK zsJ}+lnx0?N82PHK1n$Tkyj8iiLj0liM)`kl6QzLBpJ+WDjd2UQm;9}Nxw`K%UxbYl zyuj1r^Xs2&n53G+`YiMpxrVVo4v4XOX?=s*jqNY#{(8>jYf}e-YtlU`?fqIX#`)_I zL*SZSKiHZT3RZZ&u?V(ERh{kNy@+PkVT<21!CmR&OlE&{g;Evleq&U?VOlg1c6L2R?dgPlL2&%L^v;o&m{=z2l zY(YOV2cz%51g`t@^g_-K79Fo|N(QcHcHFD*ox=Ph+7Cp||NTpn$;Vcw0N2}Mw$4oC zPtofkc;ffjE`hp#=S#Rgmm{Xv>|ye)!-!s!H^+xn88i9bb~NAAi5bxylUXmZJZK|+ zn=Y5X%qy1RXXGz&{hmFJ&H65k$54O&35@&$>c99WySJ)~$uF$w18(%yiCMKgN{o&V(D<0-kJbwEtP+e52Lvyjva8f3 ziG|Jc#%45rxr(d%gxR1*#}ARfT~YJ1tV;`QY5qg!i$6o!`I^I6>>r&k18zdh`fR0k zutd>kN=Yqn6Gu-Tw0lm8;`xxh=C1BFn4LO_qVwz32wqb$eDN!XiI=eauFLq;F*ONB z(E1gCyTSj}=uI+UN&B-;fV)YvI(oq~Fr)bi_1|3g@LjhneY z?#V87iq8LI{@6Ju@5<^Fp!Ht@qW^A#kB8ctfbO4=4BR~})=^J#!GexA(0cob4Yr~d zphe4jBybO`f6{{d*ETFa(rCYjyzH~@jc4p9vTxih*(0EPTvX=MtyMAn4RMaIJT5Ak2od<%y+ml*t9L;EQ)*X{ptne_tmpCgjr z%RjU)XAmHctk-m{O5m2387|%;0ruFxs1pJ1)f9X2A{}t0`Q;vPuTPtJRB|CW(E8E= zxHr@mYR_h|eqF~u#4i=^GY+H~G4>kem$}r1;=cFHL&YAB~SZ5Ea2W6 zZ+@yr6vT1(HW}gLj_C5Yv$Q}0``e`g;NE?3RjS1oWN3Sb=yN|y$?RBEm z!K9B1nw*DCf%|T?rpyl(_}<12$3EbGaIe}F&j@EICQ#`=f=Pb%_P6cjfv3HTtB2dHq9nS!_Ys+jODG5r7z7MbgZqMXZ zw_oj}L~(qtg!rp(#1W^JOF@(7mt^4fzoQNmi-9H%_kK12ci_UW+HIAr_t;&v>;Udi z!sro~M}RgaKW_nW|F|Z)I7WaTZOU8!uLvw%0k_;$+P-xPiSq+SU; z)o%-)l<#5kJ!NUYQ!f*f|(296=BEC%1?JPmg=P*GU9KF#bAc1J7Xnnvx+yRx9==dkcVP zG;!wq^ConDotvBtJQF2{pOQ&}k2s$piP}xyYOfUEOwsu>542zNJo%c<7X^RiFL{9kYGL;Z2k-Z7(U{ISrOb1`vPe|9CEU+w&LS zrWCrOW$N2b0B`(ZI|q&_h|%YL4m{V0HF>fVVC+0hpnbq|x4I(|8V~k~qVqF0PXV4s zx4zFdJFukJ^93G@+PZpnBkSJE%NYYp5k9?kf8I%T2|nfB4)qH{_?|dt_Ks6eLDewS zP35)?@O+FPue{#~&VK^kD;q8V&-c4O%i;idwT&k}2dxL*l&i0Lj!XgA_^R=XXFKqw zrAHs>OajXv-;5n4lYr+JFr=ry1r+nrA8p#d40!&!r*`)}0mU=Q#k;affH$*cVpHTx z(2RCjC%I)0@B)i}89MiXS?1PbYBxlH7qqR=XHG5{z8v~>#pf3ALZ&Ybyx;+5SE8gc z^U!(cjC7bZ>>}h37Vzda{W0+Bfl)Kbyr~i)zzgNQYM9vqHnhCu0xx`H$qwnY;IIoD zNEzTo_@309A`dVE8~6a=MXK)H^>YL)Iffb90eB1RwtZ^+1>`uK?@k5Y;=--wzqR4! zQk&Wn@`&G~*QWVvbwbscJD4GW7vp^>Oz#t%xJWZJ@RlkS%xIYp;WT|t0dHCD9rHQ& zz-=KWNC)s%#kf8M$;^$4WF7n_87H>5(ZA6=ZxB1n%SB6cXN9#X*;B7rO zayuw6`LSL^@8tL_jV&fH>PU)|=?5#|rMhYDE^p_J% z&KV2uOSb|qGxwFx2rb4RltJ{}8Mk5TfU-~@B?E7_tC=HfHFKY*tpdEgQg4QC@R<8j zQ6w+>USx4XtXNGxjdKo8Li~Locdo~$KoFt%Ljib);!KKW>;oChE@zQG%$m?E8#e=t zO3z#R{)q(MQK{z>O?m{wiZYQ;Gtv6TUR+)f&<$eWI;>X;VCv7>& zpho)#(|~vGEH~?yJBVU@1P%i)FaB;_^*F|VLHRXazFV7|<~w2hf$&oxtFBpem}2TP zQ2V9Vz7kvS!w8j;G4Gr20grut+l$aIU_<-E4Z!0jRBkt)2X1)!uZX^UPkA+J2RIeD zZZB}n03InHo-R`ls+p>C*L=KzSM=uc>$(SE8=9SbZgM2>O7cg_8WG_1IQGU-%|hT^ zS)Hsy`~hbre8J-myfXNyw88+4f_fjn)kN}fO=)SP<7TkX^LnZ0^#yp>-?bh7xD9Ns zdwwyx5DdHDW{yw1778%lWh*CSRe6xBT@gG zs_r_zQGe%0dAI7DZO(tD6tKBdNAh-uo26s9pUJnJK=i-2X?kn%y}#=rcn_w^A2S`G zMCo`>6L{5{FHFJ?Gxa0ql7aWA`P@F20ii!l0q;rChMJ=}Add67cXEOEEP3vqdCeeE zR4#8*h4|-%KS)NpfdP(h&5%BMrEA~1Qx0r!e(8HN@Lso>v5U)LoHth3XudaPrqcyC zz`gD0<4Y@k0IxQ~`u?7E;LXSS!v%QngD05w2Z8SgT(FW2ygK8V^FLL<RRT>A{R{*IGAnjQw;$32zf7i|C)VZ6Zm6x#DydLl^C z{{DR6eX(*%*ukfmd=A1_OYer7JC>9NPPa_!0bbkfyE|m(;Wwr?;{V|b29;+dV18`Lgt;m!fG@K8;j9;Z;Hb-y8Dm}#d@=8> z6@w4Kg_fs2;7g2fmF#N)>u(2R6Nz}>OV$rrTr2}s8b8Uvm*(9wX}Ku$Z;gO2yXD01 zlLo->*B0Q*`>kQ0-UTDEJEvL!d_|qPF3*F(2x-@E2MORSwRxY?_ykr+y3+Lpz*o8I z^lr)}(7@}@nhku_9rj(*BmLr?wpUqi#jlyp{qTEWYW6z}GpPIl8wLBto!3_5{A(B4VLw8mr@){qA$E z!@xHf)41HNhEm1x$jGO_HxkwM*VCbx`(7{L8$S(`y?C9e$7lrLo1QtJbKQti!~Ult zg3aT*`OQC!j->L23 zqaR0<&%0naG~)R3;gjr?_OH57RKS`sz~6w&WoQna2TxV{(RuOTj@3~ zZxD1Aq8}$1_#S;PSf_4MqiFs<3w+kSgGq6hC=L32hQRkaK4;sFApu?QsE*d37;CmL z&XTcbJ)42=Gj3p1=usGnxzVEm_>-mIT#P1#`LizIPpPSpk3;oSn4e;jfj{jc+h^8M z7M*W&MzG(y+~8l%OnuK5G{67k9M{pdOnxm5!2u)Bc76KD++Q6-{2KU$m)3JfnE#Ie zeo$#un->dAY5hGD_#v6~rg>#xg2iDYqVJr!;!YwtAV%ZoHSp(Ij@ELT4WnrO(*S;G z-=b#*0pO62H;C{Te(!WdZWlNqZv|;^;71&9q>gjJg2v|w;72aC?fLWx==gHqOW-e> zkSrRD>X~T%&5mDe)$4;hGm5^gx^ zov#NadVgDipSbto@yQ)bex~6M@RK4|e0rw_i{E009^r58XiX{iV%W9~FQ5bbb${;k z`?*1~6jn&?z~At6TSconEL@G_?F!&;It#Nq3qcj*EAR*KwT@su8Ad9q{)) zNQ&gG0d-m*p!4rPx$E~(7HfdcAE5aUuDGdRgp}6F{)4Cm!5Qb61$tZFBpURUtRG>$>ON69vSJ+>z>cF z>%KDeW(G(<-cTv*j_aY+as17tfM3zHC#S@axxcvyz^6*qsvUR*YP9?s0KY0DX7T za}RO43z>SJ`P+d1D6yzw!F{Iw;J6C#pG>Mf6?O+qE62Rzl-dLT*+@Cx`wB4IuuUnq z4dM5BtJjT82?!I#{MH2gm)BE7){KIgo;ZNc0RHQ}_mmT_fNHG818d~R^WQ{jwk?>% z+~1@7Lw>De+(B&z(7b^i-ZtRBm#7v`Z2}YGN#@(zw!r^T&G^!-B;Kag`{17;OstPe!AxryK!K6U=Y~ z@IU{`j~vMbOXR&jpsoPF<&IkJ5f&bmp%IL=^Frw8TI)8`C2fx^dLj8Ig_&+~pd&zpUn(}W+zU{6C{;w5kv;F;X}QDQf>OlcbT-0&Z`eTX-er_3El&Xae*4!w+jRvU_`Lh{N^<8dhehV6M;9}rTxMk&%q!6-V?Yv;HmAf$KRxcQj{YS(u@ z8d=l{gv{#sZ8v9uufAfKkC+P(vhzi|_hrEJ&z7w>$4v)9&i7LDxc%Tn-CZ;C_yZv1 z9YU_~OhC+B26^}*KqzQSu4wFIeLX$oZ+0yb2u1O$QdL!8j-rK3>njNUmXHQ6Aor%g z{1J+y38fmFPsm?l^1~89C{tgpo^*li;4M3!Om!es3VDH*1z>H(E!)=e9EcHFYvwDx zhY9=7nvL#V3xw)cn0|2*FbK>7LM>KVZ{smArunB72=&0m=j%~@+QlVrB5ibl&~PhT zcHjx#{J7R>-kH=$sXgy15EWny|t1 z210jNzuMwAO#Qea!k1oBXWs5#Onq#1G7$O^9a=VPh4rg4Kp0H<8SglflA`@h3J62T zp8WlLnEPL(F9;*uKb2#5fhOMnRm3mG(h3!dw^_fj`SUPE@K3!Q#b2OB`{%Vln7nh0 zFu4ywnb`j;0K)Y4bWzVCSa1=k1EkjpGk#3Q%tqF}Qh>0r zjk0#rW)0)>7@+goYMy-Oa)lBRzY1`o_10x>4bZOimC;JFRdc@!^P|9n0e*w4PHCi+gOQfPPPK65+?$dR6yaKKo_1PA$o~L@TYj$DfsM?4npX!9?g#bq8`w;~BoEQoW78R#ts!7+ zh#i(TAUv0tPMbFx0%?C_5C~QPcSYn6SW$`{l2Jf_n`?afRESH&{I>`QFSCaMmw!P( zHse1L-YSu*O=krsk$3n7)l(AQzxzrC>SFi4mBf3PAW?NEz_c1!p?mH3nkx0lPuDJ79wMcV{#ZQ#O8h zAGC~#-;bm9rbZt;rEvr3c&U^EVp_mdH?Jhn#`If_=ri3-;_97AVEh^Tvxwe)X17Kj zZUPG|ZV9J>n4yvxd_t09-s8MR@PL29y+~oc#0Cie&!bi-T@w7H*GKwc=F=A6@S{xp zSDgz)!1Zf?&c3HK>H88ZSij3VPYLE z&_K*peXsj-4LH;K>NtXjo)yYpW<5jETyt>%5c66dYHVC6Xhqo<|Lx&Ggub}9z;3j# zeincTtGJ)3_KITsD=#3zFFoF?FGES<_{F^vi1}GHtK2rz^^s{mQ2&T+&11t*d`$aK z^*}6G*7XA2o6IW50vrrPaCTo~q>kLVrs?b7WDVS8Gw znfGI3(ERcG3OjQiP;@;Ls?R1?%0_$`kuRX@{hLG(+;v%T7J4s7`;Tb<2@T5HfkB{4 z`|}8Ys~*OQ5AFwD%#W*(d?sFb{9sZDIAL-(h5)hpoKu`uDEQFyM)HxgH>W)|7$(v7 z0pWMe2Kgx_ePBWR1BF1WjoO^-I>6Kit=tU6x|u(-a@1IO`M@7&KkMC=rBCP*zIWIP z#0K*(vqVEcj;=RD_Hd(W%7k0}WbVqV~jjqV=|N%&fEXh40Z2yzN-|@2Ws1pF7I~h~({a^ADQ| z>yayfNQv*W8+gOS_vZ$INDV!Cpk0rtufz6kyRY|?AU2Gq;~8fl(#CviH68~OY1jye zbiGq`lh=Yb_TP470Ffa(lUJ+<-n9I5A-G#AG`JBQ=zQE3ATk@MM&0$o`qAG&?5N)6 z-G5A2?}XOdS?0CvT^EH8k1zm0?8=iqR_x8xKg){&v3visT`R|fWg<%N?Lqcp&!#hT z{_F-%jPI|}KD%CxhV`Kx5C^P> zM)~HlI%#!F0dY{X&Q@k2Q_qLq4-kjMZjN#nurM{wqx=tX=sUaN#Y$oQ7lIGh9#1Vd zWA4YUA~@^Lj^WQonfe|pB;QAhwuE?Z6b!9L3GTAFKpZ{2CS9_h%aJK;+)kyS;8YnCoJFgY@%R{v_+&^T5dm;~VYg+{yUZ_9}2S z#t20Gbw2Y{@@_YXG{W+&0Yu*F$E#+qhv>DK9>~62h?H>ibbyE_SRp$Ck?-eG=Qt8f zX#0ccb#eTrP@|8mr9P zF+ddg?X>T@4S}!m`ip=l9^ZGVIU6i6y8V$pD=}L>*zU^6XClJi)ol-4XLEBXbYZJ1!Ff7#8?6FtVW{?G!` z0>o7!;lh?(V1(0;Ap{WDP7T*DJ_B~g*;99wAbWLv=YfuTTd<`W`U?={Yt7%*e**22 z-r>|@RUmFGqE3XQ2!45MIT>w7{8uqE!g2Iv0o@(l#}fj#KW8JHzyP~zN+v*1mU&;E zUJ>$d3J{eV{*r5dF!CLZ`d5km{ta17{aZBJf7N&P9lbE2zCrCb-$lj__JbU)-vEeP z_q3Xx7z6D;WBIsU@@nk%z07^US=9f|*&|`HKPWY<9y|?!xVvxOyud+5U+JRudz*~x zr!N!o55mX&nD)1yegN~n6wUV_xIBCWOVC8K1M2_KYk$cN6;P#NM4xK=B_H2vg0Bfa z@g5)^>3Fq<$UqQ390z4Rt2s}7mXWbzeD5d6HL52#B{P6_am?firE-5I$;E9{+i223`z-5j^y9@8svg{4L^_cWnb5+7&>H ze>jrQ_iwZ;$DaXxEIu0%JwMzY?|jgTQlb3=bl$q6a4q!_ln!mb&jL|@X8RLT;qUh) zM8h6__?%~d-v<(n8|rTKsZ;8VcmmNBGomYH_uuu}#K+(%e?GQRbbj$B!cVi;_6DUE zN`;PJ41xG$UzOE4UO>M`3`XsrbtUz;9Q?bUmiQt&eRFOBB}VHv3WzT~NBGmnF#0|1 zCJ-$jKVDh!5t#Rhxj?i&b3WLe2&&jUZ89&#ewn|ZJBbt{lEtIUd5Z>L1@b>i+4AY~)^ zPv0%3==blh=Kv|^_bhx$Ca9w5ZDccQmv`lS{d5`hXnFJmQo(Z1jD4LPbL5e{0QjMLxcOMp~vaFAY-4>mOaMgpnw*f@1g zHB2bL1Rf9Mh;psRzr0|a6Xvg1K&lq1ezUv|-XT_~Vq*o6YR6UHfB6P;X#C{^sh**F z+Henq(EizbAT^S-9I9r5YZN}fHy||^8D*7!1?M@K!8(8(8DRfFL>;`99oCz>@_^Lx zWIf%K0zSnN&0^QZfE;BTT%i9M7>Bn3NNw%7fVX`xmZr~KAa!JRJ~$Nz7BoNpKyXi? zM#yiNwu`Y}q;B(Lhn`@VE{o%{Y9RHV_vpnrz(iX9Oo7y|G^#E1Vf^Qfn}Iao2gc_3 zfFxO=quP@}LVA+GBap2GVR&MGbo)MAQ8r18F{1R_h5Lf@%M;6i5rBIo1}3 z!GwdZ6Z+A5mdcmp&)otuEbbqA5Ii(|!=VRsX!~Fdq*eP|&&qn{{x@MKkk+-A5BQ8_ zk=Q*_Hw4n=z9v~%z}PQkgg@KTP3IbaQKPW<_MmpV3(bpbA29c``@Mj)&kE>DYoru0 ze_TiXN2gW>Klx6H(fUCINQYI7oQ`w7y^g=_2EK(I8*=K1Kn- zJ&#f?>M1?i9;5ZgeTua8Tp`p)2p<2U=R%MK7}5D0OCTpy9rzX!22QlSH~^$8Ia&f0 z8#>*^42tC4?ab5GCS6Jb*Oz%E1L?kR?dj=1DFv)9zO(`9vBl76QK+CE#~)P$keOoi`(hJo}N*UlRIi-|WjqyFCJ1rJIZ1;aRe z{Sgf0M2)4U$>%5~41ccya*~9dUq(Ac*TVz?f;+ptOV=>=X08a3K8=;qqCc7XkXdLx z-=_z%XKM)G4{ri;vS4xl`Qspl+&kyta3H7f+$?JC1x+}9Gb#XbYL2E!>mG1ls(5UE zzAKQ^c6WWNjD>ma*uX^qIelYIdf++;v&IC|0@82kjkcX};C&G5n=3%hm|LJXPn0!` z?J+)&|Ky{3{1$Mh{TB+znJ$@Mx4Z_wB`965jpRSTY)eK_DohK(4Au!`p!(V$9%sOs zwl^DroF$%Qrt}HSkTmF*A$rg1Tw|#z1&(ySMH$GT#tnVm*T4ju|HgPAgP*1zNxKXp zTkp1Sy`KPNh+yBJhg>kB_04Y}XYMS+E5bke^9!uQqUK!#5Z@c)s< zybskw=bb-(lY!bhp?`(&5n*xZdf`48Nyi5Wp9?hKo1*tDO#XNqkdacV^S-?UU9A3^ zJrLaO7q+1REFa?gtZ_gtY~E!xP6Ni$@&Z6Edhzh4h66ZgPYJIn`vc_Sn~=vLzArBj0dkrDLYDXx7)j^n`+;2U zaa-Ir5KL)(>j~rvJKIAqLO>78Ygz@6ak|I8wa9=jEpPLIj8~9W4>f=>v^=Bp#Sd(h z8inqkY5j@#b7fn{O^pCBr03%UnNYiYy2nc}?)JG>rMe!-Rrgy@ryc@h+J2(_CSF}$ z{=yR&e|Id9s|$YS8|(vh+CN(WWYY0Xp>xK;Xv}Wixj?SjA@g=AN^D`U3h9@%>rR+V zUIw$SVuGIoa$U^marF_9r;QnC3Xtn(-y3O^45ccV;hKQl;2T8^Wx!{61qGKA0y34q+J5x8aNFa#)K1%>S87Kx!i>kHu3N;_-_?&ADVy9$gy zsSo7V=EyltKbia3uwfv#y&So7s|ZNb=SB7>`R4QVx>HPjeFFt#O7THI-;Ll-n}c~k zrk)Rae<1*Zc4PjT2ITg`+AeJ`AovPK=t3aVQk%o1%D{=X*VlkdPb`|!QUWTNe?pMH z%2<>plDvg^U#BAiWag}SDL3wc4&FYxuON4LJ60c<3N~2YQGEfq(^0wMODP!9@|XGrjwJOVW_Aan} znt>|%>VQ15@Lc@)#lrV%7lAw)Sdwy3mDNG(f3)9YUJvFg`!V$(s%ZY>W12!c3fi!;5`E$=F z^~;Zf05dFL89<&rToS)W_8d=ZRj{bB%QUewMl zC#%7prZ?j63&C$j{Llfdz1w!w^c@E>-^V)c@f1q@*78ALjK7P{$p@`unftCXw7&wg z+D$*ynD-kewg7oabG*HZ4)Z=R9i698D*NK5*I-58e<1!V>=|w``VID&UXycyWPgeI z(diDx^!h7-?eu6d{Pwui?RoWov5Wepti#8IipYO2R`C<<`>{@^-+}DUwI9EwV_I3iJ8b!4_mMwz zz2Q7-@_NdE_U8b|@@D}aHcdi)KVpo!7RGXPR>KCU)s zfiPY`_@J_^eiZn_80-(Dd=^=m*7|@r53#hqGy}3~4R?9CIxKI;=X(U?%_T|CPJ}=x zjesg3Z_Qy1h3NtPy@IxKAa74m`o7OV(2M2!HJb0v_{Iw+YRvr?iigR&R%J%AY)YNR zcO;Pav=1#BbB2=s>pb`66JmFr1G=81ED4b?N#@^Ko-$HcEPP2%r*Eb__O zcEjOb<~|MG-;qxbwfG-F_4agpkPPHA^ceMF45dQrHwwt-Nnd;S4GQS*sZ9|B@v>xhTSG-zO`Is=j zh}NsmV<)t2W9moBP`b6$ccSP$ag;;zD~SEZ4*KVjmQVZ~6Z7gCfM9LHgB}fFg;NSBD2Z!R3Kf z*12p~D3V;bC>c7wh(z#k_O7NwAWGjK z$w84qN5+DCM_I%8^@Wrz6e%{X?RK5Z#8W{cP^9#7`E-lD%zgdZLMT$cvv}dQHdaqU zaEzqyDJW7YTQGjCx$t`mX#Ej|5lFCc;SgY6I$X(Xm{sx`p`VT&&|3`LqzMn)6K^PM5WZLTgd!aS%U;9z zOnf{Rt*<*G@R7kd;rGhWcs=p0i!Pw=d(iRDO9XfGO3%Im3)&usLXrNLrfNxXFsB)4 zKNK0%YM-fy0s|VKTcOCXdbZ;YwxAvBi;;7o$f)8-TIW87-$K!P#>AVWepSNnf1>@F zoHtlRA^x+TxbFA0drW?QE$VOM{Jt`? zNLY`DU|UNc-x_hyp!HKe6xnH$yN<5}W!irQD6&^H+H<{-so!-%__F_VWQN0X=KC5v zG=6la!o$x?nD@_v2zF@RA@gV!tB<~KMevv!Y4Mj$F!eCzH-ulu`#a0qt6>oz>z_d= z8e6X7Byk5KX?e1OA}8L7r3z`_O2sv;6aWF z%GcBW^e!lJpO`3EpblEJKHmmK9xnQ)dyj+EYn^Wk1!+*^Y5CageK%O1#0gV%C}QcP z92sr^qn&rAoQg_>B2XI7ouLdmv^>;7k(bD?lu{SgW2}Dla}oTjNXQl*m$Agj7Nj6)8Ta#onSw z3q_mKO1oB}O(jv5SjXVC~vpR#EgAxJkKn2ScNwhdBOZ;3j9a-RU0+?Wj5`OapF8isg_~i)G(L z{{Yv+FMjOtF?KRme~7gI<`qQ)HV7hK-BqNgh8@Wm{Z}xe_Sl^Y;HE7oc8(4LR&SjT zTtJ}Gp=Tk`Ta0g@z6kWT&oaLU?liuDcpltzmnC6~>|peCQK14iWAGV;_~|fWAZ3U; z;AUEW9lq_KphNf5WG&!k84Z#RyD8!6V*j&s);DH^Fg(TXYk&)CeS0p+lKrOjYw`Gf zf||PQ9X&u``@smfIiD7<4Z0}d8Kb_LTXD17mj;;FpRT7faKWV}VNVZ0q`9~OfSY%7 zW31Lxh-3^5-297Gfq1SRs)gy1o;QJ8knQooQjg_hIbnYbkDTlGWx14JjO(*#Zx1Ws zmONWDKf-}qyme3Yt{W}(ITx~4eaa|fP^I$b(M#Y$7e{V>8!P$$PQWdhsj$%VrmSH= zZ0_k0e1EC$#&(O=f%(9Mmpf8E1GmgWWsYMIc!>4N{=hAF+_^f<4%~aw`ajfnEBYI_ zCZ7ZgaXNE=TWOkhPb(P4t9!d^97OrEs?*SRp9X;6A2DGRxG;?pRntr0n-jk*ZyxUd zuzw44Pn-uGnon>Z`E7N5+nzI?fq}@6>w#PIF5AQH8FZuNG)5nQTU+L1<~AQJk-CO{ zCAaSGU-`I^U?cLY8*uBdoNDjgh1Gvp3&3qS=ikZk7>M;RwuZokr)!ld>;bnPGyswb z+{VOPKHHCg`yy(PAiqS!ZrXBh1K4C~`YLxqc@-Juyfo*n{5w|rybnY95w)sKCx^{~ zSnrPZ54UN4@$wM{EPou&gSpKChoTEGKZk}#W;X-3#e3eQlkZtQe-6sCt*%2~zS+&r z|FJ%o+crd}+pK1mKb?a8MO%H+?NTkPrt-}NzxQ^NqJp1_f&r!76oK2JpV{ZVlB|&O zD`5Mb>bu=uCJ9so69h5e^Fj)6dosWv z#!X=OBuMW~cF8Ip$naDABY;bY^ZK>)p%hOB;P!2v_GfM>i+|Mg0&f56kn_oPET3%l z72pmm+H9s$&hVMC(SAEPXaR_alA)ceIA`N2h>G8N=pAUd$Yw~%6GxvOZ_;fUrDXN;*%-B z9ji#U*?F@Czmz*(`uW4LlM zDuChV0C1e+ZPoXa;6LZj9I+Wm=HxRx7c*?n_bSjGbDbTZy*~!rxh^BjV|qY)F+8ac z-1+u58}(wKw`jkhzP+IAwW9PQ^wOvNI}7Qb<(ZeJviykSC_i#OE!dZ9*@EZH*)8%+#1YDl{!G!T1LR)eF;`lD}OAGJs zW%z!(!hy?AH~6aLA>rNNb9vI$yJbd#3bl`-05~BoG{EJqyg>|q;qxn7Oper6j*g`85IGzdogHVbvPxJjEQi z8)J(1tWpD4s_s)lfV(+jzpmAEn6Qs-z)`>z+Rt?TF&KP$(gB16cdM^WzXDfqI!ez2 zk)Mi8ly7g4fs?2o@%!J_f8M3rV<{gR$9G5LoZ-#_V0e}PfV-;@_b5L{F5@i%YG}-|Pw^K4&q~4{jNLDXe7q zc;nUq_b|Uhd7p0*ejh$BA?j}3q=<&tb$-q6?(ynQqH}v~EvR*a91h}VbI~kn$1-1q>zJ3I_XQ4emRK0-S z|FQ4Ng6u*Xcv%xw|EF-jJog)wR$>cn4;_Ew{S(Jm?ln7pp*HAK^>O?aa4(!AtcfDS zS6$K;xR(w`!}sJ09r93Lm7)H7)$c~6;ul#NJ>GD%2d={Ovt8{(uoBZBz61BVv%z7< zG_aYE>U|u_>&o_SIUn|diCB*^8n`#gYogvf`mg`@<`>sWzbh!AcWYwe4qVmekG4yU z7~aZiT#vU^=6cl$48KYb>37fOX9Nvk_Vgg6tM8qudyx&QxH{`SP#)J@{q^247h2Qh z!gDe1eXdLVind@Q#@`))tIbaMvceDgi~MmJxDTndf35sLk3RQ#2OQ>mo0-(K62BkkZBB$i_WiM zaPx^rjzW9tf7lcN*Vu23w^Kq3eh2r%^!J%WBUZma?em|VH{`#FmGUc*{-ve5?%M&T zuk?{_Qi=OiR4-`J{%m(3{o6#-cf7#PKXCv3uH#=tEf936xKK9&?$0~V=_4BiEs>u* zf&2UXZTyy0*;Z<|}JrL#isG*MUK#SJf#1bGX z+lJJ++R2*>v7o1Y8j#lOfA~OKDL*p;i0ZQQb31jBiTM1j1R!ej!Yt&SK(sY~ zykB=7W}T%ItOU|Q`PG)(dYIme%KLptHx)h7u7Q4HKH+j8I(4}ZmU~F}X)++X?=shx z+?Vj{6@ciKAAQozlGW2bt^lI{FtK8op1|s>cL3>FcyNEeVN!h?&c9Rsq2?#EW z99X^VE_~i=fQ?D!Ur;&PTq@Y9H8I1RlzVD_s zkGvt(4v78$q z;RWOOwmENIb9exYzs=qV#5VK5xSJ)c-W2UsG9XoD&I3Hpr1I=8uE)Rw%gwV!NbxCr zK4@3XLH7+3ULDeQn*+`#Op(>mc={GIAogp^Hbh2)g*YCZ|KO#Q8Waj(*la40I3Nze z&-MT2!j?glKNElq2@HHY&lKWT(SV*BkfFY{fdg}3$1;R3+1MJ0frI(EKV2|%F#K$SbFl72*Yv#`Z(j)YAVjrKA;(^0}jMTWeV4S9ekG2+wv(l{keV^q&#rY{9{Y$6U zp|(=J>`NdnU#_cobOqB&%J6%DxV~GxYY(1(i}9$TK-^x~UY}PBiekQx0K~nd?nIup zghznC?@@Ht7S~;j*Jk1O^SrWre#`Efwjh-T3I%Ggy7^ zvv45Obn_SH#WVXl5uXQW-2S~KST5qPE4mND0a+c*4?=&A1pfM_XYfoep8t-; z_oshVPZ3@TO4Odo03b7JdOaQzAc*%}V7!vdeC2X3Oq0dGy5jq@9?x?MJ}Pgd@^lo+ zquF&ZXLiw~ArdI;#H$0hvp>DZXhduciL{ z)ifZ%8RN^QUSQ|bI@tfbBRl;2Y-awcGt%?--`XrQ16>X03QL@Zqj}U|RsfhU|xPO-qYm7=ABKa@KA1em? zeRXb-&ZqGGmDbl=2dT32C|v=_DzpAq>w7Ug{cG4?SofoSUZ@G|ekGJgt2^r3>&ygJ z&%GYV8qJ-bH`PLCF&^d)1h4lQZR#W0&zq3`yVd*U1SwvQ{jY1#P)a=}bfBNZumQ;W zkGm(&{Lb)2+u--uP}OCU<{uXS&BEUgf1cL7Cj`X$-~G)%HkLSys%j0oqJ5DJB%F-H?jsJpC- z&$n+lGiAX$=uPGOfnz{+tPC!*&w&0?{E_Tj+*?sY6LiIVI71*YLDlz43ZbLez8T1_ zX_+G;cFO4I{P!2<6YIMyK(&K}Z-VW2kHOevJLpL5jly~$aW3tny=J7)-l+?FD4No_+ehA#m7j3L?JP06Eak_;3N@4rm$Rhz|lesG>R4Xd;{{ zr~9`I=|9cuQ=Y=&U<%k&0_4#5Z*y!9f`izf2av>%?;8roLTCE@yQ98Ks(NcaCL6ko z{%Ut1$>mkb=NEv9xE{NJ94>tq^~DKv#rD&Hq}=(KQS%HG#r7^hj$CV85mztO@8knH zdbw5g3lLO9dn^M;>N(x!3oAiGTu_w%$Flld()N_@XZZ=_`0?Rg%a($Pm|xi$$cdzB zrb@>oe73PbPVQY-92N(9qCfTuNZQULCRPoyOEf&+T>z54snDRq20=~yz5pa+-M4c( z)vUe<^Qg(G6-JFFl?cpJJ>!eXzLs^ynlp-bCf0l$)0v4q1ji^ zq4uS1Adu6(&GS>vGJpAMIFK`AovQwsff-G&DZUEitZQVeHlbj;hcY0pA15oietNj9 znSNhee;~wO-?G9>!V3xl!duU_-!T?+5l!oB`fVWR%r4X%Z3HvA9WNmNoj2BW)cFN= zw7mN72Ot*=<_^5C3HC=PU!H{jlN{~q53jxlXH%*`oq*)3_tvQ#1`{rs6u%8beRxr6 z`!9ncm|#f*4yX?=Hhqtn;s8Al=dUQ_@q1mW4?G?34BBFR1^GAcLvc8d@pf@Ph0p_a^`J;hF)f}`D{S$02+~qA)gQR?~4M48k7-V(1 zQGNrEzTG9_wBVE=DRHdi`(>t1wigB%Uj~w1FY!!=L7(`yKr7t0~@fT z@=P7|)xDrDbF(p@FOwc-&lrHlGlj&jT-K!>I-=UuzW7 z58ag;{I;_E`BzauN`@6Ky1kp>xqe&^q|{+obYcz5cW_Mx^2m0In|y@O2G!@7ji^5! zTbiYtOqB5J1t3pMn@*j3#_+BD!+|{QR_qnLf#ECo;_p4vPv2*Wcp2h+9|I|Czj;HQ zhQQ?YBOuS!=BOX_6V$}{Vt?g|o_4mWf_R=0hW(W{*{Z}JWcgoSe}KHGH(Y+UUeKn? zGd>W=%a850te+*t7qR`Tw+aq5sqB0x5$TE-jk_vP|BCWL0m$peb(<#y2nN)ewKf7$ zdH=Jaor|nqtgi+jZwkLmTz*gTCx!s2y7Juy@v=KmchL{```e3uvTi0aeM0%~9j{h& zaTKd3_=xXUXLZ_IxP4@K12SgTkO96Py)+W&B6Y@&RrKZbb_n^Ps0Ot1_Jpu{hYb;1PPz{3Xu9K zbs;A_8J?6Mj{mz)zlmc$3ID;jB@LrPUs`=(^-R=$Yjnv`8KlbclggBV`~bx}-n9aY z7o&afbMRQ(Rih>RZM0v0*`zqcVLmP0uRrj6Hd%as9X}7WME($f{O&p0EO;kqP=9^F zARvDX)7z`4fRSjQ8v*&-Np0_htj$K=cx>1|;8lw|EFU?Z z`FE@FeYIOjOFKuie4&o`ew(Y7?H?-2>garyBCVd6?>S|DOTG}Vao(qA>Uu$gPWKo- zZ+rSva$+6ByU8{JzFm6s`9aI%?0zX_;5Ab%76cS9`y9Uy-#+pF6}6r6T&h2}VtcKG zmAuh*nYi2y_*^@-hx5KA3?Dp13-}J(9xnH9War)1;lS%eZW&w7*o_Npd`#>qb&I$M~$2E3uneE(Az#G|AmR}zMT||2rf8W@$&@-YDOvQL} zFz_b5&Q6Rz1fA*rGX4&H52Iv-+wY|F@b|!*c8+l!6aziP_)IkLJ#{0@FJgR<%9pM< zzFwMPr(CYd8fODsgOe`p|Wcg$nlN{mm@>F5RmZ=bw*VcZ?5KJPH_ zgZJO)85#;2qW;AG9pc-BDP05;af3_*e#lO*xr3%k_5LZq58ZO`+n@Gwc0ZdB@Qxeb z8;ppO{}$`HN`ZG;>rnP*iJ(g5qZ|IdY(=cSevIVbWB?B#@2xk+wB$?j!{$3*>)V_8 z7YFh8htED<-$s+=Th3JgeneoK%gR6Gbt1nYJ#tE@iPk~rE5-{$fOqyOH|dhW^06N` z0q-)_I*GcX!IP`r{|X!*To` zgZm8BvSRrcrr6%oHvQ3+Ecsa)zeE3%A7y2wt$_D;N%k2(+U(rByl61lH}Er9ECPN^ zk72%Vy+B{oUpSw!-HNBr+b^B>;QL;kX0{&M2`ns>(Bhu~{J0LkoZX|q+JFj-Sm4LE zi#Lpjm-0Qay|IVNc5Mv-^UB!-1bvWBG1FSB9rU*L!m1o0uYAx*x|F z_$e=vicgOMJ<)!D1-#!=zs#3&YY_8c2Vj5G z3Ns!zRLDNkc-eiV1Fo*@_@)cXS3-M<56pM@rkWt(jUYWexASaoRfeAyi1ZBdHS}DM zmh%UGX7-(q-IAfBXn!LA&q~jju(qG94u>X|&4Nyp z|M7lje$K%u$8(oS_7lplxqDq*M=xxthv$Q1?KW;!X~`er=WVy}8ISgl7_X}Ue*R_? zd1@{5$FstLU$C*;)wwAw9)oxp{KBf?m~{F0fT6YFhR{%QyOy`|FvHW@T9 zJha>ReA(oc9yZ;Xey93nxli0li@B11!uBi1o;}nMDgPzXJI>i1HHmXV@@PwY^whN59wIX~3@@I?i9gpXIyxr~$vmF2beOj@?&<_9nm9 z=KQS@JzMbf`E`9iS2jIo^Lh52{tf`YrD^21F4@dKJc{~!YeQQ1(Z7W@ z;`-|YzwN8$8x3c9A+?v$f8nD)hB=M^=t@7&VAN0BtE>CIJpz3OP<#Ct@H^g2;wufI zwa9h}q|Jmbu z@4j=x^u>3kU#BVoA6Gcq8u2VU(f%&revH5RpB*6;|)Qo^XkUpd8<{Y7e z$glH(KX|-#veIRCKHmrT+o6=KkEwUD-kJUb;1d%k6(1ZW|0CwBW&)qIU)B9l9jhPk z!u3y%&zQFnk!XL`RBe`NDpC7VvteX`-e zAB{LZt3;d07hC+j)b+vs6Bo1lnCbpFw%WQT8}CyW^MN)3e|-6$Hn%M0B7Xf)?C(Tq zk$f-OTU7oZ#q~V7FiBncC(F;J_FG!;lJ_b#piJYz>#+ay*`xfou4{=G@)^_n%vu}F z_S<)Ce`>0_!h=~Y`RIJ+q|g0Vn#dne|1AQaXZbv8oH|LmZ(RUB+w02MrFqQXS`!ZZ z=}~8fX0($0Uu=KI?dat%m2A8YNS__Kzhq!Lwq6*|0woR1FsuYS2`RIx)@k)4O-;C{K(wP`lq_aokaQXdX{ovfSo^R=f2MZOU|Xmi#j%~iS| z6W_n0QW5VE3nr8w4RL-2N;*p}^aCSNUPU3@?Ebc08T0?VvHjJi$XY8GX3t+he!JFq zB|^=t<^D_ldc9KS_5qTAjN`rW#Wnb(F|*gh6@b6_VOOr_F)99w&kL)cADSD=@D?89 z^IKIG?LW!b`5UzliYnIY-zsRy_vLSwm!AG~M#9@12K=38R?pq?+5KYvC=c#F+OfYV zMamzk0RG;CPc<{!$wd6#43ua0?~N}~yeO;F={Du|BD8mli!M1P_<^RFj|0FzxY>Jz z)(QDnYF^K^1peXGgtEYKLI=@5-3xq)px$b^7Sl%+IKI-n@O-EJppxiwB2NDg@Q-qS zt7oSCSD!vUx2h()Tpme(?kKi@a<*yGKt+VEAW5+0RD&o diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism19.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism19.fits index f96a578fb0e7e9dd5e7b43a4745eb93872140690..9c8bb7734896a68a664aef0c76172517f0b515e5 100644 GIT binary patch literal 40320 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

4I5Lq~` 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 aZh(P|Z(G4`-T(XZe=G2REAap23j7ZsH01FB literal 23040 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 literal 0 HcmV?d00001 diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism5.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism5.fits new file mode 100644 index 0000000000000000000000000000000000000000..200485998ae1379bd1f1d19aeb3a4b02910500eb GIT binary patch literal 40320 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 TJMsVi|GyddzZv-dZwCG!sYzf^ literal 0 HcmV?d00001 diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism7.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism7.fits index 2027f139bc52982db0cf08a9123c10e7c5a2e8da..93ec689795b0907b01f2716a762f0b9eda367b9b 100644 GIT binary patch literal 40320 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≪yfrnFw1OX!O(38>cI{V#sRF0j1VR0HmQivWr^ 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 QKmWG^|F;7FU#`Ia10Li0zyJUM diff --git a/pypeit/spectrographs/not_alfosc.py b/pypeit/spectrographs/not_alfosc.py index 3ee6e3ab80..4cead0c522 100644 --- a/pypeit/spectrographs/not_alfosc.py +++ b/pypeit/spectrographs/not_alfosc.py @@ -28,7 +28,7 @@ class NOTALFOSCSpectrograph(spectrograph.Spectrograph): url = 'https://www.not.iac.es/instruments/alfosc/' header_name = 'ALFOSC_FASU' supported = True - comment = 'For use with the standard horizontal slits only. Grisms 4, 7, 8, 17, 18, 19' + comment = 'For use with the standard horizontal slits only. Grisms 3, 4, 5, 7, 8, 17, 18, 19, 20' def get_detector_par(self, det, hdu=None): """ @@ -275,6 +275,8 @@ def config_specific_par(self, scifile, inp_par=None): par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism3.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#4': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism4.fits' + elif self.get_meta_value(scifile, 'dispname') == 'Grism_#5': + par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism5.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#7': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism7.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#8': @@ -285,6 +287,8 @@ def config_specific_par(self, scifile, inp_par=None): par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism18.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#19': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism19.fits' + elif self.get_meta_value(scifile, 'dispname') == 'Grism_#20': + par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism20.fits' else: msgs.warn('not_alfosc.py: YOU NEED TO ADD IN THE WAVELENGTH SOLUTION FOR THIS GRISM') @@ -299,7 +303,7 @@ class NOTALFOSCSpectrographVert(NOTALFOSCSpectrograph): Child to handle Vertical slits for NOT ALFOSC spectrograph """ name = 'not_alfosc_vert' - comment = 'Grisms 4, 7, 8, 17, 18, 19. For vertical slits only' + comment = 'Grisms 3, 4, 5, 7, 8, 17, 18, 19, 20. For vertical slits only' def get_detector_par(self, det, hdu=None): """ From be03c3d17632997b1ab6c4a18d7a9933891e6a48 Mon Sep 17 00:00:00 2001 From: Dave Date: Fri, 10 Feb 2023 12:18:53 +0000 Subject: [PATCH 29/46] Fix handling of standards --- pypeit/spectrographs/not_alfosc.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/spectrographs/not_alfosc.py b/pypeit/spectrographs/not_alfosc.py index 4cead0c522..67d11700a7 100644 --- a/pypeit/spectrographs/not_alfosc.py +++ b/pypeit/spectrographs/not_alfosc.py @@ -236,8 +236,7 @@ def check_frame_type(self, ftype, fitstbl, exprng=None): if ftype == 'science': return good_exp & (fitstbl['idname'] == 'OBJECT') if ftype == 'standard': - return good_exp & ((fitstbl['target'] == 'STD') - | (fitstbl['target'] == 'STD,SLIT')) + return good_exp & ((fitstbl['idname'] == 'STD') | (fitstbl['target'] == 'STD') | (fitstbl['target'] == 'STD,SLIT')) if ftype == 'bias': return good_exp & (fitstbl['idname'] == 'BIAS') if ftype in ['pixelflat', 'trace', 'illumflat']: From d6115bf3dddd7d5bbc73c8d98fec3802aa75ba3c Mon Sep 17 00:00:00 2001 From: Dave Date: Fri, 10 Feb 2023 13:28:16 +0000 Subject: [PATCH 30/46] Added grisms 10 and 11, updated readme --- doc/spectrographs/not_alfosc.rst | 9 ++++++++- .../reid_arxiv/not_alfosc_grism10.fits | Bin 0 -> 40320 bytes .../reid_arxiv/not_alfosc_grism11.fits | Bin 0 -> 23040 bytes pypeit/spectrographs/not_alfosc.py | 8 ++++++-- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism10.fits create mode 100644 pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism11.fits diff --git a/doc/spectrographs/not_alfosc.rst b/doc/spectrographs/not_alfosc.rst index 9ae40b5599..0a312dd18d 100644 --- a/doc/spectrographs/not_alfosc.rst +++ b/doc/spectrographs/not_alfosc.rst @@ -15,7 +15,14 @@ Common Items Grisms ++++++ -Currently only grisms 4, 7, 8, 17, 18 and 19 have full template solutions. +Currently only grisms 3, 4, 5, 7, 8, 10, 11 17, 18, 19 and 20 have full template solutions. + +Grisms 10 and 11 are very low-resolution and only occupy part of the detector. Depending on the window used, it may be useful to set the find_min_max parameter to some suitable range, e.g., +[reduce] + [[findobj]] + find_min_max = [0,680] +Furthermore, grisms 10 and 11 are so low resolution that the rms of the wavelength solution is often quite poor (roughly 0.2 pixels). + Vertical slits ++++++++++++++ diff --git a/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism10.fits b/pypeit/data/arc_lines/reid_arxiv/not_alfosc_grism10.fits new file mode 100644 index 0000000000000000000000000000000000000000..331061ad26468b7642a4bc20ad332757a464fc26 GIT binary patch literal 40320 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 a&=Ozb1qMH1ryh0)Jy^^B`ToDdf&T@aMguAU literal 0 HcmV?d00001 diff --git a/pypeit/spectrographs/not_alfosc.py b/pypeit/spectrographs/not_alfosc.py index 67d11700a7..2808173c2b 100644 --- a/pypeit/spectrographs/not_alfosc.py +++ b/pypeit/spectrographs/not_alfosc.py @@ -28,7 +28,7 @@ class NOTALFOSCSpectrograph(spectrograph.Spectrograph): url = 'https://www.not.iac.es/instruments/alfosc/' header_name = 'ALFOSC_FASU' supported = True - comment = 'For use with the standard horizontal slits only. Grisms 3, 4, 5, 7, 8, 17, 18, 19, 20' + comment = 'For use with the standard horizontal slits only. Grisms 3, 4, 5, 7, 8, 10, 11, 17, 18, 19, 20' def get_detector_par(self, det, hdu=None): """ @@ -280,6 +280,10 @@ def config_specific_par(self, scifile, inp_par=None): par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism7.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#8': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism8.fits' + elif self.get_meta_value(scifile, 'dispname') == 'Grism_#10': + par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism10.fits' + elif self.get_meta_value(scifile, 'dispname') == 'Grism_#11': + par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism11.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#17': par['calibrations']['wavelengths']['reid_arxiv'] = 'not_alfosc_grism17.fits' elif self.get_meta_value(scifile, 'dispname') == 'Grism_#18': @@ -302,7 +306,7 @@ class NOTALFOSCSpectrographVert(NOTALFOSCSpectrograph): Child to handle Vertical slits for NOT ALFOSC spectrograph """ name = 'not_alfosc_vert' - comment = 'Grisms 3, 4, 5, 7, 8, 17, 18, 19, 20. For vertical slits only' + comment = 'Grisms 3, 4, 5, 7, 8, 10, 11, 17, 18, 19, 20. For vertical slits only' def get_detector_par(self, det, hdu=None): """ From 64ee8b26286c11e67b6b113461619779786a94b0 Mon Sep 17 00:00:00 2001 From: Dave Date: Fri, 10 Feb 2023 14:16:56 +0000 Subject: [PATCH 31/46] Standards not properly commented --- pypeit/data/standards/ing/mSP0305p261.dat | 28 +++++++++++------------ pypeit/data/standards/ing/mSP0946p139.dat | 26 ++++++++++----------- pypeit/data/standards/ing/mSP1446p259.dat | 26 ++++++++++----------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/pypeit/data/standards/ing/mSP0305p261.dat b/pypeit/data/standards/ing/mSP0305p261.dat index 401d148651..0b806819a8 100644 --- a/pypeit/data/standards/ing/mSP0305p261.dat +++ b/pypeit/data/standards/ing/mSP0305p261.dat @@ -1,17 +1,17 @@ -* -* H D 1 9 4 4 5 -* -* Table file for HD19445 flux standard, based on data -* from Oke and Gunn, Ap.J. 266,713-717 Mar 1983. These data -* represent directly measured fluxes, and should be used accordingly. -* This file is designed for use with the Figaro routine GSPIKE. -* -SET .Z.UNITS = "AB Magnitudes" -SET .Z.LABEL = "Flux" -SET .Z.REVSCALE = 1 -SET .Z.MAGFLAG = 1 -SET .TABLE.BANDWIDTH = 40 -* +#* +#* H D 1 9 4 4 5 +#* +#* Table file for HD19445 flux standard, based on data +#* from Oke and Gunn, Ap.J. 266,713-717 Mar 1983. These data +#* represent directly measured fluxes, and should be used #accordingly. +#* This file is designed for use with the Figaro routine GSPIKE. +#* +#SET .Z.UNITS = "AB Magnitudes" +#SET .Z.LABEL = "Flux" +#SET .Z.REVSCALE = 1 +#SET .Z.MAGFLAG = 1 +#SET .TABLE.BANDWIDTH = 40 +#* 3080 9.476 40 3160 9.391 40 3240 9.310 40 diff --git a/pypeit/data/standards/ing/mSP0946p139.dat b/pypeit/data/standards/ing/mSP0946p139.dat index 2b05dca26b..6f9d205da9 100644 --- a/pypeit/data/standards/ing/mSP0946p139.dat +++ b/pypeit/data/standards/ing/mSP0946p139.dat @@ -1,16 +1,16 @@ -* -* H D 8 4 9 3 7 -* -* Table file for the flux standard star HD84937, taken from -* Oke and Gunn, Ap.J. 266, 713 (1983). Note that the data -* points are all for 40 A bands. This file is designed for -* use with the Figaro routine GSPIKE. -* -SET .Z.UNITS = "AB Magnitudes" -SET .Z.LABEL = "Flux" -SET .Z.REVSCALE = 1 -SET .TABLE.BANDWIDTH = 40 -* +#* +#* H D 8 4 9 3 7 +#* +#* Table file for the flux standard star HD84937, taken from +#* Oke and Gunn, Ap.J. 266, 713 (1983). Note that the data +#* points are all for 40 A bands. This file is designed for +#* use with the Figaro routine GSPIKE. +#* +#SET .Z.UNITS = "AB Magnitudes" +#SET .Z.LABEL = "Flux" +#SET .Z.REVSCALE = 1 +#SET .TABLE.BANDWIDTH = 40 +#* 3080 9.677 40 3160 9.610 40 3240 9.542 40 diff --git a/pypeit/data/standards/ing/mSP1446p259.dat b/pypeit/data/standards/ing/mSP1446p259.dat index 4dbe184088..0be2593412 100644 --- a/pypeit/data/standards/ing/mSP1446p259.dat +++ b/pypeit/data/standards/ing/mSP1446p259.dat @@ -1,16 +1,16 @@ -* -* B D + 2 6 2 6 0 6 -* -* Table file for the flux standard star BD+26 2606, taken from -* Oke and Gunn, Ap.J. 266, 713 (1983). Note that the data -* points are all for 40 A bands. This file is designed for -* use with the Figaro routine GSPIKE. -* -SET .Z.UNITS = "AB Magnitudes" -SET .Z.LABEL = "Flux" -SET .Z.REVSCALE = 1 -SET .TABLE.BANDWIDTH = 40 -* +#* +#* B D + 2 6 2 6 0 6 +#* +#* Table file for the flux standard star BD+26 2606, taken from +#* Oke and Gunn, Ap.J. 266, 713 (1983). Note that the data +#* points are all for 40 A bands. This file is designed for +#* use with the Figaro routine GSPIKE. +#* +#SET .Z.UNITS = "AB Magnitudes" +#SET .Z.LABEL = "Flux" +#SET .Z.REVSCALE = 1 +#SET .TABLE.BANDWIDTH = 40 +#* 3080 11.155 40 3160 11.072 40 3240 10.988 40 From dc0653c9fed67d1e4173dc55baa13bbfe9200706 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 10 Feb 2023 14:33:08 +0000 Subject: [PATCH 32/46] SOAR Goodman blue (M1) --- .../spectrographs/templ_soar_goodman.py | 2 +- .../soar_goodman_blue_400_SYZY.fits | Bin 0 -> 40320 bytes ...ZY.fits => soar_goodman_red_400_SYZY.fits} | Bin pypeit/spectrographs/soar_goodman.py | 301 ++++++++++++++++-- 4 files changed, 267 insertions(+), 36 deletions(-) create mode 100644 pypeit/data/arc_lines/reid_arxiv/soar_goodman_blue_400_SYZY.fits rename pypeit/data/arc_lines/reid_arxiv/{soar_goodman_400_SYZY.fits => soar_goodman_red_400_SYZY.fits} (100%) diff --git a/pypeit/core/wavecal/spectrographs/templ_soar_goodman.py b/pypeit/core/wavecal/spectrographs/templ_soar_goodman.py index a3a01913f5..f04bb4d9c4 100644 --- a/pypeit/core/wavecal/spectrographs/templ_soar_goodman.py +++ b/pypeit/core/wavecal/spectrographs/templ_soar_goodman.py @@ -7,7 +7,7 @@ def soar_goodman_400(overwrite=False): binspec = 2 - outroot = 'soar_goodman_400_SYZY.fits' + outroot = 'soar_goodman_red_400_SYZY.fits' # PypeIt fits wpath = os.path.join(templates.template_path, 'SOAR_Goodman', '400_SYZY') diff --git a/pypeit/data/arc_lines/reid_arxiv/soar_goodman_blue_400_SYZY.fits b/pypeit/data/arc_lines/reid_arxiv/soar_goodman_blue_400_SYZY.fits new file mode 100644 index 0000000000000000000000000000000000000000..587b439988224ea91c147ae16fc2fec72d0e10b8 GIT binary patch literal 40320 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 oddc3c+hfdMpgtJP@xQ Date: Fri, 10 Feb 2023 14:46:36 +0000 Subject: [PATCH 33/46] SOAR Goodman blue (M1) --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 364d24d768..7aeef0e531 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,6 +7,7 @@ - (Hotfix) Fixed error when showing flats in Ginga when the fine correction is not performed - Implemented the upgraded GTC/OSIRIS+ - (Hotfix) keymap error when displaying GUIs +- Implemented the SOAR/Goodman (blue) M1 only 1.12.0 (31 Jan 2023) -------------------- From 8f9db72a8abf35b20a18fe035368cf4700739203 Mon Sep 17 00:00:00 2001 From: Dave Date: Fri, 10 Feb 2023 15:22:39 +0000 Subject: [PATCH 34/46] Update CHANGES.rst --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 364d24d768..a4e1249245 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,6 +7,7 @@ - (Hotfix) Fixed error when showing flats in Ginga when the fine correction is not performed - Implemented the upgraded GTC/OSIRIS+ - (Hotfix) keymap error when displaying GUIs +- Added support for more NOT/ALFOSC grisms as well as NOT recommended standards 1.12.0 (31 Jan 2023) -------------------- From e49b375382926a200eb6cecf5a29e5ea50cdff36 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 11 Feb 2023 07:40:22 +0000 Subject: [PATCH 35/46] datasec --- pypeit/spectrographs/soar_goodman.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/pypeit/spectrographs/soar_goodman.py b/pypeit/spectrographs/soar_goodman.py index 61cc621b04..b910c4a4a4 100644 --- a/pypeit/spectrographs/soar_goodman.py +++ b/pypeit/spectrographs/soar_goodman.py @@ -437,25 +437,13 @@ def get_detector_par(self, det, hdu=None): numamplifiers=1, gain=gain, ronoise=ronoise, - datasec=datasec, - oscansec=oscansec + datasec=np.asarray(['[:,20:4112]']), + oscansec=np.asarray(['[:,2:16]']) ) if hdu is None: return detector_container.DetectorContainer(**detector_dict) - # Only tested for 2x2 - if binning == '2,2': - # parse TRIMSEC - col0 = int(hdu[1].header['TRIMSEC'][1:].split(':')[0]) - dsec = f"[:,{col0 * 2}:]" # rows, columns on the raw frame - detector_dict['datasec'] = np.atleast_1d(dsec) - # Overscan - osec = f"[:,1:{int(col0 * 2) - 2}:]" - detector_dict['oscansec'] = np.atleast_1d(osec) - else: - msgs.error("Ask the developers to add your binning. Or add it yourself.") - # Return return detector_container.DetectorContainer(**detector_dict) From 97dd784fc1e93ac2a9d1ddabd9e3c18b1d6161b5 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 11 Feb 2023 08:55:10 +0000 Subject: [PATCH 36/46] updated table --- doc/include/spectrographs_table.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/include/spectrographs_table.rst b/doc/include/spectrographs_table.rst index 67b8e3db1a..65eb9b5f36 100644 --- a/doc/include/spectrographs_table.rst +++ b/doc/include/spectrographs_table.rst @@ -10,7 +10,8 @@ gemini_gmos_north_ham_ns :class:`~pypeit.spectrographs.gemini_gmos.GeminiGMOSNH gemini_gmos_south_ham :class:`~pypeit.spectrographs.gemini_gmos.GeminiGMOSSHamSpectrograph` GEMINI-S GMOS-S `Link `__ MultiSlit True False Hamamatsu detector (R400, B600, R831); see :doc:`gemini_gmos` gemini_gnirs :class:`~pypeit.spectrographs.gemini_gnirs.GeminiGNIRSSpectrograph` GEMINI-N GNIRS `Link `__ Echelle True False gtc_osiris :class:`~pypeit.spectrographs.gtc_osiris.GTCOSIRISSpectrograph` GTC OSIRIS `Link `__ MultiSlit True False See :doc:`gtc_osiris` -jwst_nircam :class:`~pypeit.spectrographs.jwst_nircam.JWSTNIRCamSpectrograph` JWST NIRCAM `Link `__ MultiSlit False False +gtc_osiris_plus :class:`~pypeit.spectrographs.gtc_osiris.GTCOSIRISPlusSpectrograph` GTC OSIRIS+ `Link `__ MultiSlit True False See :doc:`gtc_osiris` +jwst_nircam :class:`~pypeit.spectrographs.jwst_nircam.JWSTNIRCamSpectrograph` JWST NIRCAM `Link `__ MultiSlit False False jwst_nirspec :class:`~pypeit.spectrographs.jwst_nirspec.JWSTNIRSpecSpectrograph` JWST NIRSPEC `Link `__ MultiSlit True False keck_deimos :class:`~pypeit.spectrographs.keck_deimos.KeckDEIMOSSpectrograph` KECK DEIMOS `Link `__ MultiSlit True True Supported gratings: 600ZD, 830G, 900ZD, 1200B, 1200G; see :doc:`deimos` keck_hires :class:`~pypeit.spectrographs.keck_hires.KECKHIRESSpectrograph` KECK HIRES `Link `__ Echelle True False @@ -47,7 +48,8 @@ shane_kast_blue :class:`~pypeit.spectrographs.shane_kast.ShaneKastBlue shane_kast_red :class:`~pypeit.spectrographs.shane_kast.ShaneKastRedSpectrograph` SHANE KASTr `Link `__ MultiSlit True True shane_kast_red_ret :class:`~pypeit.spectrographs.shane_kast.ShaneKastRedRetSpectrograph` SHANE KASTr `Link `__ MultiSlit True True Red reticon soar_goodman_red :class:`~pypeit.spectrographs.soar_goodman.SOARGoodmanRedSpectrograph` SOAR red `Link `__ MultiSlit True False Supported gratings: 400_SYZY at M1 and M2 tilts -tng_dolores :class:`~pypeit.spectrographs.tng_dolores.TNGDoloresSpectrograph` TNG DOLORES `Link `__ MultiSlit False False DOLORES (LRS) spectrograph; LR-R +soar_goodman_blue :class:`~pypeit.spectrographs.soar_goodman.SOARGoodmanBlueSpectrograph` SOAR blue `Link `__ MultiSlit True False Supported gratings: 400_SYZY at M1 tilts +tng_dolores :class:`~pypeit.spectrographs.tng_dolores.TNGDoloresSpectrograph` TNG DOLORES `Link `__ MultiSlit False False DOLORES (LRS) spectrograph; LR-R vlt_fors2 :class:`~pypeit.spectrographs.vlt_fors.VLTFORS2Spectrograph` VLT FORS2 `Link `__ MultiSlit True False 300I, 300V gratings vlt_sinfoni :class:`~pypeit.spectrographs.vlt_sinfoni.VLTSINFONISpectrograph` VLT SINFONI `Link `__ MultiSlit True False Gratings tested: K vlt_xshooter_nir :class:`~pypeit.spectrographs.vlt_xshooter.VLTXShooterNIRSpectrograph` VLT XShooter_NIR `Link `__ Echelle True False See :doc:`xshooter` From 16e59cf50bacdace76e74d922f862d86ad390a74 Mon Sep 17 00:00:00 2001 From: joe Date: Sat, 11 Feb 2023 20:58:19 -0800 Subject: [PATCH 37/46] Added docs and embed option. --- pypeit/scripts/view_fits.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pypeit/scripts/view_fits.py b/pypeit/scripts/view_fits.py index 3315ee0d0e..31eb901979 100644 --- a/pypeit/scripts/view_fits.py +++ b/pypeit/scripts/view_fits.py @@ -33,11 +33,14 @@ def get_parser(cls, width=None): help='Show a FITS extension in the raw file. Note --proc and --mosaic ' 'will not work with this option.') parser.add_argument('--det', type=str, default='1', nargs='*', - help='Detector(s) to show. If more than one, the list of detectors ' - 'must be one of the allowed mosaics hard-coded for the selected ' + help='Detector(s) to show. If more than one, the list of detectors, i.e. --det 4 8 ' + 'to show detectors 4 and 8. This combination must be one of the allowed ' + 'mosaics hard-coded for the selected ' 'spectrograph. Using "mosaic" for gemini_gmos, keck_deimos, or ' 'keck_lris will show the mosaic of all detectors.') parser.add_argument('--chname', type=str, default='Image', help='Name of Ginga tab') + parser.add_argument('--embed', default=False, action='store_true', + help='Upon completion embed in ipython shell') return parser @staticmethod @@ -126,3 +129,6 @@ def main(args): display.show_image(img, chname=args.chname) + if args.embed: + embed() + From d0ca683d9d3f4c22c9f2b91f1bc3af5f5f3b4075 Mon Sep 17 00:00:00 2001 From: profxj Date: Sun, 12 Feb 2023 11:19:17 -0800 Subject: [PATCH 38/46] PR edits --- pypeit/core/skysub.py | 7 +++++-- pypeit/extraction.py | 35 ----------------------------------- pypeit/slittrace.py | 2 +- 3 files changed, 6 insertions(+), 38 deletions(-) diff --git a/pypeit/core/skysub.py b/pypeit/core/skysub.py index 070d139ef7..e52717131c 100644 --- a/pypeit/core/skysub.py +++ b/pypeit/core/skysub.py @@ -1222,23 +1222,26 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, uni_objid = np.unique(sobjs[sobjs.sign > 0].ECH_OBJID) nobjs = len(uni_objid) order_snr = np.zeros((norders, nobjs)) + order_snr_gpm = np.ones_like(order_snr) for iord in range(norders): for iobj in range(nobjs): ind = (sobjs.ECH_ORDERINDX == iord) & (sobjs.ECH_OBJID == uni_objid[iobj]) # Allow for missed/bad order if np.sum(ind) == 0: - order_snr[iord,iobj] = -np.nan + order_snr_gpm[iord,iobj] = False else: order_snr[iord,iobj] = sobjs[ind].ech_snr # Compute the average SNR and find the brightest object - snr_bar = np.nanmean(order_snr,axis=0) + snr_bar = np.sum(order_snr,axis=0) / np.sum(order_snr_gpm,axis=0) srt_obj = snr_bar.argsort()[::-1] ibright = srt_obj[0] # index of the brightest object + # Now extract the orders in descending order of S/N for the brightest object srt_order_snr = order_snr[:,ibright].argsort()[::-1] fwhm_here = np.zeros(norders) fwhm_was_fit = np.zeros(norders,dtype=bool) + # Print out a status message str_out = '' for iord in srt_order_snr: diff --git a/pypeit/extraction.py b/pypeit/extraction.py index 98946a0514..60a5b17af7 100644 --- a/pypeit/extraction.py +++ b/pypeit/extraction.py @@ -266,15 +266,6 @@ def nsobj_to_extract(self): else: return 0 -# @property -# def nobj_to_extract(self): -# """ -# Number of objects to extract. Defined in children -# Returns: -# -# """ -# return None - def initialise_slits(self, slits, initial=False): """ Gather all the :class:`SlitTraceSet` attributes @@ -688,16 +679,6 @@ def __init__(self, sciImg, slits, sobjs_obj, spectrograph, par, objtype, **kwarg super().__init__(sciImg, slits, sobjs_obj, spectrograph, par, objtype, **kwargs) -# @property -# def nobj_to_extract(self): -# """ -# See parent method docs. -# -# Returns: -# -# """ -# return self.nsobj_to_extract - # TODO: JFH Should we reduce the number of iterations for standards or # near-IR redux where the noise model is not being updated? def local_skysub_extract(self, global_sky, sobjs, spat_pix=None, model_noise=True, @@ -836,22 +817,6 @@ def __init__(self, sciImg, slits, sobjs_obj, spectrograph, par, objtype, **kwarg msgs.error('Unable to set Echelle orders, likely because they were incorrectly ' 'assigned in the relevant SlitTraceSet.') - -# @property -# def nobj_to_extract(self): -# """ -# See parent method docs. -# -# Returns: -# -# """ -# -# norders = self.order_vec.size -# if (self.nsobj_to_extract % norders) == 0: -# return int(self.nsobj_to_extract/norders) -# else: -# msgs.error('Number of specobjs in sobjs is not an integer multiple of the number or orders!') - # JFH TODO Should we reduce the number of iterations for standards or near-IR redux where the noise model is not # being updated? def local_skysub_extract(self, global_sky, sobjs, diff --git a/pypeit/slittrace.py b/pypeit/slittrace.py index 524f8c6e38..4ff67239a3 100644 --- a/pypeit/slittrace.py +++ b/pypeit/slittrace.py @@ -45,7 +45,7 @@ def __init__(self): ('BADTILTCALIB', 'Tilts analysis failed for this slit'), ('SKIPFLATCALIB', 'Flat field generation failed for this slit. Skip flat fielding'), ('BADFLATCALIB', 'Flat field generation failed for this slit. Ignore it fully.'), - ('BADREDUCE', 'Reduction failed for this slit'), # THIS IS DEPRECATED BUT STAYS HERE TO ALLOW FOR BACKWARDS COMPATIBILITY + ('BADREDUCE', 'Reduction failed for this slit'), # THIS IS DEPRECATED (we may remove in v1.13) BUT STAYS HERE TO ALLOW FOR BACKWARDS COMPATIBILITY ('BADSKYSUB', 'Skysub failed for this slit'), ('BADEXTRACT', 'Extraction failed for this slit'), ]) From 5c1435493e66578ad88cc650936565bf484ecb8b Mon Sep 17 00:00:00 2001 From: profxj Date: Sun, 12 Feb 2023 14:40:03 -0800 Subject: [PATCH 39/46] bugs --- pypeit/core/skysub.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pypeit/core/skysub.py b/pypeit/core/skysub.py index e52717131c..cc093698f6 100644 --- a/pypeit/core/skysub.py +++ b/pypeit/core/skysub.py @@ -1245,7 +1245,7 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, # Print out a status message str_out = '' for iord in srt_order_snr: - if np.isfinite(order_snr[iord,ibright]): + if order_snr_gpm[iord,ibright]: str_out += '{:<8d}{:<8d}{:>10.2f}'.format(slit_vec[iord], order_vec[iord], order_snr[iord,ibright]) + msgs.newline() dash = '-'*27 dash_big = '-'*40 @@ -1255,7 +1255,7 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, # Loop over orders in order of S/N ratio (from highest to lowest) for the brightest object for iord in srt_order_snr: # Is this a bad slit? - if not np.any(np.isfinite(order_snr[iord,:])): + if not np.any(order_snr_gpm[iord,:]): continue order = order_vec[iord] msgs.info("Local sky subtraction and extraction for slit/order: {:d}/{:d}".format(iord,order)) @@ -1292,7 +1292,10 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, spec.FWHM = fwhm_this_ord str_out = '' - for slit_now, order_now, snr_now, fwhm_now in zip(slit_vec[other_orders], order_vec[other_orders],order_snr[other_orders,ibright], fwhm_here[other_orders]): + for slit_now, order_now, snr_now, fwhm_now in zip( + slit_vec[other_orders], order_vec[other_orders], + order_snr[other_orders,ibright], + fwhm_here[other_orders]): str_out += '{:<8d}{:<8d}{:>10.2f}{:>10.2f}'.format(slit_now, order_now, snr_now, fwhm_now) + msgs.newline() msgs.info(msgs.newline() + 'Using' + fwhm_str + ' for FWHM of object={:d}'.format(uni_objid[iobj]) + ' on slit/order: {:d}/{:d}'.format(iord,order) + msgs.newline() + dash_big + From 5574d9cc077adef570c39f431a4a9aacc45d405c Mon Sep 17 00:00:00 2001 From: profxj Date: Mon, 13 Feb 2023 12:45:19 -0800 Subject: [PATCH 40/46] docs and docs --- doc/coadd1d.rst | 9 ++++-- doc/out_onespec.rst | 52 +++++++++++++++++++++++++++++++++++ pypeit/core/telluric.py | 37 ++++++++++++------------- pypeit/scripts/show_1dspec.py | 3 +- pypeit/specobjs.py | 4 +++ 5 files changed, 81 insertions(+), 24 deletions(-) create mode 100644 doc/out_onespec.rst diff --git a/doc/coadd1d.rst b/doc/coadd1d.rst index f91c69d1b1..7ff04ea909 100644 --- a/doc/coadd1d.rst +++ b/doc/coadd1d.rst @@ -284,16 +284,19 @@ be provided directly using the ``coadd1dfile`` parameter in the is ``coadd1d___.fits`` or ``coadd1d___-.fits``, if the coadd included more than one day's worth of data. The default location of the file -will be along side the first spec1d file. Currently ``instrument_name`` is +will be along side the first spec1d file. +Currently ``instrument_name`` is taken from the ``camera`` attribute of the relevant :class:`~pypeit.spectrographs.spectrograph.Spectrograph` class. The format of the 1D coadd file follows follows the general -class :class:`~pypeit.onespec.OneSpec`, such that its file extensions are: +class :class:`~pypeit.onespec.OneSpec`, such +that its file extensions are: .. include:: include/datamodel_onespec.rst -You view the spectrum using the ``lt_xspec`` script, which loads the data +You view the spectrum using the ``lt_xspec`` script +(``pypeit_show_1dspec`` will not work), which loads the data and launches a GUI from the `linetools`_ package. e.g.: .. code-block:: console diff --git a/doc/out_onespec.rst b/doc/out_onespec.rst new file mode 100644 index 0000000000..b0a8fae775 --- /dev/null +++ b/doc/out_onespec.rst @@ -0,0 +1,52 @@ + +.. include:: include/links.rst + +.. _onespec: + +======= +OneSpec +======= + +Overview +======== + +Generally, the ultimate PypeIt spectrum output is a single +spectrum per source, fully calibrated and (as desired) +with a :doc:`telluric` performed. + +The standard way to generate this file is +with the :ref:`_pypeit_coadd_1dspec` script. + +The naming of this file is user-generated, +i.e. it can be anything you wish. + +The header of the primary extension includes the +`core_meta` of PypeIt, e.g. RA, DEC, MJD, and +configuration parmaeters of the instrument. + +Inspection +========== + +You view the spectrum using the ``lt_xspec`` script +(``pypeit_show_1dspec`` will not work), which loads the data +and launches a GUI from the `linetools`_ package. e.g.: + +.. code-block:: console + + lt_xspec J1217p3905_coadd.fits + + +Current Data Model +================== + +Internally, the spectrum for a single object is held by the +:class:`~pypeit.onespec.OneSpec` class. + +Here is its datamodel, which +is written as an `astropy.io.fits.BinTableHDU`_ in the +first HDU of the file. + +.. include:: include/datamodel_onespec.rst + +All wavelengths are in vacuum and flux units +depend on whether :doc:`Fluxing` was performed. diff --git a/pypeit/core/telluric.py b/pypeit/core/telluric.py index 531bd68244..437b335fa3 100644 --- a/pypeit/core/telluric.py +++ b/pypeit/core/telluric.py @@ -627,12 +627,25 @@ def general_spec_reader(specfile, ret_flam=False): The 6th is a :obj:`dict` of metadata. And the 7th is an `astropy.io.fits.Header`_ object with the primary header from the input file. """ - # Place holder routine that provides a generic spectrum reader bonus = {} - try: #TODO JFH Please fix this try except issue. Can we determine datatype from file header? - # Read in the standard spec1d file produced by Pypeit - #sobjs, head = load.load_specobjs(specfile) + # Figure out which flavor input file + hdul = fits.open(specfile) + if 'DMODCLS' in hdul[1].header and hdul[1].header['DMODCLS'] == 'OneSpec': + # Load + spec = onespec.OneSpec.from_file(specfile) + # Unpack + wave = spec.wave + # wavelength grid evaluated at the bin centers, uniformly-spaced in lambda or log10-lambda/velocity. + # see core.wavecal.wvutils.py for more info. + # variable defaults to None if datamodel for this is also None (which is the case for spec1d file). + wave_grid_mid = spec.wave_grid_mid + counts = spec.flux + counts_ivar = spec.ivar + counts_gpm = spec.mask.astype(bool) + spect_dict = spec.spect_meta + head = spec.head0 + else: sobjs = specobjs.SpecObjs.from_fitsfile(specfile, chk_version=False) if np.sum(sobjs.OPT_WAVE) is None: raise ValueError("This is an ugly hack until the DataContainer bug is fixed") @@ -656,22 +669,6 @@ def general_spec_reader(specfile, ret_flam=False): spectrograph = load_spectrograph('shane_kast_blue') spect_dict = spectrograph.parse_spec_header(head) head['PYP_SPEC'] = spectrograph.name - except: - #TODO Make it so that we can type a file based on the DataContainer file header - msgs.warn('Ignore the error message above. This is a hack for now until DataContainer is tightened up') - # Load - spec = onespec.OneSpec.from_file(specfile) - # Unpack - wave = spec.wave - # wavelength grid evaluated at the bin centers, uniformly-spaced in lambda or log10-lambda/velocity. - # see core.wavecal.wvutils.py for more info. - # variable defaults to None if datamodel for this is also None (which is the case for spec1d file). - wave_grid_mid = spec.wave_grid_mid - counts = spec.flux - counts_ivar = spec.ivar - counts_gpm = spec.mask.astype(bool) - spect_dict = spec.spect_meta - head = spec.head0 # Build this meta_spec = dict(bonus=bonus) diff --git a/pypeit/scripts/show_1dspec.py b/pypeit/scripts/show_1dspec.py index 2bc4ea98dd..6775499f9d 100644 --- a/pypeit/scripts/show_1dspec.py +++ b/pypeit/scripts/show_1dspec.py @@ -40,7 +40,8 @@ def main(args): from pypeit import specobjs from pypeit import msgs - sobjs = specobjs.SpecObjs.from_fitsfile(args.file, chk_version=False) + sobjs = specobjs.SpecObjs.from_fitsfile(args.file, + chk_version=False) # List only? if args.list: diff --git a/pypeit/specobjs.py b/pypeit/specobjs.py index 6093fb710d..dd6e1c1471 100644 --- a/pypeit/specobjs.py +++ b/pypeit/specobjs.py @@ -79,6 +79,10 @@ def from_fitsfile(cls, fits_file, det=None, chk_version=True): slf.header = hdul[0].header # Keep track of HDUList for closing later + # Catch common error of trying to read a OneSpec file + if 'DMODCLS' in hdul[1].header and hdul[1].header['DMODCLS'] == 'OneSpec': + msgs.error('This is a OneSpec file. You are treating it like a SpecObjs file.') + detector_hdus = {} # Loop for Detectors first as we need to add these to the objects for hdu in hdul[1:]: From c6e0a75bd5a68b47b5f92587449cd97af86e8913 Mon Sep 17 00:00:00 2001 From: profxj Date: Mon, 13 Feb 2023 13:53:05 -0800 Subject: [PATCH 41/46] turn on 3.10 and turn down from 3.11 --- CHANGES.rst | 2 ++ doc/installing.rst | 2 +- setup.cfg | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 05f804a830..f330993343 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -31,6 +31,8 @@ - Parse Keck/NIRES dither patterns, similar to MOSFIRE - Introduce BitMaskArray class to ease use of bitmasks - Fixed memory hogging by matplotlib when using version >= 3.6.1 +- New docs on OneSpec +- Modify install notes to allow 3.10 1.11.0 (21 Oct 2022) -------------------- diff --git a/doc/installing.rst b/doc/installing.rst index e8c56ee62f..bb4a90498a 100644 --- a/doc/installing.rst +++ b/doc/installing.rst @@ -18,7 +18,7 @@ Installation .. warning:: - Python 3.10 is not yet supported. + Python 3.11 is not yet supported. Below, we provide detailed instructions for installing PypeIt. For troubleshooting, please consult the PypeIt :ref:`community` and/or `submit diff --git a/setup.cfg b/setup.cfg index fc55361f02..762e1ee0f4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -17,8 +17,8 @@ classifiers = Natural Language :: English Operating System :: OS Independent Programming Language :: Python - Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 Topic :: Documentation :: Sphinx Topic :: Scientific/Engineering :: Astronomy Topic :: Software Development :: Libraries :: Python Modules @@ -28,7 +28,7 @@ classifiers = zip_safe = False use_2to3=False packages = find: -python_requires = >=3.8,<3.12 +python_requires = >=3.8,<3.11 setup_requires = setuptools_scm include_package_data = True install_requires = From af0d3514e12b8ecc6804cbbdb4590b93219821a6 Mon Sep 17 00:00:00 2001 From: joe Date: Mon, 13 Feb 2023 15:29:23 -0800 Subject: [PATCH 42/46] Addressing PR comments. --- pypeit/scripts/show_2dspec.py | 4 +++- pypeit/scripts/view_fits.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pypeit/scripts/show_2dspec.py b/pypeit/scripts/show_2dspec.py index 2928dbceda..a058b9d68f 100644 --- a/pypeit/scripts/show_2dspec.py +++ b/pypeit/scripts/show_2dspec.py @@ -18,6 +18,7 @@ from pypeit import slittrace from pypeit import specobjs from pypeit import io +from pypeit import utils from pypeit.display import display from pypeit.images.imagebitmask import ImageBitMask @@ -284,7 +285,8 @@ def main(args): {}) if args.embed: - embed() + embed(header=utils.embed_header()) + # Playing with some mask stuff #out = shell.start_operation('TVMask') diff --git a/pypeit/scripts/view_fits.py b/pypeit/scripts/view_fits.py index 31eb901979..9cebd3ffcf 100644 --- a/pypeit/scripts/view_fits.py +++ b/pypeit/scripts/view_fits.py @@ -8,6 +8,7 @@ from IPython import embed from pypeit.scripts import scriptbase +from pypeit import utils class ViewFits(scriptbase.ScriptBase): @@ -130,5 +131,5 @@ def main(args): if args.embed: - embed() + embed(header=utils.embed_header()) From b4a6ff8f43d91eeca3bc30269eebfe1b6746933e Mon Sep 17 00:00:00 2001 From: Ryan Cooke Date: Tue, 14 Feb 2023 12:37:49 +0000 Subject: [PATCH 43/46] typo --- doc/coadd1d.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/coadd1d.rst b/doc/coadd1d.rst index 7ff04ea909..fcd3747564 100644 --- a/doc/coadd1d.rst +++ b/doc/coadd1d.rst @@ -289,7 +289,7 @@ Currently ``instrument_name`` is taken from the ``camera`` attribute of the relevant :class:`~pypeit.spectrographs.spectrograph.Spectrograph` class. -The format of the 1D coadd file follows follows the general +The format of the 1D coadd file follows the general class :class:`~pypeit.onespec.OneSpec`, such that its file extensions are: From f1351cc40c77d7eec3e8b37d7d2e92623fa70797 Mon Sep 17 00:00:00 2001 From: Ryan Cooke Date: Tue, 14 Feb 2023 12:41:00 +0000 Subject: [PATCH 44/46] typo --- doc/out_onespec.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/out_onespec.rst b/doc/out_onespec.rst index b0a8fae775..c79f0877ff 100644 --- a/doc/out_onespec.rst +++ b/doc/out_onespec.rst @@ -22,7 +22,7 @@ i.e. it can be anything you wish. The header of the primary extension includes the `core_meta` of PypeIt, e.g. RA, DEC, MJD, and -configuration parmaeters of the instrument. +configuration parameters of the instrument. Inspection ========== From 504cb8d2a722de71e1e33ed0780c62fece3d9710 Mon Sep 17 00:00:00 2001 From: profxj Date: Tue, 14 Feb 2023 23:22:24 -0800 Subject: [PATCH 45/46] comma me --- pypeit/scripts/collate_1d.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pypeit/scripts/collate_1d.py b/pypeit/scripts/collate_1d.py index 835eade328..46c8047a88 100644 --- a/pypeit/scripts/collate_1d.py +++ b/pypeit/scripts/collate_1d.py @@ -521,7 +521,7 @@ def build_parameters(args): params['collate1d']['match_using'] = args.match_using if args.exclude_slit_bm is not None and len(args.exclude_slit_bm) > 0: - params['collate1d']['exclude_slit_trace_bm'] = args.exclude_slit_bm + params['collate1d']['exclude_slit_trace_bm'] = args.exclude_slit_bm.split(',') if args.exclude_serendip: params['collate1d']['exclude_serendip'] = True @@ -648,8 +648,8 @@ def get_parser(cls, width=None): parser.add_argument('--dry_run', action='store_true', help=blank_par.descr['dry_run']) parser.add_argument('--ignore_flux', default=False, action='store_true', help=blank_par.descr['ignore_flux']) parser.add_argument('--flux', default=False, action = 'store_true', help=blank_par.descr['flux']) - parser.add_argument('--exclude_slit_bm', type=str, nargs='*', - help=blank_par.descr['exclude_slit_trace_bm']) + parser.add_argument('--exclude_slit_bm', type=str, # nargs='*', + help=blank_par.descr['exclude_slit_trace_bm']+' Comma separated.') parser.add_argument('--exclude_serendip', action='store_true', help=blank_par.descr['exclude_serendip']) parser.add_argument("--wv_rms_thresh", type=float, default = None, help=blank_par.descr['wv_rms_thresh']) From da2e0b2522a5127f0c7046a4f8c64473251e00d5 Mon Sep 17 00:00:00 2001 From: profxj Date: Thu, 16 Feb 2023 16:30:10 -0800 Subject: [PATCH 46/46] restart tests --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index d8230ef261..6699565c33 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -31,7 +31,7 @@ - Parse Keck/NIRES dither patterns, similar to MOSFIRE - Introduce BitMaskArray class to ease use of bitmasks - Fixed memory hogging by matplotlib when using version >= 3.6.1 -- Allow for bad orders during extraction (without crashing) +- Allow for bad orders during extraction (without crashing) 1.11.0 (21 Oct 2022) --------------------