Esempio n. 1
0
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')
Esempio n. 2
0
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()
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
    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 : ' +