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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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