def load_ds9_core_region(cores, filename='', header=None): from myimage_analysis import get_pix_coords # region[0] in following format: # [64.26975, 29.342033333333333, 1.6262027777777777, 3.32575, 130.0] # [ra center, dec center, width, height, rotation angle] regions = read_ds9_region(filename) for region in regions: # Cores defined in following format: 'tag={L1495A}' tag = region.comment core = tag[tag.find('{')+1:tag.find('}')] if core in cores: # Format vertices to be 2 x N array poly_verts = [] for i in xrange(0, len(region.coord_list)/2): poly_verts.append((region.coord_list[2*i], region.coord_list[2*i+1])) poly_verts_pix = [] for i in xrange(0, len(poly_verts)): poly_verts_pix.append(get_pix_coords(ra=poly_verts[i][0], dec=poly_verts[i][1], header=header)[:-1][::-1].tolist()) cores[core]['poly_verts'] = {} cores[core]['poly_verts']['wcs'] = poly_verts cores[core]['poly_verts']['pixel'] = poly_verts_pix return cores
def add_core_properties(results): from myimage_analysis import load_ds9_region, get_pix_coords import json box_method = 'ds9' core_dir = '/d/bip3/ezbc/multicloud/data/python_output/core_properties/' region_dir = '/d/bip3/ezbc/multicloud/data/python_output/core_properties/' for cloud_name in results: cloud_dict = results[cloud_name] # define core properties with open(core_dir + cloud_name + '_core_properties.txt', 'r') as f: cores = json.load(f) header = cloud_dict['data']['av_header'] #cores = convert_core_coordinates(cores, header) # convert center WCS coordinate to pixel for core in cores: cores[core].update({'box_pixel': 0}) cores[core].update({'center_pixel': 0}) center_wcs = cores[core]['center_wcs'] # convert centers to pixel coords center_pixel = get_pix_coords(ra=center_wcs[0], dec=center_wcs[1], header=header)[:2] cores[core]['center_pixel'] = center_pixel.tolist() # load the bounding regions cores = load_ds9_core_region(cores, filename=region_dir + \ cloud_name + '_av_poly_cores.reg', header=header) # Trim down cores to keep list to include only cores for cloud cores_to_keep_old =\ list(cloud_dict['plot_kwargs']['cores_to_plot'][cloud_name]) for core in cores_to_keep_old: if core not in cores: clist = cloud_dict['plot_kwargs']['cores_to_plot'][cloud_name] clist.remove(core) cloud_dict['cores'] = cores