NAME: mkbias PURPOSE: Collect and combine CCD bias frames into a superbias frame DESCRIPTION: The files are assumed to be named as 'root'NNN where 'root' is the root of the file name that you supply and NNN is a three digit number. If your file name has an imbedded '.' then add it to the root. The specified range of files are all read in from FITS files. Then each image has the overscan mean subtracted (if desired), cropped (as indicated). These images are then averaged. The averaging is done with AVGCLIP.PRO which does a robust average of the image stack so that cosmic rays or other transient image defects are eliminated. When done, the resulting bias image is returned to the caller and the image is saved to a FITS file with the specified output filename. CATEGORY: CCD data processing CALLING SEQUENCE: mkbias,root,outsuf,start,nframes,bias,good INPUTS: root - Root of the file name (you must include . in the name). outsuf - The suffix of the final output file. start - First frame number to read (integer or long). Start can also be a vector of explicit frame numbers to load. In this case, nframes need not be specified and in fact will be ignored. Additionally, start can also be a string array containing the file names of all files to be read. In this case, set nframes to 0 or someother innocuous integer. Exclude is treated differently. In this case, exclude is a vector of the same length as start and is 0 if the file is to be used, 1 if not. nframes - Number of frames to average. OPTIONAL INPUT PARAMETERS: KEYWORD INPUT PARAMETERS: CROP = region of original image to save, default=no cropping. [x1,x2,y1,y2] DIGITS - Optional input to indicate how many digits are in the suffix of the file name. The default for this input is 0. In this case it uses the ROBOCCD scheme which is three digits up to 999. After that, it gets complicated, see numtoflist for more information. If you were to give it a value of three you would get the same behavior except you won't get the ROBOCDD extension. This is really designed for when you have four or more digits. DDIR = Directory to look for raw data in. Default = '' EXCLUDE - Optional vector of image numbers that should be excluded from average. Default is to include all frames. OVERSCAN = column overscan region to use for frame bias level, default=no overscan subtraction. RDNOISE - Read noise of CCD [in DN], default=10 MINGOOD - Minimum number of frames required to be considered a good bias. (Default=15) MAXBAD - Maximum number of bad rows allowed per image (see gradebias) Default is inherited from gradebias OUTPUTS: bias - Final robust averaged/cropped bias image. good - Flag, true if this collection of bias images is considered to be good. KEYWORD OUTPUT PARAMETERS: NGOOD - Number of frames considered to be good at the end of operation. Note that this will usually be >0 even if the set is marked bad since all process stops once the number drops below MINGOOD. If NOGRADE is set the value returned is -1 IDXGOOD - Indicies into the list of files for those that were considered to be good COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: MODIFICATION HISTORY: 95/03/09 - Initial crude version written, Marc W. Buie, Lowell Observatory 95/06/13, MWB, added OVERSCAN and CROP keywords 95/11/22, MWB, add EXCLUDE keyword 2000/02/02, MWB, rewrite to add support for multigroup FITS files. 2000/02/28, MWB, added support for frame numbers > 999. 2001/02/23, MWB, added option to provide input file list. 2001/04/28, MWB, added DDIR keyword. 2005/01/04, MWB, changed so .fits tag can come and go in file names. 2006/07/14, MWB, added RDNOISE keyword 2006/10/23, MWB, fixed output header keyword problem (remove BSCALE/BZERO) 2007/06/20, MWB, fixed minor bug with image list for start 2015/04/26, MWB, added tool to provide a quality grade for set of images 2015/05/03, MWB, added much more sophisticated logic to build the superbias. Automatic filtering of bad frames is done internally. 2016/05/29, MWB, added DIGITS keyword 2018/07/24, MWB, added good return 2018/12/17, MWB, capture failure of running avgclip 2018/12/21, MWB, added NGOOD output keyword 2019/05/15, MWB, added IDXGOOD output keyword 2019/12/02, MWB, added a check to make sure there are at least mingood frames at the start, otherwise, return right away and mark it all as bad. 2019/12/03, MWB, added a trap for a special failure case