def print_imstats_1exp(imstats, fname_in, verbose=False): # this is a small amount of unnecessary I/O but whatever h = fits.getheader(fname_in, extname='CI') exptime = h['EXPTIME'] if verbose: for row in imstats: print(row['camera'], fname_in) for c in row.colnames: print(' ' * 5, '{:16}'.format(c), ' : ', row[c]) cols = [ 'expid', 'camera', 'median', 'max', 'min', 'sigma', 'med-bias', 'dark_tot_adu', 'sky_ab' ] _imstats = copy.deepcopy(imstats) # save horizntal space on printouts _imstats['median'] = np.round(_imstats['median']).astype('int') _imstats['min'] = np.round(_imstats['min']).astype('int') _imstats['max'] = np.round(_imstats['max']).astype('int') _imstats['sigma'] = np.round(_imstats['sig_robust']).astype('int') _imstats['expid'] = common.expid_from_filename(fname_in) median_minus_bias = np.zeros(len(_imstats)) total_dark_adu = np.zeros(len(_imstats)) sky_mag_ab = np.zeros(len(_imstats)) for i in range(len(_imstats)): median_minus_bias[i] = np.round( imstats['median'][i] - common.get_median_bias_adu(_imstats['camera'][i])).astype(int) ccdtemp = io.get_temperature_celsius(fname_in, _imstats['camera'][i]) # should really get rid of the hardcoding of 7.5 Celsius below !!! total_dark_adu[i] = exptime * common.get_median_dark_current( _imstats['camera'][i]) * dark_current.dark_current_rate( ccdtemp) / dark_current.dark_current_rate(7.5) sky_mag_ab[i] = adu_to_surface_brightness( median_minus_bias[i] - total_dark_adu[i], exptime, _imstats['camera'][i]) _imstats['med-bias'] = median_minus_bias _imstats['dark_tot_adu'] = total_dark_adu _imstats['sky_ab'] = sky_mag_ab print(_imstats[cols]) print('*sigma column is a robust standard deviation measurement') print('**all pixel values quoted are in ADU')
def run(workerid, q): global out_basedir print('Worker {} ready to go'.format(workerid)) while True: image = q.get(block=True) filename = image.fname_raw print('Worker {} processing {}'.format(workerid, filename)) sys.stdout.flush() #- Do something with that filename outdir = os.path.join(os.path.join(out_basedir, image.night), str(expid_from_filename(filename)).zfill(8)) if args.guider: print('sleeping for 1 minute to avoid bad DTS links') ### time.sleep(60.0) # hack to deal with bad DTS links try: if not args.focus: _proc(filename, outdir=outdir, realtime=True, cube_index=image.cube_index, skip_image_outputs=True, skip_raw_imstats=False, pmgstars=True, mjdmin=image.mjdmin, mjdmax=image.mjdmax) else: _proc(filename, outdir=outdir, realtime=True, cube_index=image.cube_index, skip_image_outputs=True, skip_raw_imstats=True, skip_astrometry=True, no_ps1_xmatch=True, no_gaia_xmatch=True, do_sky_mag=False, skip_2d_gaussians=True) except: print('PROCESSING FAILURE: ' + image.fname_raw + ' ' + \ image._cube_index_string()) print('Worker {} done with {}'.format(workerid, filename)) sys.stdout.flush()
def _one_command(fname, night, out_basedir=out_basedir, background=False, mjdrange=None, fieldmodel=False, pmgstars=True, make_exp_outdir=True, log_prefix='coadd', acq=False): # assume that if mjdrange is not None, then it will be a two element list # [mjdmin, mjdmax] assert(os.path.exists(fname)) assert(os.path.exists(out_basedir)) expid = expid_from_filename(fname) outdir = os.path.join(out_basedir, night + '/' + str(expid).zfill(8)) if make_exp_outdir: if not os.path.exists(outdir): os.mkdir(outdir) cmd = 'python -u ' + gfa_red.__file__ + ' ' + fname + ' --outdir ' + \ outdir + ' --skip_image_outputs' if not acq: cmd += ' --cube_index -1 ' else: cmd += ' ' if mjdrange is not None: _extra = '--mjdmin ' + str(mjdrange[0]) + ' --mjdmax ' + \ str(mjdrange[1]) + ' ' cmd += _extra if fieldmodel: cmd += '--fieldmodel ' if pmgstars: cmd += '--pmgstars ' cmd += '&> ' + log_prefix + '-' + str(expid).zfill(8) + '.log' return cmd
def _one_guide_command( fname, night, cube_index, out_basedir='/n/home/datasystems/users/ameisner/reduced/v0021_guide', background=False): assert (os.path.exists(fname)) assert (os.path.exists(out_basedir)) expid = expid_from_filename(fname) outdir = os.path.join(out_basedir, night + '/' + str(expid).zfill(8)) if not os.path.exists(outdir): os.mkdir(outdir) cmd = 'nohup python -u /n/home/datasystems/users/ameisner/latest/gfa_reduce/py/gfa_reduce/gfa_red.py ' + fname + ' --outdir ' + outdir + ' --skip_image_outputs --cube_index ' + str( cube_index) + ' &> guide-' + str(expid).zfill(8) + '-' + str( cube_index).zfill(8) + '.log' return cmd
if args.night == 'now': night_now = util.get_obs_night_now(verbose=False) if night_now != night: print('UPDATING OBSERVING NIGHT FROM ' + night + \ ' TO ' + night_now) night = night_now indir = set_indir(night) night_basedir_out = set_night_basedir_out(night) glob_pattern = os.path.join(indir, pattern) flist = glob.glob(glob_pattern) flist.sort() flist = np.array(flist) expids = np.array([expid_from_filename(f) for f in flist]) flist = flist[expids >= args.expid_min] for filename in flist: if filename not in known_files: if guider or is_flavor_science(filename): print('Server putting {} in the queue'.format(filename)) sys.stdout.flush() if not guider: image = ProcItem(filename, night, cube_index=None) q.put(image) else: # should put in a pause here fname_guide = filename.replace('desi-', 'guide-') if not os.path.exists(fname_guide): print( 'spectro file has no corresponding guide cube : ' +