Example #1
0
def make_flat():
    """
    Makes flat and data mask. 
    Just for single filter I band
    """
    util.mkdir(calib_dir)

    ## Creating flat from range, I band only, 60 seconds
    flat_num = np.arange(37, 49 + 1)
    flat_frames = [
        '{0:s}dome_{1:03d}.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}dome_{1:03d}_scan.fits'.format(dome_dir, ss) for ss in flat_num
    ]

    reduce_STA.treat_overscan(flat_frames)
    calib.makeflat(scan_flat_frames,
                   None,
                   calib_dir + 'domeflat_I.fits',
                   darks=False)

    ## Make a mask to use when calling find_stars.
    calib.make_mask(calib_dir + 'domeflat_I.fits',
                    calib_dir + 'mask.fits',
                    mask_min=0.5,
                    mask_max=1.8,
                    left_slice=20,
                    right_slice=20,
                    top_slice=25,
                    bottom_slice=25)

    return
Example #2
0
def make_sky():

    util.mkdir(sky_dir)

    ## CREATING A SKY

    ## IVBR pos 2
    sky_num = np.arange(43, 49 + 1)
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky_IVBR.fits')

    ## BRIV pos 4
    sky_num = np.arange(37, 42 + 1)
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky_BRIV.fits')

    return
Example #3
0
def reduce_beehive():

    util.mkdir(out_dir)

    ## Loop through all the different data sets and reduce them.
    #for key in dict_suffix.keys():
    #for key in ['LS_3wfs_r2', 'LS_5wfs_r2', 'open_r2']:
    for key in ['open_r2']:
        img = dict_images[key]
        suf = dict_suffix[key]
        sky = 'beehive_sky2.fits'

        print('Working on: {1:s}  {0:s}'.format(key, suf))
        print('   Images: ', img)
        print('      Sky: ', sky)

        img_files = [
            data_dir + 'sta{img:03d}{suf:s}.fits'.format(img=ii, suf=suf)
            for ii in img
        ]
        scn_files = [
            data_dir + 'sta{img:03d}{suf:s}_scan.fits'.format(img=ii, suf=suf)
            for ii in img
        ]

        reduce_STA.treat_overscan(img_files)
        #reduce_STA.treat_overscan_working(img_files)  #BUG
        redu.clean_images(scn_files,
                          out_dir,
                          rebin=2,
                          sky_frame=sky_dir + sky,
                          flat_frame=calib_dir + "domeflat.fits")
    return
Example #4
0
def reduce_beehive():

    util.mkdir(out_dir)

    # Loop through all the different data sets and reduce them.
    for key in dict_suffix.keys():
        img = dict_images[key]
        suf = dict_suffix[key]
        sky = dict_skies[key]

        print('Working on: {1:s}  {0:s}'.format(key, suf))
        print('   Images: ', img)
        print('      Sky: ', sky)

        img_files = [
            data_dir + 'sta{img:03d}{suf:s}.fits'.format(img=ii, suf=suf)
            for ii in img
        ]
        scn_files = [
            data_dir + 'sta{img:03d}{suf:s}_scan.fits'.format(img=ii, suf=suf)
            for ii in img
        ]

        reduce_STA.treat_overscan(img_files)
        reduce_fli.clean_images(scn_files,
                                out_dir,
                                rebin=1,
                                sky_frame=sky_dir + sky,
                                flat_frame=flat_dir + "flat.fits")

    return
Example #5
0
def make_flat():
    """
    Makes flat and data mask. 
    Just for single filter I band
    """
    util.mkdir(calib_dir)

    ## Copy flat from a previous night
    #shutil.copyfile(root_dir + '../../20210724/sta/reduce/calib/flat_BRIV.fits', calib_dir + 'flat_BRIV.fits')

    ## Creating flat from range, I band only
    flat_num = np.arange(105, 109 + 1)
    flat_frames = [
        '{0:s}sta{1:03d}_o.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}sta{1:03d}_o_scan.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    reduce_STA.treat_overscan(flat_frames)
    #For darks = use master dark as many times as there are flat frames => reduces noise
    scan_dark_frames = [calib_dir + 'fld2_dark120.fits' for ss in flat_num]
    calib.makeflat(scan_flat_frames,
                   scan_dark_frames,
                   calib_dir + 'domeflat.fits',
                   darks=True)

    calib.make_mask(calib_dir + 'domeflat.fits',
                    calib_dir + 'domemask.fits',
                    mask_min=0.8,
                    mask_max=1.4,
                    left_slice=20,
                    right_slice=20,
                    top_slice=25,
                    bottom_slice=25)
    return
Example #6
0
def reduce_fld2():

    util.mkdir(out_dir)

    ## Loop through all the different data sets
    for key in dict_suffix.keys():
        #for key in ['doczskycl']:

        img = dict_images[key]
        suf = dict_suffix[key]
        sky = dict_skies[key]

        print('Working on: {1:s}  {0:s}'.format(key, suf))
        print('   Images: ', img)
        print('      Sky: ', sky)

        img_files = [
            data_dir + 'sta{img:03d}{suf:s}.fits'.format(img=ii, suf=suf)
            for ii in img
        ]
        scn_files = [
            data_dir + 'sta{img:03d}{suf:s}_scan.fits'.format(img=ii, suf=suf)
            for ii in img
        ]

        reduce_STA.treat_overscan(img_files)
        redu.clean_images(scn_files,
                          out_dir,
                          rebin=1,
                          sky_frame=sky_dir + sky,
                          flat_frame=calib_dir + "flat.fits")  #,
        # fix_bad_pixels=True, worry_about_edges=True)

    return
Example #7
0
def make_dark():

    util.mkdir(sky_dir)

    ## COPY A SKY => use a dark
    # shutil.copyfile(root_dir + '../../20210724/sta/dark/dark_044_scan.fits', sky_dir + 'fld2_sky_tmp.fits')
    
    ## CREATING A SKY
    print("I quad flat (60)")
    dark_num = np.arange(81, 85+1)
    dark_frames = ['{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num]
    scan_dark_frames = ['{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num]
    
    reduce_STA.treat_overscan(dark_frames)
    calib.makedark(scan_dark_frames, calib_dir + 'fld2_dark60_VBRI.fits')
    
    print("BVR quad flat (20)")
    dark_num = np.arange(76,80+1)
    dark_frames = ['{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num]
    scan_dark_frames = ['{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num]
    
    reduce_STA.treat_overscan(dark_frames)
    calib.makedark(scan_dark_frames, calib_dir + 'fld2_dark20_VBRI.fits')
    
    return
Example #8
0
def reduce_fld2():

    util.mkdir(out_dir)

    ## Loop through all the different data sets and reduce them.
    #for key in ['open_RIVB', 'LS_RIVB', 'docz_RIVB']: ## Single key setup
    for key in dict_suffix.keys():
        
        img = dict_images[key]
        suf = dict_suffix[key]
        filt = dict_filt[key]

        print('Working on: {1:s}  {0:s}'.format(key, suf))
        print('   Images: ', img)
        print('   Filter: ', filt)
        
        img_files = [data_dir + 'sta{img:03d}{suf:s}.fits'.format(img=ii, suf=suf) for ii in img]
        scn_files = [data_dir + 'sta{img:03d}{suf:s}_scan.fits'.format(img=ii, suf=suf) for ii in img]
        
        reduce_STA.treat_overscan(img_files)
        redu.clean_images(scn_files, out_dir, rebin=1,
                                    sky_frame=sky_dir + f"fld2_sky_{filt}.fits",
                                    flat_frame=calib_dir + f"flat_{filt}.fits")#,
                                # fix_bad_pixels=True, worry_about_edges=True)

    return
Example #9
0
def make_sky():

    util.mkdir(sky_dir)

    ## COPY A SKY => use a dark
    # shutil.copyfile(root_dir + '../../20210724/sta/dark/dark_044_scan.fits', sky_dir + 'fld2_sky_tmp.fits')

    ## CREATING A SKY

    ## IVBR pos 2
    sky_num = np.arange(41, 47)
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky_IVBR.fits')

    ## VBRI pos 3
    sky_num = np.arange(69, 74 + 1)
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky_VBRI.fits')

    return
Example #10
0
def reduce_FLD2():
    util.mkdir(out_dir)

    # Open Loop
    img_files = [data_dir + 'obj{0:03d}_o.fits'.format(ii) for ii in fnum_o]
    reduce_STA.treat_overscan(img_files)
    scan_img_files = [
        data_dir + 'obj{0:03d}_o_scan.fits'.format(ii) for ii in fnum_o
    ]
    reduce_fli.clean_images(scan_img_files,
                            out_dir,
                            rebin=1,
                            sky_frame=sky_dir + 'FLD2_sky.fits',
                            flat_frame=flat_dir + "flat.fits")

    # Closed - threeWFS_LS
    img_files = [
        data_dir + 'obj{0:03d}threeWFS_LS_c.fits'.format(ii) for ii in fnum_c
    ]
    reduce_STA.treat_overscan(img_files)
    scan_img_files = [
        data_dir + 'obj{0:03d}threeWFS_LS_c_scan.fits'.format(ii)
        for ii in fnum_c
    ]
    reduce_fli.clean_images(scan_img_files,
                            out_dir,
                            rebin=1,
                            sky_frame=sky_dir + 'FLD2_sky.fits',
                            flat_frame=flat_dir + "flat.fits")

    return
Example #11
0
def make_sky():

    util.mkdir(sky_dir)

    sky_num = np.arange(208, 217 + 1)
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky_60.fits')

    sky_num = np.arange(218, 220 + 1)
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky_150.fits')

    return
Example #12
0
def make_flat_filter():
    """
    Makes flat and data mask. 
     - makeflat(fourfilter=True) normalizes each quadrant independently
     - combine_filter_flat(filt_order) takes two 4F flats 
         and gives I-band the logner int quadrant
    For four filter, dome flat was made with two integration times, 
        20(2) for BVR 
        60(45) for I
    *Note, no VBRI filter taken forr this date
    """

    util.mkdir(calib_dir)
    util.mkdir(dark_dir)

    filt_order = "RIVB"  # position 1
    flat_num = np.arange(88, 92 + 1)

    print("Filter: ", filt_order)

    print("Scanning Flat Frames... ")
    flat_frames = [
        '{0:s}sta{1:03d}_o.fits'.format(screen_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}sta{1:03d}_o_scan.fits'.format(screen_dir, ss) for ss in flat_num
    ]
    reduce_STA.treat_overscan(flat_frames)

    print("Scanning Dark Frames... ")
    dark_num = np.arange(94, 102 + 1)
    dark_frames = [
        '{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    scan_dark_frames = [
        '{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    reduce_STA.treat_overscan(dark_frames)

    print("Making Flats... ")
    calib.makeflat(scan_flat_frames,
                   scan_dark_frames[:len(scan_flat_frames)],
                   f'{calib_dir}flat_{filt_order}.fits',
                   darks=True,
                   fourfilter=True)
    print("Making mask... ")
    calib.make_mask(f'{calib_dir}flat_{filt_order}.fits',
                    f'{calib_dir}mask_{filt_order}.fits',
                    mask_min=0.5,
                    mask_max=1.8,
                    left_slice=20,
                    right_slice=20,
                    top_slice=25,
                    bottom_slice=25)

    return
Example #13
0
def make_flat(): 

    util.mkdir(flat_dir)
    
    flat_num = np.arange(0, 10+1)
    flat_frames = ['{0:s}twi_{1:03d}.fits'.format(twi_dir, ss) for ss in flat_num]
    reduce_STA.treat_overscan(flat_frames)
    scan_flat_frames = ['{0:s}twi_{1:03d}_scan.fits'.format(twi_dir, ss) for ss in flat_num]
    calib.makeflat(scan_flat_frames, [], flat_dir + 'flat.fits', darks=False)

    return
Example #14
0
def make_sky():

    util.mkdir(sky_dir)

    sky_num = np.arange(51, 60+1)
    sky_frames = ['{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num]
    reduce_STA.treat_overscan(sky_frames)
    scan_sky_frames = ['{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num]
    calib.makedark(scan_sky_frames, sky_dir+'orion_sky.fits')
    
    return
Example #15
0
def make_flat():
    """
    Makes a flat and mask from flats. 
    Done for two different binnings
    """
    util.mkdir(flat_dir)

    flat_num_bin1 = np.arange(51, 54 + 1)
    flat_num_bin2 = np.arange(55, 62 + 1)
    flat_frames_bin1 = [
        '{0:s}twi{1:03d}.fits'.format(twi_dir, ss) for ss in flat_num_bin1
    ]
    flat_frames_bin2 = [
        '{0:s}twi{1:03d}.fits'.format(twi_dir, ss) for ss in flat_num_bin2
    ]
    reduce_STA.treat_overscan(flat_frames_bin1)
    reduce_STA.treat_overscan(flat_frames_bin2)

    scan_flat_frames_bin1 = [
        '{0:s}twi{1:03d}_scan.fits'.format(twi_dir, ss) for ss in flat_num_bin1
    ]
    scan_flat_frames_bin2 = [
        '{0:s}twi{1:03d}_scan.fits'.format(twi_dir, ss) for ss in flat_num_bin2
    ]

    calib.makeflat(scan_flat_frames_bin1,
                   None,
                   calib_dir + 'flat_bin1.fits',
                   darks=False)
    calib.makeflat(scan_flat_frames_bin2,
                   None,
                   calib_dir + 'flat_bin2.fits',
                   darks=False)

    # This mask tells us where not to search for stars.
    calib.make_mask(calib_dir + 'flat_bin1.fits',
                    calib_dir + 'mask_bin1.fits',
                    mask_min=0.8,
                    mask_max=1.4,
                    left_slice=20,
                    right_slice=20,
                    top_slice=25,
                    bottom_slice=25)
    calib.make_mask(calib_dir + 'flat_bin2.fits',
                    calib_dir + 'mask_bin2.fits',
                    mask_min=0.8,
                    mask_max=1.4,
                    left_slice=10,
                    right_slice=10,
                    top_slice=15,
                    bottom_slice=15)

    return
Example #16
0
def reduce_orion():

    util.mkdir(out_dir)

    # Open Loop
    img_files = [data_dir + 'obj{0:03d}_o.fits'.format(ii) for ii in fnum_o]
    reduce_STA.treat_overscan(img_files)
    scan_img_files = [data_dir + 'obj{0:03d}_o_scan.fits'.format(ii) for ii in fnum_o]
    reduce_fli.clean_images(scan_img_files, out_dir, rebin=1, sky_frame=sky_dir + 'orion_sky.fits', flat_frame=flat_dir+"flat.fits")

    # Closed Loop - 4W
    img_files = [data_dir + 'obj{0:03d}LS4WFS_c.fits'.format(ii) for ii in fnum_c_4W]
    reduce_STA.treat_overscan(img_files)
    scan_img_files = [data_dir + 'obj{0:03d}LS4WFS_c_scan.fits'.format(ii) for ii in fnum_c_4W]
    reduce_fli.clean_images(scan_img_files, out_dir, rebin=1, sky_frame=sky_dir + 'orion_sky.fits', flat_frame =flat_dir+"flat.fits")

    # Closed Loop - B2

    img_files = [data_dir + 'obj{0:03d}LS4WFS_B2_c.fits'.format(ii) for ii in fnum_c_B2]
    reduce_STA.treat_overscan(img_files)
    scan_img_files = [data_dir + 'obj{0:03d}LS4WFS_B2_c_scan.fits'.format(ii) for ii in fnum_c_B2]
    reduce_fli.clean_images(scan_img_files, out_dir, rebin=1, sky_frame=sky_dir + 'orion_sky.fits', flat_frame =flat_dir+"flat.fits")
    
    # Closed Loop - zc
    img_files = [data_dir + 'obj{0:03d}LS4WFS_zc21_c.fits'.format(ii) for ii in fnum_c_zc]
    reduce_STA.treat_overscan(img_files)
    scan_img_files = [data_dir + 'obj{0:03d}LS4WFS_zc21_c_scan.fits'.format(ii) for ii in fnum_c_zc]
    reduce_fli.clean_images(scan_img_files, out_dir, rebin=1, sky_frame=sky_dir + 'orion_sky.fits', flat_frame =flat_dir+"flat.fits")

    return
Example #17
0
def make_sky():

    util.mkdir(sky_dir)

    sky_num = np.arange(38, 44 + 1)  #sky set 1 middle of the night
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky.fits')

    return
Example #18
0
def make_flat():

    util.mkdir(flat_dir)

    flat_num = np.arange(171, 182 + 1)
    flat_frames = [
        '{0:s}twi_{1:03d}.fits'.format(twi_dir, ss) for ss in flat_num
    ]
    reduce_STA.treat_overscan(flat_frames)
    scan_flat_frames = [
        '{0:s}twi_{1:03d}_scan.fits'.format(twi_dir, ss) for ss in flat_num
    ]
    calib.makedark(scan_flat_frames, flat_dir + 'flat.fits')

    return
Example #19
0
def make_sky():

    util.mkdir(sky_dir)

    #sky_num = np.arange(173, 179+1) #sky set 1 middle of the night
    sky_num = np.arange(217, 223+1) #sky set 2 end of the night
    sky_frames = ['{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num]
    reduce_STA.treat_overscan(sky_frames)
    scan_sky_frames =  ['{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky2.fits')
    
    # ALl skies
    sky_num = np.append(np.arange(173, 179+1), np.arange(217, 223+1)) # fill skyset
    scan_sky_frames =  ['{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky.fits')
    
    return
Example #20
0
def make_sky():

    util.mkdir(sky_dir)

    #sky_num = np.arange(97, 103+1) #sky set 1
    sky_num = np.arange(141, 146 + 1)  #sky set 2
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)

    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky2.fits')

    return
Example #21
0
def make_flat_filter():
    """
    Makes flat and data mask. 
    For four filter, dome flat was made with two integration times, 20(2) for BVR 60(45) for I
    """
    util.mkdir(calib_dir)

    ## I quad flat (60)
    dark_num = np.arange(108, 113 + 1)
    flat_num = np.arange(130, 135 + 1)
    dark_frames = [
        '{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    scan_dark_frames = [
        '{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    flat_frames = [
        '{0:s}dome_{1:03d}.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}dome_{1:03d}_scan.fits'.format(dome_dir, ss) for ss in flat_num
    ]

    reduce_STA.treat_overscan(dark_frames)
    reduce_STA.treat_overscan(flat_frames)
    #calib.makeflat(scan_flat_frames, scan_dark_frames, calib_dir + 'domeflat_60.fits', darks=True, fourfilter=True)

    ## BVR quad flat (20)
    dark_num = np.arange(118, 123 + 1)
    flat_num = np.arange(124, 129 + 1)
    dark_frames = [
        '{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    scan_dark_frames = [
        '{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    flat_frames = [
        '{0:s}dome_{1:03d}.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}dome_{1:03d}_scan.fits'.format(dome_dir, ss) for ss in flat_num
    ]

    reduce_STA.treat_overscan(dark_frames)
    reduce_STA.treat_overscan(flat_frames)
    #calib.makeflat(scan_flat_frames, scan_dark_frames, calib_dir + 'domeflat_20.fits', darks=True, fourfilter=True)

    # Combining two flats based on filter orientation

    ## Make a mask to use when calling find_stars.
    #calib.make_mask(calib_dir + 'domeflat_60.fits', calib_dir + 'mask_60.fits',
    #                   mask_min=0.5, mask_max=1.8,
    #                   left_slice=20, right_slice=20, top_slice=25, bottom_slice=25)

    return
Example #22
0
def make_sky():

    util.mkdir(sky_dir)

    #sky_num = np.arange(39, 45+1) #sky set 1 middle of the night
    #sky_num = np.arange(77, 83+1) #sky set 2 end of the night
    sky_num = [39, 40, 41, 42, 43, 44, 45, 77, 78, 79, 80, 81, 82, 83]
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)

    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    calib.makedark(scan_sky_frames, sky_dir + 'beehive_sky.fits')

    return
Example #23
0
def make_flat():
    """
    Makes flat and data mask. 
    Just for single filter I band
    CHANGES: took domeflats this night
    """
    util.mkdir(calib_dir)

    # Flats: at 200 seconds
    flat_num = np.arange(1, 5 + 1)
    flat_frames = [
        '{0:s}sta{1:03d}_o.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}sta{1:03d}_o_scan.fits'.format(dome_dir, ss) for ss in flat_num
    ]
    reduce_STA.treat_overscan(flat_frames)

    # Darks: at 210 seconds
    dark_num = np.arange(6, 10 + 1)
    dark_frames = [
        '{0:s}sta{1:03d}_o.fits'.format(dome_dir, ss) for ss in dark_num
    ]
    scan_dark_frames = [
        '{0:s}sta{1:03d}_o_scan.fits'.format(dome_dir, ss) for ss in dark_num
    ]
    reduce_STA.treat_overscan(dark_frames)

    # Make flat
    calib.makeflat(scan_flat_frames,
                   scan_dark_frames,
                   calib_dir + 'domeflat.fits',
                   darks=True)

    # Mask for masking find_stars areas
    calib.make_mask(calib_dir + 'domeflat.fits',
                    calib_dir + 'domemask.fits',
                    mask_min=0.8,
                    mask_max=1.4,
                    left_slice=20,
                    right_slice=20,
                    top_slice=25,
                    bottom_slice=25)
Example #24
0
def make_sky():

    util.mkdir(sky_dir)

    ## COPY A SKY => use a dark
    # shutil.copyfile(root_dir + '../../20210724/sta/dark/dark_044_scan.fits', sky_dir + 'fld2_sky_tmp.fits')

    ## CREATING A SKY
    sky_num = [161, 162, 163, 166, 167]
    sky_frames = [
        '{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num
    ]
    scan_sky_frames = [
        '{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num
    ]
    reduce_STA.treat_overscan(sky_frames)
    calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky.fits')

    return
Example #25
0
def make_dark():

    util.mkdir(calib_dir)

    ## COPY A SKY => use a dark
    # shutil.copyfile(root_dir + '../../20210724/sta/dark/dark_044_scan.fits', sky_dir + 'fld2_sky_tmp.fits')

    ## CREATING A DARK
    print("I dark (120)")
    dark_num = np.arange(110, 114 + 1)
    dark_frames = [
        '{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num
    ]
    scan_dark_frames = [
        '{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num
    ]

    reduce_STA.treat_overscan(dark_frames)
    calib.makedark(scan_dark_frames, calib_dir + 'fld2_dark120.fits')

    return
Example #26
0
def make_flat_filter(): 
    """
    Makes flat and data mask. 
    For four filter, dome flat was made with two integration times, 20(2) for BVR 60(45) for I
    """
    util.mkdir(calib_dir)
    
    ## Darks are the same all night
    
    #filt_order = "IVBR"
    #flat_num_60 = np.arange(13, 18+1)
    #flat_num_20 = np.arange(19, 24+1)
    
    
    filt_order = "BRIV"
    flat_num_60 = np.arange(73, 78+1)
    flat_num_20 = np.arange(79, 84+1)
    
    print(filt_order)
    
    ## I quad flat (60)
    dark_num = np.arange(29, 34+1)
    dark_frames = ['{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num]
    scan_dark_frames = ['{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num]
    flat_frames = ['{0:s}dome_{1:03d}.fits'.format(dome_dir, ss) for ss in flat_num_60]
    scan_flat_frames = ['{0:s}dome_{1:03d}_scan.fits'.format(dome_dir, ss) for ss in flat_num_60]
    
    reduce_STA.treat_overscan(dark_frames)
    reduce_STA.treat_overscan(flat_frames)
    calib.makeflat(scan_flat_frames, scan_dark_frames, 
                   f'{calib_dir}domeflat_60_{filt_order}.fits', darks=True, fourfilter=True)
    
    ## BVR quad flat (20)
    dark_num = np.arange(39, 44+1)
    dark_frames = ['{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num]
    scan_dark_frames = ['{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num]
    flat_frames = ['{0:s}dome_{1:03d}.fits'.format(dome_dir, ss) for ss in flat_num_20]
    scan_flat_frames = ['{0:s}dome_{1:03d}_scan.fits'.format(dome_dir, ss) for ss in flat_num_20]
    
    reduce_STA.treat_overscan(dark_frames)
    reduce_STA.treat_overscan(flat_frames)
    calib.makeflat(scan_flat_frames, scan_dark_frames, 
                   f'{calib_dir}domeflat_20_{filt_order}.fits', darks=True, fourfilter=True)
    
    # Combining two flats based on filter orientation
    calib.combine_filter_flat(f'{calib_dir}domeflat_60_{filt_order}.fits',
                              f'{calib_dir}domeflat_20_{filt_order}.fits', 
                              f'{calib_dir}flat_{filt_order}.fits', filt_order)
    
    return
Example #27
0
def make_flat_4F(): 
    """
    Makes flat and data mask. 
    For four filter, dome flat was made with two integration times, 20(2) for BVR 60(45) for I
    """
    util.mkdir(calib_dir)
    
    ## Darks are the same all night
    filt_order = "VBRI"
    flat_num_60 = np.arange(63, 67+1)
    flat_num_20 = np.array([73, 74, 75, 73, 74])
    
    print(filt_order)
    
    print("I quad flat (60)")
    dark_num = np.arange(81, 85+1)
    dark_frames = ['{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num]
    scan_dark_frames = ['{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num]
    flat_frames = ['{0:s}sta{1:03d}_o.fits'.format(dome_dir, ss) for ss in flat_num_60]
    scan_flat_frames = ['{0:s}sta{1:03d}_o_scan.fits'.format(dome_dir, ss) for ss in flat_num_60]
    
    reduce_STA.treat_overscan(dark_frames)
    reduce_STA.treat_overscan(flat_frames)
    calib.makeflat(scan_flat_frames, scan_dark_frames, 
                   f'{calib_dir}domeflat_60_{filt_order}.fits', darks=True, fourfilter=True)
    
    print("BVR quad flat (20)")
    dark_num = np.arange(76,80+1)
    dark_frames = ['{0:s}dark_{1:03d}.fits'.format(dark_dir, ss) for ss in dark_num]
    scan_dark_frames = ['{0:s}dark_{1:03d}_scan.fits'.format(dark_dir, ss) for ss in dark_num]
    flat_frames = ['{0:s}sta{1:03d}_o.fits'.format(dome_dir, ss) for ss in flat_num_20]
    scan_flat_frames = ['{0:s}sta{1:03d}_o_scan.fits'.format(dome_dir, ss) for ss in flat_num_20]
    
    reduce_STA.treat_overscan(dark_frames)
    reduce_STA.treat_overscan(flat_frames)
    calib.makeflat(scan_flat_frames, scan_dark_frames, 
                   f'{calib_dir}domeflat_20_{filt_order}.fits', darks=True, fourfilter=True)
    
    # Combining two flats based on filter orientation
    print("Combining: I quad flat (60) & BVR quad flat (20)")
    calib.combine_filter_flat(f'{calib_dir}domeflat_60_{filt_order}.fits',
                              f'{calib_dir}domeflat_20_{filt_order}.fits', 
                              f'{calib_dir}flat_{filt_order}.fits', filt_order, flip_180=True)
    
    calib.make_mask(f'{calib_dir}flat_{filt_order}.fits', f'{calib_dir}mask_{filt_order}.fits',
                       mask_min=0.8, mask_max=1.4,
                       left_slice=20, right_slice=20, top_slice=25, bottom_slice=25)
    
    return
Example #28
0
def make_flat(): 

    util.mkdir(flat_dir)

    # We don't have one for this run, so I just symbolically linked from an really
    # really old run.
    # In sta/reduce/calib/
    # ln -s /g/lu/data/imaka/onaga/20181223/sta/reduce/calib/flat.fits
    
    # 2021 update: will link to flats in 20200122 (the following night)
    flat_num = np.arange(221, 230+1)
    flat_frames = ['{0:s}twi_{1:03d}.fits'.format(twi_alt_dir, ss) for ss in flat_num]
    reduce_STA.treat_overscan(flat_frames)
    scan_flat_frames = ['{0:s}twi_{1:03d}_scan.fits'.format(twi_alt_dir, ss) for ss in flat_num]
    calib.makeflat(scan_flat_frames, [], calib_dir + 'flat.fits', darks=False)
    
    # Mask for masking find_stars areas
    calib.make_mask(calib_dir + 'flat.fits', calib_dir + 'mask.fits',
                       mask_min=0.8, mask_max=1.4,
                       left_slice=20, right_slice=20, top_slice=25, bottom_slice=25)

    return
Example #29
0
def make_flat():
    """
    Makes flat and data mask. 
    Just for single filter I band
    """
    util.mkdir(calib_dir)

    ## Copy flat taken the a previous night
    # shutil.copyfile(root_dir + '../../20210828/sta/reduce/calib/flat_1p_VBRI.fits', calib_dir + 'flat_VBRI.fits')

    ## Creating flat from range, I band only
    flat_num = np.arange(1, 5 + 1)
    flat_frames = [
        '{0:s}sta{1:03d}_o.fits'.format(screen_dir, ss) for ss in flat_num
    ]
    scan_flat_frames = [
        '{0:s}sta{1:03d}_o_scan.fits'.format(screen_dir, ss) for ss in flat_num
    ]
    reduce_STA.treat_overscan(flat_frames)
    calib.makeflat(scan_flat_frames,
                   None,
                   calib_dir + 'flat_I.fits',
                   darks=False)

    ## Make a mask to use when calling find_stars.
    calib.make_mask(calib_dir + 'flat_I.fits',
                    calib_dir + 'mask_I.fits',
                    mask_min=0.5,
                    mask_max=1.8,
                    left_slice=20,
                    right_slice=20,
                    top_slice=25,
                    bottom_slice=25)

    #calib.make_mask(calib_dir + 'flat_VBRI.fits', calib_dir + 'mask_VBRI.fits',
    #                   mask_min=0.5, mask_max=1.8,
    #                   left_slice=20, right_slice=20, top_slice=25, bottom_slice=25)

    return
Example #30
0
def make_sky():

    util.mkdir(sky_dir)

    ## COPY A SKY => use a dark
    # shutil.copyfile(root_dir + '../../20210724/sta/dark/dark_044_scan.fits', sky_dir + 'fld2_sky_tmp.fits')
    
    ## CREATING A SKY
    ## BRIV pos 4
    sky_num = np.arange(34, 40+1)
    sky_frames = ['{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num]
    scan_sky_frames =  ['{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num]
    reduce_STA.treat_overscan(sky_frames)
    calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky_BRIV.fits')
    
    ## RIVB pos 1
    #sky_num = np.arange(68, 74+1)
    #sky_frames = ['{0:s}sky_{1:03d}_o.fits'.format(data_dir, ss) for ss in sky_num]
    #scan_sky_frames =  ['{0:s}sky_{1:03d}_o_scan.fits'.format(data_dir, ss) for ss in sky_num]
    #reduce_STA.treat_overscan(sky_frames)
    #calib.makedark(scan_sky_frames, sky_dir + 'fld2_sky_RIVB.fits')
    
    return