DOI: 10.5281/zenodo.10693685
title: Data and software: 'Measuring Fiber Positioning Accuracy and Throughput with Fiber Dithering for the Dark Energy Spectroscopic Instrument'

description: Supplementary material to the DESI publication "Survey Operations for the Dark Energy Spectroscopic Instrument".

The main "figures.py" script generates the figures in the paper from the included data files.  The software relies on the DESI software stack available at github.com/desihub, and conveniently available at NERSC in the default DESI environment.  The main fiber dither analysis code is currently housed in the 'desicmx' product on desihub (github.com/desihub/desicmx).

Contents:

A .tar.gz file, containing the following:

Software files



figures.py: Main dither analysis plotting routines.  Uses the github.com/desihub/desicmx/analysis/dither package for some bits of the analysis.  The "make_all_figures" routine generates all of the figures in the paper. 

util_efs.py: plotting routines


Data files



dither202*.fits: data & analysis results for each dither sequence.  Each sequence is identified by the night it was taken on, and a number of files are produced for it.  We describe one example here:



dither20210916.fits



All information entering into the fit from the sequence.  Contains three extensions, one for each of the BRZ bands.  Each extension contains the following:



expid - exposure number

exptime - shutter open length

mjd_obs - MJD of exposure

targetid - DESI target ID of target for each target

camera - camera used for computing flux

target_ra, target_dec - ra/dec of target

fiber - fiber number

objtype - morphological type of target from imaging; PSF for dither targets

flux_g,r,z - imaging fluxes from Legacy Survey in grz bands

spectroflux - spectroscopic flux from integrating over the DESI spectrum

spectroflux_ivar - inverse variance corresponding to spectroflux

delta_{x,y}_arcsec - intended fiber dither

{x,y}focal - position of fiber in focal plane





dither20210916-{B/R/Z}.fits - dither analysis for each of the BRZ filters.  Two extensions.



First extension: dither analysis results.  Contains:



{x,y}tel: fit telescope offsets (arcsec)

d{x,y}tel: uncertainty in {x,y}tel

targetid: DESI target id

transparency - fit transparency for each exposure

dtransparency - uncertainty in transparency

psfparam - fit PSF parameters; array of [FWHM, Moffat index, ellipticity in the x direction, ellipticity in the y direction]

dpsfparam - uncertainties in psf parameters

starflux - predicted total star fluxes before transparency & fiber aperture losses

dstarflux - uncertainties in starflux

{x,y}fiboff - predicted systematic fiber offset (the ~chief result of this work)

d{x,y}fiboff - the uncertainty in {x,y}fiboff

chi2fib - the chi^2 of the fit for this fiber

chi2fibnull - the chi^2 of the fit for this fiber for an extremely dumb null hypothesis where the true flux entering the fiber is always equal to zero.

guessflux - a guess for the starflux based on the imaging magnitude; basically the imaging flux times an appropriate constant depending on the size of the DESI mirror, the width of the spectral bandpass, and the DESI system throughput

fiber - the fiber number

expid - the exposure number

fiber_ditherfit_{ra,dec} - the predicted ra & dec of each fiber, incorporating the intended location, the telescope offsets, the intentional dither offsets, and the systematic positioning offset

modflux - the model flux entering the fiber for each target & exposure.



Second extension: the data on which the dither results are based.  This is just copied from the ditherYYYYMMDD.fits files for the appropriate filter, and selected down to just the fibers for which there was enough information to do the full fiber dither fit.





gfa-matched-coadds-ditheronly.fits: information recorded by the DESI guide-focus-array cameras for each dither exposure.  Fields used by the dither analysis include:



expid - the exposure id

night - the night the exposure was taken on

fwhm_asec - the FWHM measured by the guider in arcsec

fiber_fracflux - the fraction of the flux the guider estimates would enter the fiber for a point source perfectly centered in the aperture

transparency - the transparency of the exposure estimated from the guider

airmass - the airmass of the exposure



simulation-results.pkl: results from the simulation.  This is a nasty python dictionary.  The top level of the dictionary contains the name of the scheme that was tested, with names like 'triangles 0.8' saying that it corresponds to the 'triangles' scheme of dithers with a scale of 0.8 arcseconds.  Each entry contains a list of two items.  The first item is the simulation truth values, and the second item is the fit results.



truth items:



data: subset of information in data files needed for dither analysis

xtel, ytel, fwhm, transparency, xfiboff, yfiboff, starflux: true parameters for each exposure and target in the simulation



fit items:



xtel, dxtel, ytel, dytel, transparency, dtransparency, psfparam, dpsfparam, starflux, dstarflux, xfiboff, dxfiboff, yfiboff, dyfiboff, chi2fib, chi2fibnull, guessflux, fiber, expid, fiber_ditherfit_ra, fiber_ditherfit_dec, modflux

These are all documented above in the dither analysis results.





data/wave*.dat: optical ray tracing results.  The dither figure uses the 'xave' and 'yave' values, which correspond to the locations in the focal plane that the ray tracing predicts each ray will land.  The different files correspond to different wavelengths, positions on the sky, and dates.


Dependencies: The included software uses the 'desimeter' and 'desimodel' packages, available on github through the desihub organization.  Otherwise it depends on the usual astronomy software stack: numpy scipy matplotlib astropy.  Alternatively, people with access to NERSC can load the default DESI environment and pull in all needed dependencies.