|
IDL Help for IDLSPEC2DThis page was created by the IDL library routine
? mk_html_help at the IDL command line prompt. Last modified: Wed Apr 26 19:41:01 2000.
List of Routines
Routine DescriptionsARCFIT_GUESS[Next Routine] [List of Routines] NAME: arcfit_guess PURPOSE: Determine initial wavelength solution by comparing spectrum to arc spectrum CALLING SEQUENCE: wset = arcfit_guess( spec, loglam, intensity, color=color, $ [ func=func, bestcorr=bestcorr ] ) INPUTS: spec - 1-D spectrum loglam - Log-lambda of arc lines intensity - Intensity of arc lines REQUIRED KEYWORDS: color - 'red' or 'blue' OPTIONAL KEYWORDS: func - Name of fitting function; default to 'legendre' OUTPUTS: wset - traceset (pix - lambda) OPTIONAL OUTPUTS: bestcorr - Correlation coefficient with simulated arc spectrum COMMENTS: EXAMPLES: BUGS: INTERNAL SUPPORT PROCEDURES: tset_struc() arcfit_iter() PROCEDURES CALLED: traceset2xy() xy2traceset REVISION HISTORY: 18-Nov-1999 Written by D. Schlegel, Princeton. Excised code from FITARCIMAGE. (See pro/spec2d//arcfit_guess.pro)
COMBINE2DOUT[Previous Routine] [Next Routine] [List of Routines] NAME: combine2dout PURPOSE: Combine several reduced frames of the same objects CALLING SEQUENCE: combine2dout, filenames, outputroot, spectrographid, $ binsz, zeropoint, nord=nord, wavemin=wavemin, $ bkptbin=bkptbin, everyn=everyn, display=display, window=window, $ individual=individual INPUTS: filenames - Name(s) of files written by SPREDUCE outputroot - Root name for all output files spectrographid - Spectrograph ID (1 or 2) for use in computing fiber number for output file name; fibers from spectro-1 are numbered from 1, those from spectro-2 from 321. REQUIRED KEYWORDS: OPTIONAL KEYWORDS: display - Show QA plot for each combined spectrum individual - Append individual spectra in HDU's after combined spectra OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: This routine also outputs original 2048 spectra with mask pixels replaced with their b-spline values. Helpful for FFT EXAMPLES: BUGS: PROCEDURES CALLED: djs_oplot djs_plot djs_maskinterp() mrdfits() writefits INTERNAL SUPPORT PROCEDURES: makelabel() REVISION HISTORY: ??-Sep-1999 Written by S. Burles 02-Jan-2000 Modified by D. Schlegel, Princeton (See pro/spec2d//combine2dout.pro)
DIVIDEFLAT[Previous Routine] [Next Routine] [List of Routines] NAME: divideflat PURPOSE: Divide an extracted image with a fiber-flat CALLING SEQUENCE: divideflat, flux, fluxivar, fflat, [ fibermask=fibermask, minval=minval ] INPUTS: flux - Array of extracted flux from a flat-field image [Nrow,Ntrace] fluxivar - Inverse variance map for FLUX. fflat - Array of flat-field flat-field vectors [Nrow,Ntrace] OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] minval - Minimum value to consider good for flat-field; default to 0.03. OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: Wherever the fiber is denoted bad in FIBERMASK, or wherever FFLAT is <= MINVAL, we set FLUX=FLUXIVAR=0. EXAMPLES: BUGS: PROCEDURES CALLED: splog REVISION HISTORY: 17-Nov-1999 Written by S. Burles, Chicago 23-Nov-1999 Modified by D. Schlegel, Princeton (See pro/spec2d//divideflat.pro)
EXTRACT_BOXCAR[Previous Routine] [Next Routine] [List of Routines] NAME: extract_boxcar PURPOSE: Extract the total flux within a boxcar window at many positions. CALLING SEQUENCE: fextract = extract_boxcar( fimage, xcen, ycen, [radius=radius] ) INPUTS: fimage - Image xcen - Initial guesses for X centers ycen - Y positions corresponding to "xcen" (expected as integers) OPTIONAL KEYWORDS: radius - Radius of extraction; default to 3.0 OUTPUTS: fextract - Extracted flux at each position specified by (xcen, ycen) OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: PROCEDURES CALLED: Dynamic link to extract_boxcar.c REVISION HISTORY: 24-Mar-1999 Written by David Schlegel, Princeton. (See pro/spec2d//extract_boxcar.pro)
EXTRACT_IMAGE[Previous Routine] [Next Routine] [List of Routines] NAME: extract_image PURPOSE: Extract the fiber profile flux for an entire image CALLING SEQUENCE: extract_image(fimage, invvar, xcen, sigma, flux, [finv, yrow=yrow, ymodel=ymodel, fscat=fscat,proftype = proftype,ansimage=ansimage, wfixed=wfixed, mask=mask, pixelmask=, reject=, wsigma=, nPoly=nPoly, maxIter=maxIter, highrej=highrej, lowrej=lowrej, fitans=fitans, whopping=whopping,relative=relative]) INPUTS: fimage - Image[nCol, nRow] invvar - Inverse Variance[nCol, nRow] xcen - Initial guesses for X centers[nRow, nFibers] sigma - sigma of gaussian profile; default to 1.0 (scalar or [nFibers] or [nRow, nFibers]) OPTIONAL KEYWORDS: yrow - long array specifying which rows to extract, default is all proftype - currently, one can only use 1: Gaussian (scalar) - or 2: Exp Cubic - or 3: Double Gaussian - or 4: Exp Cubic with doublewide Gaussian ansimage - return the coefficients of fit for each row [nCoeff,nRow] wfixed - array of 1's and zero's which set which parameters are fixed. e.g. [1] just gaussian's with fixed width sigma [1, 1] fit gaussian + sigma correction [1, 0, 1] fit gaussian + center correction [1, 1, 1] fit gaussian + sigma and center corrections. mask - byte mask: 1 is good and 0 is bad [nCol,nRow] pixelmask - bits set due to extraction rejection [nRow,nFiber] reject - two elements array setting partial and full rejection thresholds nPoly - order of chebyshev scattered light background; default to 4 maxIter - maximum number of profile fitting iterations; default to 20 highrej - positive sigma deviation to be rejected (default 10.0) lowrej - negative sigma deviation to be rejected (default 10.0) fitans - ratio of profiles to do in single profile fitting relative - Scale rejection thresholds by reduced chi-squared (default 0) whopping - traces which have WHOPPINGingly high counts, and need extra background terms wsigma - sigma width of whopping profile (exponential, default 25) OUTPUTS: flux - Total extracted flux in each profile [nRowExtract, nFibers] OPTIONAL OUTPUTS: mask - modified by setting the values of bad pixels to 0 finv - Estimated inverse variance each profile [nRowExtract, nFibers] ymodel - model best fit of row[nCol, nRow] fscat - scattered light contribution in each fiber[nRow, nFibers] COMMENTS: EXAMPLES: PROCEDURES CALLED: extract_row.pro REVISION HISTORY: 8-Aug-1999 Version 0.0 Scott Burles, Chicago (See pro/spec2d//extract_image.pro)
EXTRACT_OBJECT[Previous Routine] [Next Routine] [List of Routines] NAME: extract_object PURPOSE: Performs all object extraction tasks 0) Locate bright fibers, and test image background 1) 3 step Optimal extraction 2) Tweak to sky lines 3) Sky subtraction 4) Flux calibration 5) Telluric correction CALLING SEQUENCE: extract_object, outname, objhdr, image, invvar, plugsort, wset, $ xarc, lambda, xtrace, fflat, fibermask, color=, [plottitle=] INPUTS: outname - Name of outputs FITS file objhdr - Header cards from object image image - Object image [nx,ny] invvar - Inverse Variance of object image [nx,ny] plugsort - Plugmap structure for [ntrace] spectra wset - wavelength solution from arc line spectra xarc - centroids measured in arc line spectra lambda - air wavelengths corresponding to xarc xtrace - spatial traces from flat field fflat - 1d flat field vectors fibermask - Fiber status bits, set nonzero for bad status [NFIBER] REQUIRED KEYWORDS: color - camera color (red or blue) OPTIONAL KEYWORDS: plottitle - Prefix for titles in QA plots. OUTPUTS: A fits file is output in outname, which contains float flux [nx,ntrace] float flux_invvar [nx,ntrace] plugsort struct [ntrace] vacuum wavelength coefficients integer pixelmask [nx,ntrace] byte fibermask [ntrace] OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_median() djs_oplot djs_plot extract_boxcar() extract_image fibermask_bits() fitansimage() fitvacset() fluxcorr() locateskylines mwrfits pixelmask_bits() qaplot_scatlight qaplot_skyline qaplot_skysub qaplot_skydev skysubtract splog telluric_corr tweaktrace INTERNAL SUPPORT ROUTINES: find_whopping() REVISION HISTORY: 24-Jan-2000 Written by S. Burles, Chicago (See pro/spec2d//extract_object.pro)
EXTRACT_PROFILE[Previous Routine] [Next Routine] [List of Routines] NAME: extract_profile PURPOSE: Extract the flux with profile weighting at centroid positions. CALLING SEQUENCE: fextract = extract_profile( fimage, invvar, xcen, ycen, [ferror=ferror, fscattered=fscattered, fwidth=fwidth, sigma=sigma, nPoly=nPoly, maxIter=maxIter, refit=refit, highrej=highrej, lowrej=lowrej, boxap=boxap]) INPUTS: fimage - Image[nCol,nRow] invvar - Inverse Variance[nCol,nRow] xcen - Initial guesses for X centers[nFibers,nRow] ycen - Y positions corresponding to "xcen[nFibers]" [nRow] OPTIONAL KEYWORDS: ferror - error array (-1 if bad pixel) fscattered - scattered light contribution fwidth - final profile width used sigma - sigma of gaussian profile; default to 1.0 nPoly - order of chebyshev scattered light background; default to 5 maxIter - maximum number of profile fitting iterations; default to 5 refit - order of chebyshev to fit to profile widths vs. row, default is 0, which does no refitting highrej - positive sigma deviation to be rejected (default 5.0) lowrej - negative sigma deviation to be rejected (default 5.0) boxap - boxcar aperture size in pixels default is 0, which does no boxcar extraction OUTPUTS: fextract - Extracted flux at each position specified by (xcen, ycen) [nFibers,nRow] 2: Scattered light estimate 3: Final profile width 4: Boxcar extracted flux OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: PROCEDURES CALLED: Dynamic link to extract_profile.c REVISION HISTORY: 24-Mar-1999 David Schlegel, Princeton. 24-Jun-1999 Stolen and modified by Scott Burles, Chicago. (See pro/spec2d//extract_profile.pro)
EXTRACT_ROW[1][Previous Routine] [Next Routine] [List of Routines] NAME: extract_row PURPOSE: Fit the fiber profiles and background in a single row with least squares CALLING SEQUENCE: ans = extract_row( fimage, invvar, xcen, sigma, [ymodel=, fscat=, proftype=, wfixed=, inputans=, iback=, bfixarr=, xvar=, mask=, relative=, diagonal=, fullcovar=, wfixarr=, npoly=, maxiter=, lowrej=, highrej=, niter=, squashprofile=, whopping=, wsigma=, pixelmask=, reject=, reducedChi= ]) INPUTS: fimage - Vector [nCol] invvar - Inverse variance [nCol] xcen - Initial guesses for X centers [nFiber] sigma - Sigma of gaussian profile; (scalar or [nFiber]) OPTIONAL KEYWORDS: proftype - Select profile type: 1: Gaussian 2: (exponential)^3 3: (exponential)^2.5 Default to 1. inputans - Input fit, excluding background and whopping terms [ncoeff*nFiber] The array is sorted as follows: [ncoeff] values for fiber #0 ... [ncoeff] values for fiber #(nFiber-1) relative - Set to use reduced chi-square to scale rejection threshold squashprofile - ??? npoly - Order of chebyshev scattered light background; default to 5 maxiter - Maximum number of profile fitting iterations; default to 10 lowrej - Negative sigma deviation to be rejected; default to 5 highrej - Positive sigma deviation to be rejected; default to 5 whopping - X locations to center additional "whopping" terms to describe the exponentail tails of flux near bright fibers; default to -1, which means not to use any such terms. wsigma - Sigma width for exponential whopping profiles; default to 25 reject - Three-element array setting partial and full rejection thresholds for profiles; default [0.2, 0.5, 0.8]. What does this mean??? When this was hardwired, it was [0.4, ??, 0.8]. MODIFIED INPUTS (OPTIONAL): wfixed - Array to describe which parameters to fix in the profile; 0=fixed, 1=float; default to [1]. The number of parameters to fit per fiber is determined this way; e.g. nCoeff = n_elements(wfixed), so the default is to fit only 1 parameter per fiber. For the (default) Gaussian profile, this is the height of the Gaussian. Note that WFIXED is used to build the array WFIXARR. iback - 1D array of input background coeff (needed if fixed parameters are non-zero) bfixarr - 1D integer array to specify which terms of the background coefficients to fix; 0=fixed, 1=float. wfixarr - 1D integer array to specify which parameters in the full fit to fix; 0=fixed, 1=float. The array is sorted as follows: [ncoeff] values for fiber #0 ... [ncoeff] values for fiber #(nFiber-1) [npoly] values for the background polynomial terms [whoppingct] values for the whopping terms xvar - X values of fimage and invvar; default is findgen(NX). mask - Image mask: 1=good, 0=bad [NX] pixelmask - Bits set for each fiber due to extraction rejection [nFiber] OUTPUTS: ans - Output fit [ncoeff*nFiber+npoly+whoppingct] The array is sorted as follows: [nFiber] values for coefficient #0 ... [nFiber] values for coefficient #(nCoeff-1) [npoly] values for the background polynomial terms [whoppingct] values for the whopping terms Note this array is **not** sorted as INPUTANS or WFIXARR! OPTIONAL OUTPUTS: ymodel - Evaluation of best fit [nCol] fscat - Scattered light contribution in each fiber [nFiber] diagonal - 1D diagonal of covariance matrix. Currently, this is the diagonal from the Cholesky decompostion, which is 1/error[j]. [ncoeff*nFiber+npoly+whoppingct] fullcovar - 2D covariance matrix. This is a symmetric matrix, and we only fill the lower triangle. Computing this increases CPU time by a factor of 2 or 3. niter - Number of rejection iterations performed reducedChi - Reduced chi ??? COMMENTS: BUGS: Still need to do: limits on chebyshev polynomial are assumed to be 0.0 <-- nx these may need to be optional if only partial rows are being fit Error codes need to be returned, currently no such codes are returned EXAMPLES: PROCEDURES CALLED: Dynamic link to extract_row.c REVISION HISTORY: 8-Aug-1999 Written by Scott Burles, Chicago (See pro/spec2d//extract_row.pro)
EXTRACT_ROW[2][Previous Routine] [Next Routine] [List of Routines] NAME: extract_row PURPOSE: Fit the fiber profiles and background in a single row with least squares Wrapper to extract row, which does extra testing CALLING SEQUENCE: ans = extract_row_safe( fimage, invvar, xcen, sigma, [ymodel=, fscat=, proftype=, wfixed=, inputans=, iback=, bfixarr=, xvar=, mask=, relative=, diagonal=, fullcovar=, wfixarr=, npoly=, maxiter=, lowrej=, highrej=, niter=, squashprofile=, whopping=, wsigma=, pixelmask=, reject=, reducedChi= ]) INPUTS: fimage - Vector [nCol] invvar - Inverse variance [nCol] xcen - Initial guesses for X centers [nFiber] sigma - Sigma of gaussian profile; (scalar or [nFiber]) OPTIONAL KEYWORDS: proftype - Select profile type: 1: Gaussian 2: (exponential)^3 3: (exponential)^2.5 Default to 1. inputans - Input fit, excluding background and whopping terms [ncoeff*nFiber] The array is sorted as follows: [ncoeff] values for fiber #0 ... [ncoeff] values for fiber #(nFiber-1) relative - Set to use reduced chi-square to scale rejection threshold squashprofile - ??? npoly - Order of chebyshev scattered light background; default to 5 maxiter - Maximum number of profile fitting iterations; default to 10 lowrej - Negative sigma deviation to be rejected; default to 5 highrej - Positive sigma deviation to be rejected; default to 5 whopping - X locations to center additional "whopping" terms to describe the exponentail tails of flux near bright fibers; default to -1, which means not to use any such terms. wsigma - Sigma width for exponential whopping profiles; default to 25 reject - Two-element array setting partial and full rejection thresholds for profiles; default [0.8, 0.2]. What does this mean??? When this was hardwired, it was [0.8,0.4]. MODIFIED INPUTS (OPTIONAL): wfixed - Array to describe which parameters to fix in the profile; 0=fixed, 1=float; default to [1]. The number of parameters to fit per fiber is determined this way; e.g. nCoeff = n_elements(wfixed), so the default is to fit only 1 parameter per fiber. For the (default) Gaussian profile, this is the height of the Gaussian. Note that WFIXED is used to build the array WFIXARR. iback - 1D array of input background coeff (needed if fixed parameters are non-zero) bfixarr - 1D integer array to specify which terms of the background coefficients to fix; 0=fixed, 1=float. wfixarr - 1D integer array to specify which parameters in the full fit to fix; 0=fixed, 1=float. The array is sorted as follows: [ncoeff] values for fiber #0 ... [ncoeff] values for fiber #(nFiber-1) [npoly] values for the background polynomial terms [whoppingct] values for the whopping terms xvar - X values of fimage and invvar; default is findgen(NX). mask - Image mask: 1=good, 0=bad [NX] pixelmask - Bits set for each fiber due to extraction rejection [nFiber] OUTPUTS: ans - Output fit [ncoeff*nFiber+npoly+whoppingct] The array is sorted as follows: [nFiber] values for coefficient #0 ... [nFiber] values for coefficient #(nCoeff-1) [npoly] values for the background polynomial terms [whoppingct] values for the whopping terms Note this array is **not** sorted as INPUTANS or WFIXARR! OPTIONAL OUTPUTS: ymodel - Evaluation of best fit [nCol] fscat - Scattered light contribution in each fiber [nFiber] diagonal - 1D diagonal of covariance matrix. Currently, this is the diagonal from the Cholesky decompostion, which is 1/error[j]. [ncoeff*nFiber+npoly+whoppingct] fullcovar - 2D covariance matrix. This is a symmetric matrix, and we only fill the lower triangle. Computing this increases CPU time by a factor of 2 or 3. niter - Number of rejection iterations performed reducedChi - Reduced chi ??? COMMENTS: BUGS: Still need to do: limits on chebyshev polynomial are assumed to be 0.0 <-- nx these may need to be optional if only partial rows are being fit Error codes need to be returned, currently no such codes are returned EXAMPLES: PROCEDURES CALLED: Dynamic link to extract_row.c REVISION HISTORY: 4-Feb-1999 Written by Schlegel (See pro/spec2d//extract_row_safe.pro)
FCHEBYSHEV[Previous Routine] [Next Routine] [List of Routines] NAME: FCHEBYSHEV PURPOSE: Compute the first M terms in a CHEBYSHEV polynomial expansion. EXPLANATION: Meant to be used as a supplied function to SVDFIT. CALLING SEQUENCE: result = FCHEBYSHEV( X, M, /halfintwo) INPUTS: X - the value of the independent variable, scalar or vector M - number of term of the CHEBYSHEV expansion to compute, integer scalar OUTPUTS: result - (N,M) array, where N is the number of elements in X and M is the order. Contains the value of each CHEBYSHEV term for each value of X EXAMPLE: (1) If x = 2.88 and M = 3 then IDL print, fchebyshev(x,3) == [1.00, 2.88, 15.5888] (2) Find the coefficients to an M term Chebyshev polynomial that gives the best least-squares fit to a dataset (x,y) IDL coeff = SVDFIT( x,y,M,func='fchebyshev') METHOD: REVISION HISTORY: 04-Aug-1999 Written by Scott Burles by hacking FLEGENDRE code by Landsman in the Goddard libraries. (See pro/spec2d//fchebyshev.pro)
FIBERFLAT[Previous Routine] [Next Routine] [List of Routines] NAME: fiberflat PURPOSE: Construct the flat-field vectors from an extracted flat-field image. CALLING SEQUENCE: fflat = fiberflat( flux, fluxivar, wset, [ fibermask=fibermask, $ minval=, ncoeff=, pixspace=, /dospline, nord=, lower=, upper=, /dospline, plottitle= ]) INPUTS: flux - Array of extracted flux from a flat-field image [Nrow,Ntrace] fluxivar - Inverse variance map for FLUX. wset - Wavelength solution OPTIONAL KEYWORDS: fibermask - Mask of 0 for bad fibers and 1 for good fibers [NFIBER] minval - Minimum value to use in fits to flat-field vectors; default to 3% of the median of FLUX. ncoeff - Number of coefficients used in constructing FFLAT; default to 3 (cubic) pixspace - Approximate spacing in pixels for break points in the spline fits to individual fibers; default to 10 pixels. dospline - If this keyword is set, then fit the flat-field vectors to splines (using PIXSPACE) rather than to a Legendre polynomial (using NCOEFF). This is **not** recommended. plottitle - Prefix for titles in QA plots. PARAMETERS FOR SLATEC_SPLINEFIT: nord lower upper OUTPUTS: fflat - Array of flat-field flat-field vectors for each fiber that remove relative flat-field variations as a function of wavelength between fibers [Nrow, Ntrace] OPTIONAL OUTPUTS: fibermask - (Modified) COMMENTS: The user should first "flat-field" the input array to take out pixel-to-pixel variations. The parameters for SLATEC_SPLINEFIT are only used when generating the "superflat". The 'BADFLAT' bit is set in FIBERMASK if the mean throughput for a fiber is less than 0.7 times the median of all good-fiber throughputs. In any given fiber, set FFLAT=0 wherever there are at least 5 contiguous bad pixels. EXAMPLES: BUGS: PROCEDURES CALLED: fibermask_bits() slatec_bvalu() slatec_splinefit() splog superflat traceset2xy xy2traceset REVISION HISTORY: 14-Oct-1999 Written by D. Schlegel, APO (See pro/spec2d//fiberflat.pro)
FIBERMASK_BITS[Previous Routine] [Next Routine] [List of Routines] NAME: fibermask_bits PURPOSE: Return a byte with a single bit set which matches bitlabel CALLING SEQUENCE: fibermask_bits(bitlabel) INPUTS: bitlabel - String to match to corresponding bit OUTPUTS: One byte with 1 bit set returns 0 if no label is matched OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: fibermask[i] = fibermask_bits('BADARC') BUGS: PROCEDURES CALLED: REVISION HISTORY: 23-Jan-2000 Written by S. Burles, Chicago (See pro/spec2d//fibermask_bits.pro)
FITANSIMAGE[Previous Routine] [Next Routine] [List of Routines] NAME: fitansimage PURPOSE: Convert output from extract_image (ansimage) into a smooth function of fiber number and row CALLING SEQUENCE: fitans = fitansimage(ansimage, nterms, ntrace, npoly, nfirst, yrow, $ tempflux, fluxm = [1,1,0], scatfit=scatfit, $ smallflux, fluxm=fluxm, nord=nord, nscatbkpts=nscatbkpts, $ ymin=ymin, ymax=ymax, fullrows=fullrows) INPUTS: ansimage - Keyword Output from extract_image nterms - number of profile terms ntrace - Number of fibers (currently hardwired to 320) npoly - Order of chebyshev polynomial in scattered light yrow - Array of rows extracted in first pass smallflux - Flux extracted in first pass OPTIONAL KEYWORDS: fluxm - Factor profile terms contribute to total flux (asymmetric terms are set to zero) OUTPUTS: fitans - Smooth version of ansimage (expanded to 2048 rows) OPTIONAL OUTPUTS: scatfit - Image of scattered light from smoothing polynomials COMMENTS: fitansimage takes the output from extract_image, and smooths the corresponding parameters of nfibers and npoly with functions of order nord EXAMPLES: BUGS: PROCEDURES CALLED: REVISION HISTORY: ??-Oct-1999 Written by S. Burles, Chicago 25-Feb-2000 Modified to be more robust (yeah!) but requires exactly 320 fibers (boo) (See pro/spec2d//fitansimage.pro)
FITARCIMAGE[1][Previous Routine] [Next Routine] [List of Routines] NAME: fitarcimage PURPOSE: Determine wavelength calibration from arclines CALLING SEQUENCE: fitarcimage, arc, arcivar, xcen, ycen, wset, [wfirst=, $ color=color, lampfile=lampfile, fibermask=fibermask, $ func=func, aset=aset, ncoeff=ncoeff, lambda=lambda, $ thresh=thresh, row=row, nmed=nmed, /gauss, $ xdif_tset=xdif_tset, bestcorr=bestcorr ] INPUTS: arc - Extracted arc spectra with dimensions [NY,NFIBER] arcivar - Inverse variance of ARC OPTIONAL KEYWORDS: color - 'red' or 'blue'; not required if ANS is set lampfile - Name of file describing arc lamp lines; default to the file 'lamphgcdne.dat' in $IDLSPEC2D_DIR/etc. fibermask - Fiber status bits, set nonzero for bad status [NFIBER] func - Name of fitting function; default to 'legendre' aset - Trace set for initial wavelength solution in row number ROW. ncoeff - Number of coefficients in fits. This may be different than the number of coefficients in the initial guess ASET. Default to 5. thresh - Threshhold counts for significant lines; default to 200 if COLOR='blue' or 500 if COLOR='red' row - Row to use in initial guess of wavelength solution; default to (NFIBER-30)/2 nmed - Number of rows around ROW to median filter for initial wavelengths solution; default to 5 gauss - Use gaussian profile fitting for final centroid fit OUTPUTS: aset - (Modified) xcen - pixel position of lines [nfiber, nlambda] ycen - fiber number [nfiber, nlambda] wset - traceset (pix - lambda) OPTIONAL OUTPUTS: lampfile - Modified from input to include full path name of file lambda - Returns wavelengths of good lamp lines [Angstroms] fibermask - (Modified) xdif_tset - Fit residual of lamp lines to fit positions [pixels] bestcorr - Correlation coefficient with simulated arc spectrum wfirst - traceset from first iteration on arc fits COMMENTS: Return from routine after computing BESTCORR if XCEN, YCEN and WSET are not to be returned. EXAMPLES: BUGS: Not making sure that only the same lines are fit for each fiber. (Different lines can be rejected in xy2traceset.) THRESH is unused. TRACESET2PIX maybe returns the transpose of what is natural? Check QA stuff at end. FIBERMASK not yet modified if an arc is atrociously bad. PROCEDURES CALLED: arcfit_guess() djs_median djsig() finalarcfit trace_crude() trace_fweight() traceset2pix() traceset2xy() xy2traceset REVISION HISTORY: 15-Oct-1999 Written by S. Burles, D. Finkbeiner, & D. Schlegel, APO. 09-Nov-1999 Major modifications by D. Schlegel, Ringberg. 20-Jan-2000 Gone back to very simple procedure: replacement (S. Burles) (See pro/spec2d//fitarcimage.pro)
FITARCIMAGE[2][Previous Routine] [Next Routine] [List of Routines] NAME: fitarcimage PURPOSE: Determine wavelength calibration from arclines CALLING SEQUENCE: fitarcimage, arc, arcivar, xnew, ycen, wset, $ [ color=color, lampfile=lampfile, fibermask=fibermask, $ func=func, aset=aset, ncoeff=ncoeff, lambda=lambda, $ thresh=thresh, row=row, nmed=nmed, $ xdif_tset=xdif_tset, bestcorr=bestcorr ] INPUTS: arc - Extracted arc spectra with dimensions [NY,NFIBER] arcivar - Inverse variance of ARC OPTIONAL KEYWORDS: color - 'red' or 'blue'; not required if ANS is set lampfile - Name of file describing arc lamp lines; default to the file 'lamphgcdne.dat' in the IDL path. fibermask - Fiber status bits, set nonzero for bad status [NFIBER] func - Name of fitting function; default to 'legendre' aset - Trace set for initial wavelength solution in row number ROW. ncoeff - Number of coefficients in fits. This may be different than the number of coefficients in the initial guess ASET. Default to 5. thresh - Threshhold counts for significant lines; default to 200 if COLOR='blue' or 500 if COLOR='red' row - Row to use in initial guess of wavelength solution; default to (NFIBER-30)/2 nmed - Number of rows around ROW to median filter for initial wavelengths solution; default to 5 OUTPUTS: aset - (Modified) xnew - pixel position of lines [nfiber, nlambda] ycen - fiber number [nfiber, nlambda] wset - traceset (pix - lambda) OPTIONAL OUTPUTS: lampfile - Modified from input to include full path name of file lambda - Returns wavelengths of good lamp lines [Angstroms] fibermask - (Modified) xdif_tset - Fit residual of lamp lines to fit positions [pixels] bestcorr - Correlation coefficient with simulated arc spectrum COMMENTS: Return from routine after computing BESTCORR if XCEN, YCEN and WSET are not to be returned. THIS IS REVISION 1.27 OF FITARCIMAGE, SINCE THE CURRENT VERSION APPEARS TO BE BUGGY!!! EXAMPLES: BUGS: Not making sure that only the same lines are fit for each fiber. (Different lines can be rejected in xy2traceset.) THRESH is unused. TRACESET2PIX maybe returns the transpose of what is natural? Check QA stuff at end. FIBERMASK not yet modified if an arc is atrociously bad. PROCEDURES CALLED: arcfit_guess() djs_median djsig() trace_crude() trace_fweight() traceset2pix() traceset2xy() xy2traceset REVISION HISTORY: 15-Oct-1999 Written by S. Burles, D. Finkbeiner, & D. Schlegel, APO. 09-Nov-1999 Major modifications by D. Schlegel, Ringberg. (See pro/spec2d//fitarcimage_old.pro)
FITDISPERSION[Previous Routine] [Next Routine] [List of Routines] NAME: fitdispersion PURPOSE: Fit polynomials to the line width (dispersion axis) for each fiber bundle CALLING SEQUENCE: dispset = fitdispersion(arc_flux, arc_fluxivar, xcen, $ sigma=sigma, ncoeff=ncoeff, xmin=xmin, xmax=xmax) INPUTS: arc_flux - arc image extracted flux arc_fluxivar - corresponding inverse variance xcen - xpeaks of arc lines [ntrace,nlines] OPTIONAL KEYWORDS: ncoeff - order of legendre polynomial to apply to width vs. row sigma - The initial sigma (in pixels, 1.0 is a good guess) xmin, xmax - limits in traceset OUTPUTS: dispset - a traceset structure containing fitted coefficients OPTIONAL OUTPUTS: COMMENTS: Used to fill arcstruct.dispset, which can then be applied to psf-corrected sky subtraction EXAMPLES: BUGS: PROCEDURES CALLED: REVISION HISTORY: 1-Mar-2000 Written by S. Burles, FNAL (See pro/spec2d//fitdispersion.pro)
FITFLATWIDTH[Previous Routine] [Next Routine] [List of Routines] NAME: fitflatwidth PURPOSE: Fit a traceset to the first-order corrected width of the flat field CALLING SEQUENCE: widthset = fitflatwidth(flux, fluxivar, ansimage, fibermask, $ ncoeff=ncoeff, sigma=sigma) INPUTS: flux - flat-field extracted flux fluxivar - corresponding inverse variance ansimage - output from extract image which contains parameter values fibermask - nTrace bit mask, which marks bad fibers OPTIONAL KEYWORDS: ncoeff - order of legendre polynomial to apply to width vs. row sigma - The zeroth order sigma of extracted profile OUTPUTS: widthset - a traceset structure containing fitted coefficients OPTIONAL OUTPUTS: COMMENTS: Used to fill flatstruct.widthset, which can then be applied to object extraction (known profile widths) EXAMPLES: BUGS: PROCEDURES CALLED: REVISION HISTORY: 1-Mar-2000 Written by S. Burles, FNAL (See pro/spec2d//fitflatwidth.pro)
FITMEANX[Previous Routine] [Next Routine] [List of Routines] NAME: fitmeanx PURPOSE: Use fitans to tweak trace and sigma This just perturbs the input values of xcen and sigma CALLING SEQUENCE: xdiff = fitmeanx(wset, lambda, xpos, xinvvar, $ nord=nord, maxdev=maxdev, mx=mx) INPUTS: wset - Initial wavelength solution lambda - air wavelengths corresponding to xpos xpos - centroids of sky lines in object image OPTIONAL KEYWORDS: nord - order of fit to delta x positions maxdev - max abs difference to reject outlying sky line positions OUTPUTS: xdiff - smooth fit to difference between measured sky positions and those predicted from arc wavelength solution OPTIONAL OUTPUTS: xinvvar - weights in xpos (mask) mx - sky line positions predicted from arc line solution COMMENTS: LAMBDA = log10-wavelength EXAMPLES: PROCEDURES CALLED: REVISION HISTORY: 19-Oct-1999 Written by S. Burles, Chicago (See pro/spec2d//fitmeanx.pro)
FITVACSET[Previous Routine] [Next Routine] [List of Routines] NAME: fitvacset PURPOSE: Use measured positions of arc lines and shift coefficients passed through xset to produce a final vacuum wavelength solution CALLING SEQUENCE: vacset = fitvacset(xpeak, lambda, wset, xset, ncoeff=ncoeff) INPUTS: xpeak - Arc line centroids lambda - Corresponding wavelengths wset - Initial arc line solution coefficients xset - Coefficients specifying shift to coefficients OPTIONAL KEYWORDS: ncoeff - Number of coefficients to fit final wavelength solution (Default 5) OUTPUTS: vacset - output wavelength solution which includes shift to sky lines and conversion to vacuum wavelengths OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: PROCEDURES CALLED: traceset2xy xy2traceset REVISION HISTORY: 20-Jan-2000 Written by S. Burles, Chicago (See pro/spec2d//fitvacset.pro)
FLEGENDRE[Previous Routine] [Next Routine] [List of Routines] NAME: FLEGENDRE PURPOSE: Compute the first M terms in a Legendre polynomial expansion. EXPLANATION: Meant to be used as a supplied function to SVDFIT. This procedure became partially obsolete in IDL V5.0 with the introduction of the /LEGENDRE keyword to SVDFIT and the associated SVDLEG function. However, note that, unlike SVDLEG, FLEGENDRE works on vector values of X. CALLING SEQUENCE: result = FLEGENDRE( X, M) INPUTS: X - the value of the independent variable, scalar or vector M - number of term of the Legendre expansion to compute, integer scalar OUTPUTS: result - (N,M) array, where N is the number of elements in X and M is the order. Contains the value of each Legendre term for each value of X EXAMPLE: (1) If x = 2.88 and M = 3 then IDL print, flegendre(x,3) == [1.00, 2.88, 11.9416] This result can be checked by explicity computing the first 3 Legendre terms, 1.0, x, 0.5*( 3*x^2 -1) (2) Find the coefficients to an M term Legendre polynomial that gives the best least-squares fit to a dataset (x,y) IDL coeff = SVDFIT( x,y,M,func='flegendre') The coefficients can then be supplied to the function POLYLEG to compute the best YFIT values for any X. METHOD: The recurrence relation for the Legendre polynomials is used to compute each term. Compare with the function FLEG in "Numerical Recipes" by Press et al. (1992), p. 674 REVISION HISTORY: Written Wayne Landsman Hughes STX April 1995 Converted to IDL V5.0 W. Landsman September 1997 (See pro/spec2d//flegendre.pro)
FLUXCORR[Previous Routine] [Next Routine] [List of Routines] NAME: fluxcorr PURPOSE: Use sky-subtracted SPECTROPHOTO_STD's to calculate flux correction as a function of wavelength. We assume the correction is uniform for all fibers (This may change). CALLING SEQUENCE: ff = fluxcorr(flux, fluxivar, wset, plugsort, color=color, $ spectrostd=spectrostd, bkptfile=bkptfile, lower=lower, upper=upper, $ fibermask=fibermask) INPUTS: flux - sky-subtracted extracted spectra [nx,ntrace] fluxivar - corresponding inverse variance [nx,ntrace] wset - wavelength coefficients as a trace set plugsort - plugmap entries REQUIRED KEYWORDS: color - 'red' or 'blue' OPTIONAL KEYWORDS: spectrostd - file with spectrophoto continuum, set to 1.0 at 5556 Ang. bkptfile - file with wavelengths of specific bkpts default is (red.bkpts or blue.bkpts) absfile - file delineating regions of absorption to avoid in in continuum fitting lower - lower rejection threshold for continuum fitting upper - upper rejection threshold for continuum fitting fibermask - use to reject possible standards which have spectral troubles OUTPUTS: ff - Flux calibration to correct each pixel in flux array OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! What we really need is an accurate prediction of f-star continua as a function of u',g',r', and i' Right now, all we can do is estimate. Also need to rewrite to make use of all f-stars. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURES CALLED: REVISION HISTORY: 19-Oct-1999 Written by S. Burles, Chicago (See pro/spec2d//fluxcorr.pro)
FUNC_FIT[Previous Routine] [Next Routine] [List of Routines] NAME: func_fit PURPOSE: Fit X, Y positions to a functional form. CALLING SEQUENCE: res = function func_fit( x, y, ncoeff, [invvar=, function_name=, $ /halfintwo, yfit=, ia=, inputans= ] INPUTS: x - X values (independent variable) y - Y values (dependent variable) ncoeff - Number of coefficients to fit invvar - Weight values (inverse variance) OPTIONAL KEYWORDS: function_name - Function to fit; options are: 'legendre' 'chebyshev' Default to 'legendre' halfintwo - Optional keyword for Chebyshev function, FCHEBYSHEV ia - Array specifying free (1) and fixed (0) variables [NCOEFF] inputans - If holding parameters fixed, set this array to those values [NCOEFF] OUTPUTS: res - Fit coefficients [NCOEFF] OPTIONAL OUTPUTS: yfit - Fit evaluated at the points X COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: fchebyshev() flegendre() REVISION HISTORY: 10-Sep-1999 Written by D. Finkbeiner, APO? 16-Nov-1999 Modified by D. Schlegel to never fit more coefficients than there are data points. (See pro/spec2d//func_fit.pro)
GENFLATMASK[Previous Routine] [Next Routine] [List of Routines] NAME: genflatmask PURPOSE: Read or generate a mask for pixels to ignore when generating flat-fields. CALLING SEQUENCE: maskimg = genflatmask( [ flatname, spectrographid=, color=, indir=, tmpdir= ] ) OPTIONAL INPUTS: flatname - Name of flat-field image Note that many flats from many nights can be combined. OPTIONAL KEYWORDS: spectrographid - Spectrograph ID (1 or 2); reqired if FLATNAME not set. color - Spectrograph color ('red' or 'blue'); reqired if FLATNAME not set. indir - Input directory for FLATNAME; default to '.' tmpdir - Temporary directory for uncompressing the mask image if FLATNAME is not specified; default to '.' OUTPUTS: maskimg - Mask image with 0=good, 1=bad COMMENTS: If FLATNAME is specified, then a bad pixel mask is generated from that flat-field image assuming it has a mean value approximately equal to one. If not, then read the mask from the distribution of IDLSPEC2D in the "etc" subdirectory. Mask values =0 for good pixels, =1 for bad. This routine spawns the Unix comments 'zcat' and 'rm'. EXAMPLES: BUGS: PROCEDURES CALLED: readfits() DATA FILES: $IDLSPEC2D/etc/flatmask-b1.fits.gz $IDLSPEC2D/etc/flatmask-b2.fits.gz $IDLSPEC2D/etc/flatmask-r1.fits.gz $IDLSPEC2D/etc/flatmask-r2.fits.gz REVISION HISTORY: 16-Dec-1999 Written by D. Schlegel, Princeton (See pro/spec2d//genflatmask.pro)
IDLSPEC2D_VERSION[Previous Routine] [Next Routine] [List of Routines] NAME: idlspec2d_version PURPOSE: Return the version name for the product idlspec2d CALLING SEQUENCE: vers = idlspec2d_version() INPUTS: OUTPUTS: vers - Version name for the product idlspec2d COMMENTS: If this version is not tagged by CVS, then we return 'NOCVS:TOPLEVEL' where TOPLEVEL is the last directory in the environment variable $IDLSPEC2D_DIR. For example, if you are using a version of the code in the directory '/u/schlegel/idlspec2d/v0_0', then this returns 'NOCVS:v0_0'. BUGS: PROCEDURES CALLED: REVISION HISTORY: 01-Dec-1999 Written by D. Schlegel, Princeton. (See pro/spec2d//idlspec2d_version.pro)
LOCATESKYLINES[Previous Routine] [Next Routine] [List of Routines] NAME: locateskylines PURPOSE: Tweak wavelength calibration using skylines CALLING SEQUENCE: locateskylines, skylinefile, fimage, ivar, wset, xsky, ysky, skywaves, $ lambda=lambda, xset=xset INPUTS: skylinefile - filename of skyline file fimage - flattened image containing skylines (npix x nfiber) ivar - inverse variance of fimage wset - traceset (pix - lambda) OPTIONAL KEYWORDS: lambda - override skyline file (log10 Angstroms) OUTPUTS: xsky - pixel position of lines [nfiber, nline] ysky - fiber number [nfiber, nline] skywaves - wavelengths used (Angstroms) OPTIONAL OUTPUTS: errcode - returns errcode (see below) COMMENTS: Error codes: -1 - <unknown error 0 - Everything fine EXAMPLES: BUGS: I've now changed traceset2pix to use the forward trace set, but have not yet made any changes to this code. PROCEDURES CALLED: fitmeanx() trace_gweight() traceset2pix() REVISION HISTORY: 15-Oct-1999 Written by S. Burles, D. Finkbeiner, & D. Schlegel, APO 18-Nov-1999 Moved skyline QA to fit_skyset (SMB) (See pro/spec2d//locateskylines.pro)
LOGSHEET[Previous Routine] [Next Routine] [List of Routines] NAME: logsheet PURPOSE: Make a summary of header keywords in a directory of raw SDSS spectro files. Only look at files matching "*.fit" CALLING SEQUENCE: logsheet, [dir, outfile=] INPUTS: OPTIONAL INPUTS: dir - Directory name; default to '' outfile - Output file OUTPUTS: COMMENTS: EXAMPLES: PROCEDURES CALLED: headfits() sxpar() REVISION HISTORY: 06-Oct-1999 Written by David Schlegel, Princeton. (See pro/spec2d//logsheet.pro)
PIXELMASK_BITS[Previous Routine] [Next Routine] [List of Routines] NAME: pixelmask_bits PURPOSE: Return mask value corresponding to a mask condition for PIXELMASK. CALLING SEQUENCE: mask = pixelmask_bits(bitlabel) INPUTS: bitlabel - String name specifying bit OUTPUTS: mask - Signed long set to 2^BIT, where BIT is the bit specified by BITLABEL, or set to 0 if no label is matched OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: mask = pixelmask_bits('FULLREJECT') BUGS: PROCEDURES CALLED: REVISION HISTORY: 23-Jan-2000 Written by S. Burles, Chicago 27-Jan-2000 Changed from signed int to signed long (See pro/spec2d//pixelmask_bits.pro)
QAPLOT_ARCLINE[Previous Routine] [Next Routine] [List of Routines] NAME: qaplot_arcline PURPOSE: Generate QA plot for arcline fits CALLING SEQUENCE: qaplot_arcline, xdif, lambda, [color=, fibermask=, title=] INPUTS: xdif - Deviations in arc line fits in pixels, array [NFIBER, NLAMP] lambda - Wavelength for each lamp in Angstroms, vector [NLAMP] OPTIONAL KEYWORDS: color - Specify 'blue' or 'red' to fix plotting limits fibermask - Fiber status bits, set nonzero for bad status [NFIBER] title - TITLE of plot OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: Skip over bad fibers in plots. EXAMPLES: BUGS: PROCEDURES CALLED: djs_iterstat djs_oplot djs_plot REVISION HISTORY: 15-Oct-1999 Written by D. Finkbeiner, APO 23-Nov-1999 Modified by D. Schlegel, Princeton (See pro/spec2d//qaplot_arcline.pro)
QAPLOT_FFLAT[Previous Routine] [Next Routine] [List of Routines] NAME: qaplot_fflat PURPOSE: Generate QA plot for fiber-flats CALLING SEQUENCE: qaplot_fflat, fflat, wset, [ fibermask=, dx=, title= ] INPUTS: fflat - Array of flat-field flat-field vectors for each fiber that remove relative flat-field variations as a function of wavelength between fibers [Nrow, Ntrace] wset - Wavelength solution OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] dx - Bin log-lambda by this number; default to 1.e-3 (about 10 pix) title - TITLE of plot OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: Do not plot bad fibers or masked pixels in good fibers. EXAMPLES: BUGS: PROCEDURES CALLED: djs_oplot djs_plot REVISION HISTORY: 23-Nov-1999 Written by D. Schlegel, Princeton (See pro/spec2d//qaplot_fflat.pro)
QAPLOT_SCATLIGHT[Previous Routine] [Next Routine] [List of Routines] NAME: qaplot_scatlight PURPOSE: Generate QA plots for scattered light CALLING SEQUENCE: qaplot_scatlight, scatfit, yrow, wset=, xcen=, [ fibermask=, title= ] INPUTS: scatfit - Scattered light image after fitting [NX,NY/8] yrow - extracted rows in scatfit REQUIRED KEYWORDS: wset - Wavelength solution xcen - X positions corresponding to the extracted wavelength sol'n [NY,NTRACE] OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] title - TITLE of plot OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_median() djs_oploterr djs_plot traceset2xy REVISION HISTORY: 13-Dec-1999 Written by D. Schlegel, Princeton 22-Jan-2000 Trying to speed up, S. Burles (See pro/spec2d//qaplot_scatlight.pro)
QAPLOT_SKYDEV[Previous Routine] [Next Routine] [List of Routines] NAME: qaplot_skydev PURPOSE: Generate QA plot: scatter in sky line positions CALLING SEQUENCE: qaplot_skydev, flux, fluxivar, vacset, plugsort, color, $ [fibermask=, title=] INPUTS: flux - Pre-skysubtracted flux array [Nrow, Ntrace] fluxivar - Associated inverse variance vacset - Vacuum Wavelength solution plugsort - Plugmap struct [Ntrace] color - string specifying 'red' or 'blue' spectra OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] title - TITLE of plot OUTPUTS: Output plots only OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_oplot djs_plot trace_gweight traceset2xy traceset2pix djs_median REVISION HISTORY: 22-Jan-2000 Written by S. Burles, Chicago (See pro/spec2d//qaplot_skydev.pro)
QAPLOT_SKYLINE[Previous Routine] [Next Routine] [List of Routines] NAME: qaplot_skyline PURPOSE: Generate QA plots for flux in particular skylines CALLING SEQUENCE: qaplot_skyline, lwave, obj, objivar, objsub, objsubivar, plugsort, wset, $ [fibermask=, dwave=, title= ] INPUTS: lwave - obj - Image objivar - Inverse variance for OBJ objsub - Image after sky-subtraction objsubivar - Inverse variance for image after sky-subtraction plugsort - Plugmap structure trimmed to one element per fiber wset - Wavelength solution OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] dwave - Half-width about LWAVE for fitting sky line; default to 5.0 Ang titel - File name to use for TITLE of plot OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_iterstat djs_median djs_oplot splog traceset2xy INTERNAL SUPPORT ROUTINES: REVISION HISTORY: 01-Jan-2000 Written by D. Schlegel, Princeton (See pro/spec2d//qaplot_skyline.pro)
QAPLOT_SKYSUB[Previous Routine] [Next Routine] [List of Routines] NAME: qaplot_skysub PURPOSE: Generate QA plots for sky-subtraction CALLING SEQUENCE: qaplot_skysub, obj, objivar, objsub, objsubivar, wset, $ iskies, [title= ] INPUTS: obj - Image objivar - Inverse variance for OBJ objsub - Image after sky-subtraction objsubivar - Inverse variance for image after sky-subtraction wset - Wavelength solution iskies - List of good sky fibers OPTIONAL KEYWORDS: title - TITLE of plot OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_median djs_oplot djs_plot INTERNAL SUPPORT ROUTINES: skyplot REVISION HISTORY: 30-Dec-1999 Written by D. Schlegel, Princeton (See pro/spec2d//qaplot_skysub.pro)
QUICKPROC[Previous Routine] [Next Routine] [List of Routines] NAME: quickproc PURPOSE: Read in Raw SDSS files, and keep as UINT, process with opConfig.par CALLING SEQUENCE: image = quickproc(infile, hdr=hdr, configfile=configfile) INPUTS: infile - Raw SDSS frame OPTIONAL KEYWORDS: hdr - Header returned in memory configfile - Default to "opConfig.par" OUTPUTS: image - Processed 2d image (UINT) zero level 1000 COMMENTS: BUGS: PROCEDURES CALLED: rdss_fits() yanny_free yanny_read REVISION HISTORY: 10-Nov-1999 Written by Scott Burles, modified from sdssproc (See pro/spec2d//quickproc.pro)
RDSS_FITS[Previous Routine] [Next Routine] [List of Routines] NAME: rdss_fits PURPOSE: Read a FITS file into IDL data and header variables CALLING SEQUENCE: image = rdss_fits( filename, [ hdr, nofloat ] ) INPUTS: filename - Scalar string containing the name of the FITS file (including extension) to be read. If the filename has a *.gz extension, it will be treated as a gzip compressed file. If it has a .Z extension, it will be treated as a Unix compressed file. OPTIONAL KEYWORDS: OUTPUTS: image - FITS data array constructed from designated record. If the specified file was not found, then return -1. OPTIONAL OUTPUTS: hdr - String array containing the header from the FITS file. COMMENTS: This routine will read a simple FITS image, or convert a non-standard SDSS image that uses unsigned 16-bit integers. One can pass any other keywords expected by READFITS(). EXAMPLES: PROCEDURES CALLED: readfits() sxpar() REVISION HISTORY: 13-May-1999 Written by David Schlegel, Princeton. (See pro/spec2d//rdss_fits.pro)
SDSSPROC[Previous Routine] [Next Routine] [List of Routines] NAME: sdssproc PURPOSE: Read in Raw SDSS files, and process with opConfig, opECalib, opBC par files. CALLING SEQUENCE: sdssproc, infile, [image, invvar, indir=, $ outfile=, varfile=, nsatrow=, fbadpix=, $ hdr=hdr, configfile=, ecalibfile=, bcfile=, $ pixflatname=, minflat=, spectrographid=, color= ] INPUTS: infile - Raw SDSS file name OPTIONAL KEYWORDS: indir - Input directory for INFILE outfile - Calibrated 2d frame, after processing varfile - Inverse variance frame after processing nsatrow - Number of saturated rows, assuming that a row is saturated if at least 20 of its pixels are above saturation level fbadpix - Fraction of bad pixels, not including bad columns hdr - Header returned in memory configfile - Default to "opConfig.par" ecalibfile - Default to "opECalib.par" bcfile - Default to "opBC.par" minflat - Minimum values allowed for pixflat (lower values of pixflat are set to 0 invvar) pixflatname- Name of pixel-to-pixel flat, produced with SPFLATTEN. OUTPUTS: image - Processed 2d image invvar - Associated inverse variance spectrographid - Return spectrograph ID (1 or 2) color - Return spectrograph color ('red' or 'blue') COMMENTS: Only the header is read from the image if IMAGE, INVVAR, OUTFILE and VARFILE are all not set. Required header keywords: EXPTIME. BUGS: The open-shutter correction SMEARIMG will include smeared data from any cosmic rays, which is wrong. At the minimum, I could interpolate over A/D saturations (in ADMASK) before constructing SMEARIMG. PROCEDURES CALLED: djs_iterstat headfits() idlspec2d_version() idlutils_version() rdss_fits() readfits() splog sxaddpar sxpar() writefits yanny_free yanny_read REVISION HISTORY: 13-May-1999 Written by Scott Burles & David Schlegel, Apache Point. 08-Sep-1999 Modified to read Yanny param files instead of FITS versions of the same (DJS). 01-Dec-1999 Added version stamping (DJS). 07-Dec-1999 Mask neighbors of pixels that saturated the A/D converter. Identify blead trails and mask from that row up (DJS). 10-Dec-1999 Test if the shutter was open during readout, and try to correct the light for that (DJS). 04-Feb-2000 Declare that the shutter was open if it is a 640 sec exposure taken before MJD=51570 (DJS). (See pro/spec2d//sdssproc.pro)
SELECT_ARC[Previous Routine] [Next Routine] [List of Routines] NAME: select_arc PURPOSE: Select best arc from an arc structure produced with SPCALIB. CALLING SEQUENCE: bestarc = select_arc ( arcstruct ) INPUTS: arcstruct - Structure array with extracted arc calibration information OPTIONAL KEYWORDS: OUTPUTS: bestarc - Structure with extracted arc calibration information for that arc selected from ARCSTRUCT OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djsig() REVISION HISTORY: 25-Jan-2000 Written by D. Schlegel, Princeton (See pro/spec2d//select_arc.pro)
SELECT_FLAT[Previous Routine] [Next Routine] [List of Routines] NAME: select_flat PURPOSE: Select best flat from a flat-field structure produced with SPCALIB. CALLING SEQUENCE: bestflat = select_flat( flatstruct, tai ) INPUTS: flatstruct - Structure array with extracted flat calibration information tai - Time of observation for object frame (from header card) OPTIONAL KEYWORDS: OUTPUTS: bestflat - Structure array with extracted flat calibration information for best flat selected for the time specified by TAI. OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: REVISION HISTORY: 25-Jan-2000 Written by D. Schlegel, Princeton (See pro/spec2d//select_flat.pro)
SKYSUBTRACT[Previous Routine] [Next Routine] [List of Routines] NAME: skysubtract PURPOSE: Sky-subtract an image and modify the variance CALLING SEQUENCE: skystruct = skysubtract(obj, objivar, plugsort, wset, objsub, objsubivar, $ [iskies= , fibermask=, nord=, upper=, lower=, maxiter=, pixelmask=, $ relchi2struct= ]) INPUTS: obj - Image objivar - Inverse variance for OBJ plugsort - Plugmap structure trimmed to one element per fiber wset - Wavelength solution OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] pixelmask - Mask of 0 for good pixels [NPIX,NFIBER] relchi2struct - Structure containing information of chi^2 fitting PARAMETERS FOR SLATEC_SPLINEFIT (for supersky fit): nord - upper - lower - maxiter - OUTPUTS: skystruct - structure containing sorted sky wavelengths,flux,fluxivar + bkpts and coeffs from fitting objsub - Image (OBJ) after sky-subtraction objsubivar - Inverse variance (OBJIVAR) after sky-subtraction OPTIONAL OUTPUTS: iskies= - array of good sky fibers COMMENTS: Construct a "supersky" spectrum by spline-fitting the (good) sky fibers, resampling this at every wavelength in the extracted image, then subtracting. We then measure the variance of the sky-subtracted sky fibers in terms of chi^2. Wherever chi^2 1, we increase the variance of all fibers such that chi^2=1 in the sky fibers. EXAMPLES: BUGS: PROCEDURES CALLED: djs_iterstat djs_oplot djs_oploterr djs_plot pixelmask_bits() slatec_splinefit() slatec_bvalue() REVISION HISTORY: 16-Sep-1999 Written by S. Burles, APO 30-Dec-1999 Modified by D. Schlegel, Princeton (See pro/spec2d//skysubtract.pro)
SORTPLUGMAP[Previous Routine] [Next Routine] [List of Routines] NAME: sortplugmap PURPOSE: Cull the nTrace plugmap entries which match the fibers in the current image CALLING SEQUENCE: plugsort = sortplugmap(plugmap, spectrographid, fibermask, nFibers=nFibers) INPUTS: plugmap - The full Plug map structure read in from plPlugMapM spectrographid - The spectrograph number OPTIONAL KEYWORDS: nFiebrs - number of fibers to locate (default 320) OUTPUTS: plugsort - culled plugmap structure matching current traces OPTIONAL OUTPUTS: fibermask - returns an array of byte with bits set for unknown fibers COMMENTS: EXAMPLES: PROCEDURES CALLED: fibermask_bits() REVISION HISTORY: 19-Oct-1999 Written by S. Burles, Chicago (See pro/spec2d//sortplugmap.pro)
SPALLFLAT[Previous Routine] [Next Routine] [List of Routines] NAME: spallflat PURPOSE: Calling script for SPFLATTEN that generates pixel flats as specified in a plan file. CALLING SEQUENCE: spallflat, planfile=planfile INPUTS: OPTIONAL INPUTS: planfile - Name of output plan file; default to 'spPlanFlat.par' OUTPUT: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: spflatten yanny_read INTERNAL SUPPORT ROUTINES: REVISION HISTORY: 02-Nov-1999 Written by David Schlegel, Princeton. (See pro/spec2d//spallflat.pro)
SPALLREDUCE[Previous Routine] [Next Routine] [List of Routines] NAME: spallreduce PURPOSE: Calling script for SPREDUCE and COMBINE2DOUT that reduces a night of data according to a plan file. CALLING SEQUENCE: spallreduce, [ planfile, docams=, /nocombine, /xdisplay ] INPUTS: OPTIONAL INPUTS: planfile - Name(s) of output plan file; default to reducing all plan files matching 'spPlan2d*.par' docams - Cameras to reduce; default to ['b1', 'b2', 'r1', 'r2']; set to 0 or '' to disable running SPREDUCE and to only combine files. nocombine - Only run SPREDUCE, not COMBINE2DOUT. xdisplay - Send plots to X display rather than to plot file OUTPUT: COMMENTS: EXAMPLES: BUGS: Try to avoid using SPAWN. How do I just combine files? and not re-run spreduce? What happens when the gain has changed? We need to list opECalib.par in spPlan file. Use default opECalib if not found... PROCEDURES CALLED: combine2dout idlspec2d_version() idlutils_version() splog spreduce yanny_free yanny_read INTERNAL SUPPORT ROUTINES: REVISION HISTORY: 02-Nov-1999 Written by David Schlegel, Princeton. (See pro/spec2d//spallreduce.pro)
SPCALIB[Previous Routine] [Next Routine] [List of Routines] NAME: spcalib PURPOSE: Extract calibration frames. CALLING SEQUENCE: spcalib, flatname, arcname, [pixflatname=, fibermask=, $ lampfile=, indir=, timesep=, ecalibfile=, plottitle=, $ arcinfoname=, flatinfoname=, arcstruct=, flatstruct=] INPUTS: flatname - Name(s) of flat-field SDSS image(s) arcname - Name(s) of arc SDSS image(s) OPTIONAL KEYWORDS: pixflatname- Name of pixel-to-pixel flat, produced with SPFLATTEN. fibermask - Fiber status bits, set nonzero for bad status [NFIBER]. Note this is not modified, but modified copies appear in the returned structures ARCSTRUCT and FLATSTRUCT. lampfile - Name of file describing arc lamp lines; default to the file 'lamphgcdne.dat' in the IDL path. indir - Input directory for FLATNAME, ARCNAME, OBJNAME; default to '.' timesep - Maximum time separation between flats and arcs to pair them; set to zero to disable this test; default to 7200 sec. ecalibfile - opECalib file to pass to SDSSPROC plottitle - Prefix for titles in QA plots. arcinfoname- File name (with path) to output arc extraction and fitting information flatinfoname-File name (with path) to output flat field extraction and fitting information OUTPUTS: arcstruct - Structure array with extracted arc calibration information flatstruct - Structure array with extracted flat calibration information OPTIONAL OUTPUTS: COMMENTS: Always pair arcs to the nearest good flat, and flats to the nearest good arc (nearest in time, as defined by the TAI keyword in the FITS headers). EXAMPLES: BUGS: PROCEDURES CALLED: extract_image fiberflat() fitarcimage fitarcimage_old sdssproc shift_trace() splog trace320crude() traceset2xy xy2traceset INTERNAL SUPPORT ROUTINES: create_arcstruct() create_flatstruct() REVISION HISTORY: 24-Jan-2000 Written by D. Schlegel, Princeton (See pro/spec2d//spcalib.pro)
SPFLATTEN[Previous Routine] [Next Routine] [List of Routines] NAME: spflatten PURPOSE: Create pixel-to-pixel flat-field from a stack of SDSS spectral flats. CALLING SEQUENCE: spflatten, flatname, [ pixflat, sigrej=, maxiter=, $ outfile=, indir=, outdir=, tmpdir=, $ bkspace=, nord=, lower=, upper= ] INPUTS: flatname - Name(s) of raw SDSS flat-field image(s). Note that many flats from many nights can be combined. OPTIONAL INPUTS: sigrej - Sigma rejection level; default to 1, 1, 1.1, 1.3, 1.6 or 1.9 for 1,2,3,4,5 or 6 flats. For more then 6 flats, default to 2.0. maxiter - Number of rejection iterations; default to 2. outfile - Write the image PIXFLAT to this file. indir - Input directory for FLATNAME; default to './' outdir - Output directory for OUTFILE; default to './' tmpdir - Directory for temporary files; default to same as OUTDIR PARAMETERS FOR SLATEC_SPLINEFIT: bkspace nord lower upper OUTPUTS: OPTIONAL OUTPUTS: pixflat - Image containing all the information about pixel-to-pixel variations. Illumination variations are removed. COMMENTS: This program writes 2*nflat temporary files to disk to save internal memory. But it still creates an two arrays (FLATARR (float) and OUTMASK (byte)) that is as large as all of the input flats. Thus, if you are using ten 16 MB flat images, that array will be 10*(16+4)=200 MB (in addition to a few other images). EXAMPLES: BUGS: Not sure what to do if exactly 2 frames are passed. PROCEDURES CALLED: djs_avsigclip() extract_image readfits() slatec_bvalu() slatec_splinefit() sdssproc writefits REVISION HISTORY: 13-Oct-1999 Written by D. Schlegel, APO (See pro/spec2d//spflatten.pro)
SPFLATTEN2[Previous Routine] [Next Routine] [List of Routines] NAME: spflatten2 PURPOSE: Create pixel-to-pixel flat-field from a stack of SDSS spectral flats. CALLING SEQUENCE: spflatten2, flatname, arcname, allflats, [ pixflat, sigrej=, maxiter=, $ oldflat=, outfile=, indir=, outdir=, tmpdir=, $ pixspace=, nord=, lower=, upper= ] INPUTS: flatname - Name of flat image for tracing arc arcname - Name of arc image allflats - Name(s) of raw SDSS flat-field image(s). Note that many flats from many nights can be combined. OPTIONAL INPUTS: sigrej - Sigma rejection level; default to 1, 1, 1.1, 1.3, 1.6 or 1.9 for 1,2,3,4,5 or 6 flats. For more then 6 flats, default to 2.0. maxiter - Number of rejection iterations; default to 2. oldflat - Name of old flat-field from which to select pixels to mask; if not set, then read the masks in this source distribution. outfile - Write the image PIXFLAT to this file. indir - Input directory for FLATNAME; default to './' outdir - Output directory for OUTFILE; default to './' tmpdir - Directory for temporary files; default to same as OUTDIR pixspace - Approximate spacing in pixels for break points in the spline fits to individual fibers; default to 50 pixels. Note that this spacing need be small enough to fit out the flux variations of multiple fibers crossing a single column, but it need not fit out the actual flat-field variations. PARAMETERS FOR SLATEC_SPLINEFIT: nord - Default to 4 lower - Default to 2 upper - Default to 2 OUTPUTS: OPTIONAL OUTPUTS: pixflat - Image containing all the information about pixel-to-pixel variations. Illumination variations are removed. COMMENTS: This program writes 2*nflat temporary files to disk to save internal memory. But it still creates an two arrays (FLATARR (float) and OUTMASK (byte)) that is as large as all of the input flats. Thus, if you are using ten 16 MB flat images, that array will be 10*(16+4)=200 MB (in addition to a few other images). EXAMPLES: BUGS: Not sure what to do if exactly 2 frames are passed. Pass UPPER and LOWER. Look for bad fibers or outlier fibers to exclude from superflat. Right now, we can get bad spline fits across the large hole in the b1 flat-field if the break points fall too close to the edges of that hole. Try to keep more data points between the last break point and the beginning of the hole, or do a linear interpolation across the hole. PROCEDURES CALLED: djs_avsigclip() extract_image genflatmask() readfits() slatec_bvalu() slatec_splinefit() sdssproc superflat trace320crude() traceset2xy writefits xy2traceset REVISION HISTORY: 13-Oct-1999 Written by D. Schlegel, APO (See pro/spec2d//spflatten2.pro)
SPGAIN[Previous Routine] [Next Routine] [List of Routines] NAME: spgain PURPOSE: Measure the gain + read noise for SDSS spectroscopic images CALLING SEQUENCE: spgain, flatfile1, flatfile2, [ biasfile1, biasfile2, indir=indir, $ xskip=xskip, yave=yave, gain=gain, rnoise=rnoise ] INPUTS: flatfile1 - File name for flat #1 flatfile2 - File name for flat #2 biasfile1 - File name for bias #1 biasfile2 - File name for bias #2 OPTIONAL KEYWORDS: indir - Input directory for all files xskip - Number of columns to ignore at beginning and end of each amplifier; default to 50 yave - Number of rows to analyze for each calculation of gain and read noise; default to 15 OUTPUTS: gain - Gain in electrons/ADU for each amplifier (array) rnoise - Read noise in electrons for each amplifier (array) COMMENTS: BUGS:; PROCEDURES CALLED: djs_iterstat sdssproc REVISION HISTORY: 21-Nov-1999 Written by D. Schlegel, Princeton. (See pro/spec2d//spgain.pro)
SPLOG[Previous Routine] [Next Routine] [List of Routines] NAME: splog PURPOSE: Logging routine for spectroscopic pipeline. CALLING SEQUENCE: splog, v1, v2 ..., [, _EXTRA=extra, /noname, prelog=, filename=, $ /append, /close ] INPUTS: v1, v2 ... - The expressions to be passed to PRINT or PRINTF OPTIONAL KEYWORDS: _EXTRA - Any keywords for PRINT or PRINTF, such as FORMAT noname - If set, then suppress printing name of calling routine prelog - If set, then print this string immediately after the name of the calling routine on each line, i.e. 'b1' filename - If specified, then open this file for text output append - If set at the same time as FILENAME, then append to this file; default is to overwrite file close - If set, then close the output file OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: Open a file for text output, write to it, then close it: splog, filename='test.log' splog, 'This is a test', 123.4, format='(a,f8.2)' splog, /close Alternatively, this can all be done on one line splog, filename='test.log', /close, $ 'This is a test', 123.4, format='(a,f8.2)' BUGS: PROCEDURES CALLED: REVISION HISTORY: 17-Nov-1999 Written by D. Schlegel, Princeton (See pro/spec2d//splog.pro)
SPPLAN[Previous Routine] [Next Routine] [List of Routines] NAME: spplan PURPOSE: Create plan file(s) for running the Spectro-2D pipeline. CALLING SEQUENCE: spplan, [ rawdir, astrolog=, mjd=, flatdir=, minexp= ] INPUTS: OPTIONAL INPUTS: rawdir - Search for raw data files in RAWDIR/MJD/*. This should be an absolute file path, and we default to '/usr/sdss/data05/spectro/rawdata'. astrolog - Search for plug-map files in PLUGDIR/MJD/*. This should be an absolute file path, and we default to '/usr/sdss/data05/spectro/astrolog'. mjd - Look for raw data files in RAWDIR/MJD; default to '*' to search all subdirectories. Note that this need not be integer-valued, but could be for example '51441_test'. flatdir - Directory for pixel flat files. For now, default to 'pixflat'. minexp - Minimum exposure time for science frames; default to 300 sec. OUTPUT: COMMENTS: Look for the input files in: RAWDIR/MJD/sdR-cs-eeeeeeee.fit - Raw frames, c=color, s=spec # RAWDIR/MJD/plPlugMapM-pppp-mmmmm-aa.par - Plug map files, aa=mapper The top-level of the output directory structure, TOPDIR, is 2d_VERSION, where we read the version with IDLSPEC2d_VERSION(). If this is not a CVS- declared version of the code, then the output directory is '2d_test'. The files created are: TOPDIR/PLATE/spPlan2d-mmmmm-pppp.par - 2D plan file (could be several) If an output plan file already exists, this procedure will crash rather than overwrite that file. Note we assume Unix directory names and we SPAWN the Unix 'ls' command. EXAMPLES: Create the plan file(s) for reducing the data for MJD=51441, with that raw data in the directory '/u/schlegel/rawdata/51441' spplan, '/u/schlegel/rawdata', mjd=51441 BUGS: PROCEDURES CALLED: headfits() idlspec2d_version() splog sxpar() yanny_read yanny_write INTERNAL SUPPORT ROUTINES: spplan_create_exp spplan_create_plug spplan_create_pixflats REVISION HISTORY: 02-Nov-1999 Written by David Schlegel, Princeton. 10-Nov-1999 SMB added checkstats to verify flavors. 18-Jan-2000 Re-written to conform to new file names + directory structure. Not using CHECKSTATS any more at the moment. (See pro/spec2d//spplan.pro)
SPREDUCE[Previous Routine] [Next Routine] [List of Routines] NAME: spreduce PURPOSE: Extract, wavelength-calibrate, and flatten SDSS spectral frame(s). CALLING SEQUENCE: spreduce, flatname, arcname, objname, pixflatname=pixflatname, $ plugfile=plugfile, lampfile=lampfile, $ indir=indir, plugdir=plugdir, outdir=outdir, $ ecalibfile=ecalibfile, plottitle=plottitle, summarystruct=summarystruct INPUTS: flatname - Name(s) of flat-field SDSS image(s) arcname - Name(s) of arc SDSS image(s) objname - Name(s) of object SDSS image(s) REQUIRED KEYWORDS: plugfile - Name of plugmap file (Yanny parameter file) OPTIONAL KEYWORDS: pixflatname- Name of pixel-to-pixel flat, produced with SPFLATTEN. lampfile - Name of file describing arc lamp lines; default to the file 'lamphgcdne.dat' in the IDL path. indir - Input directory for FLATNAME, ARCNAME, OBJNAME; default to '.' plugdir - Input directory for PLUGFILE; default to '.' outdir - Directory for output files; default to '.' ecalibfile - opECalib.par file for SDSSPROC plottitle - Prefix for titles in QA plots. summarystruct - Good intentions ??? OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: Should test that arcs and flats are valid images with CHECKFLAVOR. PROCEDURES CALLED: extract_object qaplot_arcline qaplot_fflat select_arc() select_flat() sortplugmap sdssproc spcalib splog yanny_free yanny_read REVISION HISTORY: 12-Oct-1999 Written by D. Schlegel & S. Burles, APO (See pro/spec2d//spreduce.pro)
SSHIFT[Previous Routine] [Next Routine] [List of Routines] NAME: sshift PURPOSE: (one line) Shift data using a damped sinc function for fractional part. DESCRIPTION: This function will shift an array of data pointed to by x and extending for n points. The amount of the shift is given by shift. The result of the operation is placed at xp. A shift that is within 0.0001 of a whole number is treated to be that of the whole number. If the shift is by an integral number of pixels then the shift involves reindexing the data, no interpolation is done. If the shift is some non-integral amount then the data is resampled using a damped sinc function. The sense of the shift is as follows: think of the array plotted on a fixed scale. A shift of 1 corresponds to shifting the data by one data point to the right relative to the fixed scale, ie. x[3]=xp[4]. The data will fall off one end or another of the output vector as a result of the shift. However, this is not as significant as the edge effect, the convolution is not complete for any data point within 10 points of the edge, so those points cannot be trusted. The missing points in the convolution are assumed to be equal to the end points. CATEGORY: Numerical CALLING SEQUENCE: xp = sshift(x,shift) INPUTS: x - Input data array to be shifted. shift - Amount to shift (negative to left). OPTIONAL INPUT PARAMETERS: KEYWORD PARAMETERS: OUTPUTS: Return value is the shifted array. COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: The input and output arrays cannot be the same. PROCEDURE: MODIFICATION HISTORY: Adapted from Zodiac routine: shiftc/sshift Marc W. Buie, Lowell Observatory, 1992 October 2 (See pro/spec2d//sshift.pro)
SSHIFT2D[Previous Routine] [Next Routine] [List of Routines] NAME: sshift2d PURPOSE: (one line) Shift a 2-D array using a damped sinc function for the fractional part. DESCRIPTION: CATEGORY: Mathematical CALLING SEQUENCE: result = sshift2d( array, shiftvec ) INPUTS: array : Array to be shifted. shiftvec : Vector of two elements: [ xshift, yshift ]. OPTIONAL INPUT PARAMETERS: KEYWORD PARAMETERS: OUTPUTS: The shifted array is returned as the function value. COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: MODIFICATION HISTORY: February, 1993: Copied from "sincshift.pro" written by John Spencer, Lowell Observatory. Very minor modifications by Doug Loucks, Lowell Observatory. (See pro/spec2d//sshift2d.pro)
SSHIFTVEC[Previous Routine] [Next Routine] [List of Routines] NAME: sshiftvec PURPOSE: Shift vector or image (line-at-a-time) using a damped sinc function. CALLING SEQUENCE: simage = sshiftvec( fimage, shift, [ sincrad=sincrad, dampfac=dampfac, $ eps=eps ] ) INPUTS: fimage - Input vector (1D) or image (2D) shift - Distance to shift OPTIONAL KEYWORDS: sincrad - Half-width of sinc convolution kernal; default to 10 pixels dampfac - Damping factor for gaussian; default to 3.25 eps - Smallest fractional shift allowed; default to 1.0e-5 OUTPUTS: simage - Shifted image OPTIONAL OUTPUTS: COMMENTS: This routine is based upon the IDL routine SSHIFT from Marc Buie, which in turn is based upon the Zodiac routine shiftc/sshift. EXAMPLES: PROCEDURES CALLED: Dynamic link to sshiftvec.c REVISION HISTORY: 14-Apr-1999 Written by David Schlegel, Princeton. (See pro/spec2d//sshiftvec.pro)
SUPERFLAT[Previous Routine] [Next Routine] [List of Routines] NAME: superflat PURPOSE: Create a "superflat" from an extracted flat-field image CALLING SEQUENCE: superflat, flux, fluxivar, wset, fullbkpt, coeff, $ [ fibermask=, minval=, lower=, upper=, medval=, title= ] INPUTS: flux - Array of extracted flux from a flat-field image [Nrow,Ntrace] fluxivar - Inverse variance map for FLUX. wset - Wavelength solution OPTIONAL KEYWORDS: fibermask - Fiber status bits, set nonzero for bad status [NFIBER] minval - Minimum value to use in fits to flat-field vectors; default to 0. title - TITLE of plot PARAMETERS FOR SLATEC_SPLINEFIT: lower - upper - OUTPUTS: fullbkpt - Breakpoints describing spline fit to superflat coeff - Coefficients describing spline fit to superflat OPTIONAL OUTPUTS: medval - Median value of each fiber [NFIBER] fibermask - (Modified) COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_maskinterp() djs_mean() djs_oplot djs_plot slatec_bvalu() slatec_splinefit() traceset2xy REVISION HISTORY: 02-Jan-2000 Excised code from SPFLATTEN2 (DJS). (See pro/spec2d//superflat.pro)
TELLURIC_CORR[Previous Routine] [Next Routine] [List of Routines] NAME: telluric_corr PURPOSE: Use SPECTROPHOTO and REDDEN_STD's to fit telluric features between wavelengths 10^minw and 10^maxw CALLING SEQUENCE: telluric_factor = telluric_corr(flux, fluxivar, wset, plugsort, $ contwave=contwave, contflux=contflux, contivar=contivar, $ telluricbkpt=telluricbkpt, telluriccoeff=telluriccoeff, $ minw=minw, maxw=maxw, lower=lower, upper=upper, $ ncontbkpts = ncontbkpts, fibermask=fibermask) INPUTS: flux - sky-subtracted extracted spectra [nx,ntrace] fluxivar - corresponding inverse variance [nx,ntrace] wset - wavelength coefficients as a trace set plugsort - plugmap entries OPTIONAL KEYWORDS: minw - minimum wavelength to fit (Default 3.82) maxw - maximum wavelength to fit (Default 3.92) ncontbkpts - Number of bkpts to fit continuum in telluric region (5) lower - lower rejection threshold for telluric fitting upper - upper rejection threshold for telluric fitting fibermask - use to reject possible standards which have spectral troubles OUTPUTS: telluric_factor - Telluric correction for each pixel in flux array OPTIONAL OUTPUTS: contflux - Normalized flux of stars used in telluric fitting contivar - Corresponding inverse variance contwave - Corresponding wavelengths (log lambda) telluricbkpt - bkpts used in telluric absorption fit telluriccoeff- best fit b-spline coefficients for telluric absorption COMMENTS: EXAMPLES: BUGS: There is still some low order residual from flux correction (I think due to telluric absorption), which is in turned removed by the telluric_correction. Although there is not a clean break between the two steps, used together they seem to correct the spectra properly PROCEDURES CALLED: REVISION HISTORY: 19-Oct-1999 Written by S. Burles, Chicago (See pro/spec2d//telluric_corr.pro)
TRACE320CEN[Previous Routine] [Next Routine] [List of Routines] NAME: trace320cen PURPOSE: Find the 320 fiber positions for the central row of an image. CALLING SEQUENCE: xfiber = trace320cen( fimage, [mthresh=, ystart=, nmed=, xgood= ] ) INPUTS: fimage - Image OPTIONAL INPUTS: mthresh - Threshold for peak-finding in convolved row; default to 0.5 times the dispersion (found with djs_iterstat). ystart - Y position in image to search for initial X centers; default to the central row nmed - Number of rows to median filter around YSTART; default to 21 OUTPUTS: xfiber - Vector of 320 X centers OPTIONAL OUTPUTS: xgood - Set to 1 for fibers that were actually found, 0 otherwise COMMENTS: EXAMPLES: PROCEDURES CALLED: djs_iterstat REVISION HISTORY: 13-Sep-1999 Written by David Schlegel, Princeton. (See pro/spec2d//trace320cen.pro)
TRACE320CRUDE[Previous Routine] [Next Routine] [List of Routines] NAME: trace320crude PURPOSE: Calling script to return 320 full traces using TRACE_CRUDE. CALLING SEQUENCE: xset = trace320crude( fimage, invvar, [mthresh=, ystart=, nmed=, $ xmask=, yset=, maxerr=, maxshifte=, maxshift0=, xerr=, maxdev=, ngrow=, $ fibermask= ] ) INPUTS: fimage - Image OPTIONAL INPUTS FOR TRACE320CEN: mthresh - Threshold for peak-finding in convolved row; default to 0.5 times the dispersion (found with djs_iterstat). ystart - Y position in image to search for initial X centers; default to the central row nmed - Number of rows to median filter around YSTART; default to 21 OPTIONAL INPUTS FOR TRACE_CRUDE: invvar - Inverse variance (weight) image radius - Radius for centroiding; default to 3.0 maxerr - Maximum error in centroid allowed for valid recentering; default to 0.2 maxshifte - Maximum shift in centroid allowed for valid recentering; default to 0.1 maxshift0 - Maximum shift in centroid allowed for initial row; default to 0.5 OPTIONAL INPUTS: maxdev - Maximum deviation of X in pixels; default to rejecting any XPOS positions that deviate by more than 1.0 pixels from a polynomial remapping of the centroids from other rows. ngrow - For each trace, replace all centroids within NGROW rows of a bad centroid with the predicted centroid locations. Default to 5. fibermask - Fiber status bits, set nonzero for bad status [NFIBER] OUTPUTS: xset - X centers for all traces OPTIONAL OUTPUTS: yset - Y centers for all traces xerr - Errors for XSET xmask - Mask set to 1 for good fiber centers, 0 for bad; same dimensions as XSET. fibermask - (Modified.) COMMENTS: EXAMPLES: PROCEDURES CALLED: fibermask_bits() trace_crude() trace_fweight() trace320cen() REVISION HISTORY: 13-Sep-1999 Written by David Schlegel, Princeton. (See pro/spec2d//trace320crude.pro)
TRACESET2PIX[Previous Routine] [Next Routine] [List of Routines] NAME: traceset2pix PURPOSE: Use a traceset to find the pixel numbers corresponding to a certain postion CALLING SEQUENCE: pixpos = traceset2pix(tset, lambda, [nicoeff=nicoeff] ) INPUTS: tset - Structure containing trace set lambda - Wavelengths at which to find X pixel position OPTIONAL KEYWORDS: nicoeff - Number of coefficients to use in inversion; default to using 2 more coefficients than for the forward trace set (e.g., TSET.NCOEFF+2) OUTPUTS: pixpos - Pixel positions corresponding to LAMBDA as an [Nlambda,Ntrace] array OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: BUGS: PROCEDURES CALLED: djs_laxisgen() flegendre() traceset2xy xy2traceset REVISION HISTORY: 09-Nov-1999 Written by David Schlegel, Ringberg. (See pro/spec2d//traceset2pix.pro)
TRACESET2XY[Previous Routine] [Next Routine] [List of Routines] NAME: traceset2xy PURPOSE: Convert from a trace set to an array of x,y positions CALLING SEQUENCE: traceset2xy, tset, xpos, ypos INPUTS: tset - Structure containing trace set OPTIONAL KEYWORDS: OUTPUTS: xpos - X positions corresponding to YPOS as an [nx,Ntrace] array ypos - Y centers as an [nx,nTrace] array OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: PROCEDURES CALLED: djs_laxisgen() flegendre() REVISION HISTORY: 19-May-1999 Written by David Schlegel, Princeton. (See pro/spec2d//traceset2xy.pro)
TRACE_CRUDE[Previous Routine] [Next Routine] [List of Routines] NAME: trace_crude PURPOSE: Create a crude trace set given one position (eg, a center) in each trace. CALLING SEQUENCE: xset = trace_crude( fimage, invvar, [xstart=, ystart=, radius=, yset=, $ nave=, nmed=, thresh=, maxerr=, maxshifte=, maxshift0=, xerr= ] ) INPUTS: fimage - Image OPTIONAL INPUTS: invvar - Inverse variance (weight) image xstart - Initial guesses for X centers (one for each trace). If not set, then this code searches for all peaks at YSTART. ystart - Y positions corresponding to "xstart" (expected as integers). There are three options for this parameter: (1) One element of YSTART for each value of XSTART, (2) A scalar value that is used for every XSTART, or (3) Not set, in which case the center row is used. radius - Radius for centroiding; default to 3.0 nmed - Median filtering size down columns before performing trace; default to 1 nave - Averaging size down columns before performing trace; default to 5 thresh - Threshold for initial peak finding; if not set, then use 1.0 times the median of the row(s) used for the initial peaks. maxerr - Maximum error in centroid allowed for valid recentering; default to 0.2 maxshifte - Maximum shift in centroid allowed for valid recentering; default to 0.1 maxshift0 - Maximum shift in centroid allowed for initial row; default to 0.5 OUTPUTS: xset - X centers for all traces OPTIONAL OUTPUTS: yset - Y centers for all traces xerr - Errors for XSET COMMENTS: EXAMPLES: PROCEDURES CALLED: djs_laxisgen() Dynamic link to trace_crude.c REVISION HISTORY: 14-May-1999 Written by David Schlegel, Princeton. 12-Jul-1999 Added optional output YSET (DJS). 06-Aug-1999 Added optional outpust XERR (DJS). (See pro/spec2d//trace_crude.pro)
TRACE_FIX[Previous Routine] [Next Routine] [List of Routines] NAME: trace_fix PURPOSE: Fix a set of trace centers by replacing traces that converge. CALLING SEQUENCE: xnew = trace_fix( xcen, [minsep= , ngrow=, ycen=, xerr=]) INPUTS: xcen - X centers for all traces [ny,nTrace] OPTIONAL INPUTS: minsep - Minimum separation between adjacent traces. Smaller separations are regarded as bad traces. Default to 5.5. ngrow - Replace all pixels within MINSEP of its adjacent trace, plus NGROW of its neighboring pixels. Default to 20. ycen - Y centers corresponding to XCEN. xerr - X errors corresponding to XCEN. OUTPUTS: xnew - Modified XCEN; traces may be removed or shifted. ycen - Modified YCEN; columns may be removed. xerr - Modified XERR; columns may be removed. COMMENTS: EXAMPLES: PROCEDURES CALLED: INTERNAL PROCEDURES: remove_column REVISION HISTORY: 13-Aug-1999 Written by David Schlegel, Princeton. (See pro/spec2d//trace_fix.pro)
TRACE_FWEIGHT[Previous Routine] [Next Routine] [List of Routines] NAME: trace_fweight PURPOSE: Recenter a trace using flux-weighting centers. CALLING SEQUENCE: xnew = trace_fweight( fimage, xcen, ycen, [radius=radius, xerr=xerr, invvar=invvar] ) INPUTS: fimage - Image xcen - Initial guesses for X centers ycen - Y positions corresponding to "xcen" (expected as integers) OPTIONAL KEYWORDS: radius - Radius for centroiding; default to 3.0 invvar - Inverse variance of image used only in computing errors XERR. If not set, then INVVAR=1 is used. OUTPUTS: xnew - New X centers OPTIONAL OUTPUTS: xerr - Formal errors for XNEW; set equal to 999.0 if there are any masked pixels in a centroiding region (e.g., if INVVAR=0) COMMENTS: EXAMPLES: PROCEDURES CALLED: Dynamic link to trace_fweight.c REVISION HISTORY: 24-Mar-1999 Written by David Schlegel, Princeton. (See pro/spec2d//trace_fweight.pro)
TRACE_GWEIGHT[Previous Routine] [Next Routine] [List of Routines] NAME: trace_gweight PURPOSE: Recenter a trace using gaussian-weighted centers. CALLING SEQUENCE: xnew = trace_fweight( fimage, xcen, ycen, [sigma=sigma, xerr=xerr, invvar=invvar] ) INPUTS: fimage - Image xcen - Initial guesses for X centers ycen - Y positions corresponding to "xcen" (expected as integers) OPTIONAL KEYWORDS: radius - Sigma in pixels; default to 1.0 invvar - Inverse variance of image used only in computing errors XERR. If not set, then INVVAR=1 is used. OUTPUTS: xnew - New X centers OPTIONAL OUTPUTS: xerr - Formal errors for XNEW; set equal to 999.0 if there are any masked pixels in a centroiding region (e.g., if INVVAR=0) COMMENTS: EXAMPLES: REVISION HISTORY: 17-Jan-2000 Written by Scott Burles, Chicago (See pro/spec2d//trace_gweight.pro)
TWEAKTRACE[Previous Routine] [Next Routine] [List of Routines] NAME: tweaktrace PURPOSE: Use fitans to tweak trace and sigma This just perturbs the input values of xcen and sigma CALLING SEQUENCE: tweaktrace, x, sigma, centershift, sigmashift, maxshift=maxshift INPUTS: x - the input trace positions sigma - the input sigma widths of profiles centershift - the pixel shift in x sigmashift - the fractional change of sigma OPTIONAL KEYWORDS: maxshift - the absolute allowed shift in x (default = 1.0) OUTPUTS: OPTIONAL OUTPUTS: COMMENTS: EXAMPLES: PROCEDURES CALLED: REVISION HISTORY: 19-Oct-1999 Written by S. Burles, Chicago (See pro/spec2d//tweaktrace.pro)
USHIFT[Previous Routine] [Next Routine] [List of Routines] NAME: ushift PURPOSE: (one line) Shift data using a damped sinc onto slightly non-linear x values DESCRIPTION: This function will shift an array of data pointed to by x and extending for n points. The amount of the shift is given by shift. The result of the operation is placed at xp. A shift that is within 0.0001 of a whole number is treated to be that of the whole number. If the shift is by an integral number of pixels then the shift involves reindexing the data, no interpolation is done. If the shift is some non-integral amount then the data is resampled using a damped sinc function. The sense of the shift is as follows: think of the array plotted on a fixed scale. A shift of 1 corresponds to shifting the data by one data point to the right relative to the fixed scale, ie. x[3]=xp[4]. The data will fall off one end or another of the output vector as a result of the shift. However, this is not as significant as the edge effect, the convolution is not complete for any data point within 10 points of the edge, so those points cannot be trusted. The missing points in the convolution are assumed to be equal to the end points. CATEGORY: Numerical CALLING SEQUENCE: yp = ushift(y, invset, xp) INPUTS: y - Input data array to be shifted. invset - Structure which contains coefficients to map xin to pixels xin - The x-axis values for the requested yp OPTIONAL INPUT PARAMETERS: KEYWORD PARAMETERS: OUTPUTS: Return value is the shifted array. COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: The input and output arrays cannot be the same. PROCEDURE: MODIFICATION HISTORY: Adapted from Zodiac routine: shiftc/sshift Marc W. Buie, Lowell Observatory, 1992 October 2 (See pro/spec2d//ushift.pro)
XY2TRACESET[Previous Routine] [List of Routines] NAME: xy2traceset PURPOSE: Convert from an array of x,y positions to a trace set CALLING SEQUENCE: xy2traceset, xpos, ypos, tset, [ func=func, ncoeff=ncoeff, $ xmin=xmin, xmax=xmax, maxdev=maxdev, maxsig=maxsig, maxiter=maxiter, $ singlerej=singlerej, xmask=xmask, yfit=yfit, inputans=inputans, $ invvar=invvar, _EXTRA=KeywordsForFuncFit ] INPUTS: xpos - X positions corresponding to YPOS as an [nx,Ntrace] array ypos - Y centers as an [nx,ntrace] array OPTIONAL KEYWORDS: func - Function for trace set; options are: 'legendre' 'chebyshev' Default to 'legendre' ncoeff - Number of coefficients in fit; default to 3 ncoeff - Inverse variance for weighted func_fit xmin - Explicitly set XMIN for trace set rather than using minimum in XPOS xmax - Explicitly set XMAX for trace set rather than using maximum in XPOS maxdev - Maximum deviation in the fit to YPOS; set to 0 for no reject; default to 0. maxsig - Maximum deviation in the fit to YPOS in terms of the 1-sigma dispersion of the residuals; set to 0 for no reject; default to 0. maxiter - Maximum number of rejection iterations; set to 0 for no rejection; default to 10 if either MAXDEV or MAXSIG are set. Rejection iterations continues until convergence (actually, until the number of rejected pixels is unchanged). singlerej - If set, then reject at most one deviant point per iteration, rejecting the worst one each time. In this case, MAXITER represents the maximum number of points that can be rejected per trace. inputans - ??? OUTPUTS: tset - Structure containing trace set OPTIONAL OUTPUTS: xmask - Mask set to 1 for good points and 0 for rejected points; same dimensions as XPOS, YPOS. yfit - Fit values at each XPOS. COMMENTS: Note that both MAXDEV and MAXSIG can be set for applying both rejection schemes at once. The HALFINTWO keyword can be passed to FCHEBYSHEV by this procedure. EXAMPLES: BUGS: Should probably change default to no rejection. PROCEDURES CALLED: fchebyshev() flegendre() func_fit() REVISION HISTORY: 19-May-1999 Written by David Schlegel, Princeton. 04-Aug-1999 Added chebyshev option (DJS). (See pro/spec2d//xy2traceset.pro)
|