Esempio n. 1
0
def fitstbl():
    if os.getenv('PYPEIT_DEV') is None:
        fitstbl = dummy_fitstbl(directory=data_path(''))
        fitstbl['filename'][1] = 'b1.fits.gz'
        fitstbl['filename'][5] = 'b27.fits.gz'
        return fitstbl

    fitstbl = dummy_fitstbl(directory=os.path.join(os.getenv(
        'PYPEIT_DEV'), 'RAW_DATA', 'shane_kast_blue', '600_4310_d55'))
    fitstbl['filename'][1] = 'b1.fits.gz'
    for ii in range(2, 5):
        fitstbl['filename'][ii] = 'b{0}.fits.gz'.format(ii)
    fitstbl['filename'][5] = 'b27.fits.gz'

    return fitstbl
Esempio n. 2
0
def test_gen_sensfunc():

    kastb = load_spectrograph('shane_kast_blue')

    # Load a random spectrum for the sensitivity function
    sfile = data_path('spec1d_r153-J0025-0312_KASTr_2015Jan23T025323.850.fits')
    specobjs = load.load_specobjs(sfile)
    #    telescope = telescopes.ShaneTelescopePar()
    fitstbl = dummy_fitstbl()
    RA = '05:06:36.6'
    DEC = '52:52:01.0'

    # Get the sensitivity function
    sens_dict = flux.generate_sensfunc(specobjs[0][0].boxcar['WAVE'],
                                       specobjs[0][0].boxcar['COUNTS'],
                                       specobjs[0][0].boxcar['COUNTS_IVAR'],
                                       fitstbl['airmass'][4],
                                       fitstbl['exptime'][4],
                                       kastb.telescope['longitude'],
                                       kastb.telescope['latitude'],
                                       ra=RA,
                                       dec=DEC)

    # Test
    assert isinstance(sens_dict, dict)
    assert isinstance(sens_dict['wave_min'], units.Quantity)
Esempio n. 3
0
def test_geocorrect():
    """
    """

    fitstbl = dummy_fitstbl()
    # Specobj (wrap in a list to mimic a slit)
    scidx = 5
    obstime = Time(fitstbl['mjd'][scidx],
                   format='mjd')  #'%Y-%m-%dT%H:%M:%S.%f')
    radec = ltu.radec_to_coord((fitstbl["ra"][scidx], fitstbl["dec"][scidx]))

    helio, hel_corr = wave.geomotion_correct(radec, obstime, lon, lat, alt,
                                             'heliocentric')
    assert np.isclose(helio, -9.17461338,
                      rtol=1e-5)  # Checked against x_keckhelio
    #assert np.isclose(helio, -9.3344957, rtol=1e-5)  # Original
    assert np.isclose(1 - hel_corr, 3.060273748e-05, rtol=1e-5)

    # Now apply to a specobj
    npix = 1000
    sobj = specobj.SpecObj('MultiSlit', 'DET01', SLITID=0)
    sobj.BOX_WAVE = np.linspace(4000., 6000., npix)
    sobj.BOX_COUNTS = 50. * (sobj.BOX_WAVE / 5000.)**-1.
    sobj.BOX_COUNTS_IVAR = 1. / sobj.BOX_COUNTS.copy()
    sobj.apply_helio(hel_corr, 'heliocentric')
    assert np.isclose(sobj.BOX_WAVE[0], 3999.877589008, rtol=1e-8)
Esempio n. 4
0
def fitstbl():
    if os.getenv('PYPEIT_DEV') is None:
        fitstbl = dummy_fitstbl(directory=data_path(''))
        fitstbl['framebit'][0] = fitstbl.type_bitmask.turn_off(fitstbl['framebit'][0], flag='bias')
        fitstbl['filename'][1] = 'b1.fits.gz'
        fitstbl['filename'][5] = 'b27.fits.gz'
        return fitstbl

    fitstbl = dummy_fitstbl(directory=os.path.join(os.getenv('PYPEIT_DEV'), 'RAW_DATA',
                                                   'shane_kast_blue', '600_4310_d55'))
    # Set the Bias to known
    fitstbl['framebit'][0] = fitstbl.type_bitmask.turn_off(fitstbl['framebit'][0], flag='bias')
    fitstbl['filename'][1] = 'b1.fits.gz'
    for ii in range(2,5):
        fitstbl['filename'][ii] = 'b{0}.fits.gz'.format(ii)
    fitstbl['filename'][5] = 'b27.fits.gz'

    return fitstbl
Esempio n. 5
0
def test_save1d_fits():
    """ save1d to FITS and HDF5
    """
    # Init
    fitstbl = dummy_fitstbl(spectro_name='shane_kast_blue', directory=data_path(''))
    sobj = mk_specobj()
    specObjs = specobjs.SpecObjs([sobj])
    spectrograph = util.load_spectrograph('shane_kast_blue')
    # Write to FITS
    basename = 'test'
    outfile = data_path('') + 'spec1d_{:s}.fits'.format(basename)
    save.save_1d_spectra_fits(specObjs, fitstbl[5], spectrograph, outfile)
Esempio n. 6
0
def test_save2d_fits():
    #settings.dummy_settings()
    #fitsdict = arutils.dummy_fitsdict(nfile=1, spectrograph='none', directory=data_path(''))
    fitstbl = dummy_fitstbl(directory=data_path(''))
    # Kludge
    fitstbl.table.remove_column('filename')
    fitstbl['filename'] = 'b1.fits.gz'
    # Settings
    #settings.argflag['run']['directory']['science'] = data_path('')
    spectrograph = util.load_spectrograph('shane_kast_blue')
    # Fill with dummy images
    dum = np.ones((100, 100))
    sci_dict = {}
    sci_dict[0] = {}
    sci_dict[0]['sciframe'] = dum
    sci_dict[0]['finalvar'] = dum * 2
    sci_dict[0]['finalsky'] = dum + 0.1

    sci_dict['meta'] = {}
    sci_dict['meta']['vel_corr'] = 0.
    sci_dict['meta']['ir_redux'] = False

    basename = 'test'
    scidx = 5
    path = fitstbl['directory'][scidx]
    ifile = fitstbl['filename'][scidx]
    rawfile = os.path.join(path, ifile)
    master_dir = data_path('MF') + '_' + 'shane_kast_blue'
    outfile = data_path('') + 'spec2d_{:s}.fits'.format(basename)
    # Create a dummy master_key_dict
    master_key_dict = dict(frame='',
                           bpm='bpmkey',
                           bias='',
                           arc='',
                           trace='',
                           flat='')
    raw_hdr = fits.open(rawfile)[0].header
    save.save_2d_images(sci_dict, raw_hdr, spectrograph, master_key_dict,
                        master_dir, outfile)
    # Read and test
    head0 = fits.getheader(data_path('spec2d_test.fits'))
    assert head0['PYPMFDIR'] == master_dir
    assert head0[
        'BPMMKEY'] == 'bpm'  # See save_2d_images; removes last 3 characters
    assert 'PYPEIT' in head0['PIPELINE']
Esempio n. 7
0
def fitstbl():
    return dummy_fitstbl()