############################################################################### from spam import * ############################################################################### def make_mosaic(): # copy all .RES.FITS files into the 'fits' subdirectory mosaic_center = hmsdms_to_degdeg( [ 10,0,0, 15,0,0 ] ) mosaic_size = [ 5, 5 ] # initial mosaic size in degrees before cropping mosaic_name = 'MY-MOSAIC' restoring_beam = [ 10.,10.,0. ] # BMAJ, BMIN, BPA; can be smaller than largest BMAJ beam_radius = 0.8 # primary beam radius to include per pointing in degrees res_fits_search_string = os.getenv( 'PWD' ) + '/fits/*.RES.FITS' # create pointing file pointing_cat = [ [ 'POINTING', 'RA', 'DEC' ] ] dt = datetime.datetime.now() dt_string = '%4d%02d%02d_%02d%02d%02d' % ( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second ) fits_file_names = glob.glob( res_fits_search_string ) fits_file_names.sort() for fits_file_name in fits_file_names: pointing_name = fits_file_name.split( '/' )[ -1 ] index = pointing_name.index( '.RES.FITS' ) pointing_name = pointing_name[ : index ].replace( '_', '.' ) + '.' + dt_string link_file_name = '%s/fits/%s.RES.FITS' % ( os.getenv( 'PWD' ), pointing_name ) link_file( fits_file_name, link_file_name ) header = read_fits_header( fits_file_name ) ra = None dec = None for line in header: words = line.split() if ( words[ 0 ] == 'OBSRA' ): ra = float( words[ 2 ] ) if ( words[ 0 ] == 'OBSDEC' ): dec = float( words[ 2 ] ) if ( ( ra == None ) or ( dec == None ) ): raise error( 'could not find OBSRA/OBSDEC in FITS header of %s' % ( pointing_file_name ) ) pointing_cat.append( [ pointing_name, ra, dec ] ) pointing_file_name = os.getenv( 'PWD' ) + '/fits/pointings.rdb' write_starbase_catalog( pointing_cat, pointing_file_name ) # create mosaic mosaic = create_mosaic( mosaic_name, mosaic_center, mosaic_size, pointing_fits_path = os.getenv( 'PWD' ) + '/fits', pointing_file_name = os.getenv( 'PWD' ) + '/fits/pointings.rdb', get_pointings = False, restoring_beam = restoring_beam, make_beam_plot = False, beam_radius = beam_radius, max_image_size = 16000, convolve_background = True, pixels_per_beam = 4., allow_missing_pointings = True, do_galactic = False ) # crop/remove blank edges fits_path = os.getenv( 'FIT' ) mosaic_file_name = '%s/%s.MOSAIC.FITS' % ( fits_path, mosaic_name ) cropped_image = crop_image( mosaic ) mosaic.zap() write_fits_image( cropped_image, mosaic_file_name ) cropped_image.zap() # clean up for [ pointing_name, ra, dec ] in pointing_cat[ 1 : ]: link_file_name = '%s/%s.RES.FITS' % ( fits_path, pointing_name ) unlink_file( link_file_name ) remove_file( pointing_file_name ) return ###############################################################################