def plot_nhi_maps(results_dict, limits=None, cube_data=None, header=None, load_synthetic_cube=False, show=False, velocity_range=[0, 500], save_pdf=False): from mycoords import make_velocity_axis from localmodule import plot_nhi_maps, create_synthetic_cube import myimage_analysis as myia from astropy.io import fits # Plot names #DIR_FIG = '../../figures/' DIR_FIG = '/d/bip3/ezbc/multicloud/figures/decomposition/' FILENAME_FIG_BASE = DIR_FIG + 'nhi_map_data_synth' # Load HI Cube DIR_HI = '../../data_products/hi/' DIR_HI = '/d/bip3/ezbc/multicloud/data_products/hi/' #FILENAME_CUBE = 'gass_280_-45_1450212515.fits' FILENAME_CUBE = 'perseus_hi_galfa_cube_sub_regrid.fits' FILENAME_CUBE_SYNTH = DIR_HI + 'cube_synth.npy' velocity_axis = make_velocity_axis(header) # Create N(HI) data nhi_data = myia.calculate_nhi(cube=cube_data, velocity_axis=velocity_axis, velocity_range=velocity_range, ) # Create synthetic cube from fitted spectra velocity_axis = results_dict['velocity_axis'] if not load_synthetic_cube: print('\nCreating synthetic cube...') cube_synthetic = create_synthetic_cube(results_dict, cube_data) np.save(FILENAME_CUBE_SYNTH, cube_synthetic) else: print('\nLoading synthetic cube...') cube_synthetic = np.load(FILENAME_CUBE_SYNTH) # Create N(HI) synthetic nhi_synthetic = myia.calculate_nhi(cube=cube_synthetic, velocity_axis=velocity_axis, velocity_range=velocity_range, ) v_limits = [0, np.max(nhi_data)] v_limits = [-1, 41] if 0: import matplotlib.pyplot as plt plt.close(); plt.clf() fig, axes = plt.subplots(2,1) axes[0].imshow(nhi_data, origin='lower') axes[1].imshow(nhi_synthetic, origin='lower') plt.show() if save_pdf: ext = '.pdf' else: ext = '.png' filename_fig = FILENAME_FIG_BASE + ext print('\nPlotting N(HI) maps...') print(filename_fig) # Plot the maps together plot_nhi_maps(nhi_data, nhi_synthetic, header=header, #limits=[278, -37, 282, -35], limits=limits, filename=filename_fig, nhi_1_vlimits=v_limits, nhi_2_vlimits=v_limits, show=show, vscale='linear', )
def plot_nhi_maps(results_dict, limits=None, cube_data=None, header=None, load_synthetic_cube=False, show=False, velocity_range=[0, 500], save_pdf=False): from mycoords import make_velocity_axis from localmodule import plot_nhi_maps, create_synthetic_cube import myimage_analysis as myia from astropy.io import fits # Plot names #DIR_FIG = '../../figures/' DIR_FIG = '/d/bip3/ezbc/multicloud/figures/decomposition/' FILENAME_FIG_BASE = DIR_FIG + 'nhi_map_data_synth' # Load HI Cube DIR_HI = '../../data_products/hi/' DIR_HI = '/d/bip3/ezbc/multicloud/data_products/hi/' #FILENAME_CUBE = 'gass_280_-45_1450212515.fits' FILENAME_CUBE = 'perseus_hi_galfa_cube_sub_regrid.fits' FILENAME_CUBE_SYNTH = DIR_HI + 'cube_synth.npy' velocity_axis = make_velocity_axis(header) # Create N(HI) data nhi_data = myia.calculate_nhi( cube=cube_data, velocity_axis=velocity_axis, velocity_range=velocity_range, ) # Create synthetic cube from fitted spectra velocity_axis = results_dict['velocity_axis'] if not load_synthetic_cube: print('\nCreating synthetic cube...') cube_synthetic = create_synthetic_cube(results_dict, cube_data) np.save(FILENAME_CUBE_SYNTH, cube_synthetic) else: print('\nLoading synthetic cube...') cube_synthetic = np.load(FILENAME_CUBE_SYNTH) # Create N(HI) synthetic nhi_synthetic = myia.calculate_nhi( cube=cube_synthetic, velocity_axis=velocity_axis, velocity_range=velocity_range, ) v_limits = [0, np.max(nhi_data)] v_limits = [-1, 41] if 0: import matplotlib.pyplot as plt plt.close() plt.clf() fig, axes = plt.subplots(2, 1) axes[0].imshow(nhi_data, origin='lower') axes[1].imshow(nhi_synthetic, origin='lower') plt.show() if save_pdf: ext = '.pdf' else: ext = '.png' filename_fig = FILENAME_FIG_BASE + ext print('\nPlotting N(HI) maps...') print(filename_fig) # Plot the maps together plot_nhi_maps( nhi_data, nhi_synthetic, header=header, #limits=[278, -37, 282, -35], limits=limits, filename=filename_fig, nhi_1_vlimits=v_limits, nhi_2_vlimits=v_limits, show=show, vscale='linear', )
def plot_cluster_vel_panels(results_ref=None, colors=None, limits=None, cube=None, header=None, load_synthetic_cube=False, show=False, velocity_range=[0,500], save_pdf=False): from mycoords import make_velocity_axis from localmodule import plot_vel_map_panels, create_synthetic_cube import myimage_analysis as myia from astropy.io import fits # Plot names #DIR_FIG = '../../figures/' DIR_FIG = '/d/bip3/ezbc/multicloud/figures/decomposition/' FILENAME_FIG = DIR_FIG + 'vel_maps_components.png' if save_pdf: FILENAME_FIG = FILENAME_FIG.replace('.png','.pdf') # Load HI Cube DIR_HI = '../../data_products/hi/' DIR_HI = '/d/bip3/ezbc/multicloud/data_products/hi/' #FILENAME_CUBE = 'gass_280_-45_1450212515.fits' FILENAME_CUBE = 'perseus_hi_galfa_cube_sub_regrid.fits' FILENAME_CUBE_SYNTH_BASE = DIR_HI + 'cube_synth_comp' # Create synthetic cube from fitted spectra velocity_axis = results_ref['velocity_axis'] # get number of unique components component_colors = np.unique(colors) n_components = len(component_colors) vel_list = [] nhi_list = [] vel_max = 0.0 for i in xrange(n_components): if not load_synthetic_cube: print('\n\tCreating synthetic cube ' + str(i+1) + ' of ' + \ str(n_components)) # get the relevant parameters indices = np.where(colors == component_colors[i])[0] pix_positions = results_ref['pos_pix'][indices] fit_params_list = results_ref['data'][indices, 2:] print('\n\t\tNumber of components in cube: ' + \ '{0:.0f}'.format(len(fit_params_list))) cube_synthetic = \ create_synthetic_cube(pix_positions=pix_positions, velocity_axis=velocity_axis, fit_params_list=fit_params_list, cube_data=cube, ) np.save(FILENAME_CUBE_SYNTH_BASE + str(i) + '.npy', cube_synthetic) else: print('\n\tLoading synthetic cube ' + str(i+1) + ' of ' + \ str(n_components)) cube_synthetic = np.load(FILENAME_CUBE_SYNTH_BASE + str(i) + '.npy') # Create N(HI) synthetic vel_synthetic = myia.calculate_moment(cube_synthetic, moment=1, weights=velocity_axis, ) nhi_synthetic = myia.calculate_nhi(cube=cube_synthetic, velocity_axis=velocity_axis, velocity_range=velocity_range, ) vel_list.append(vel_synthetic) nhi_list.append(nhi_synthetic) vel_max_temp = np.max(vel_synthetic) if vel_max_temp > vel_max: vel_max = vel_max_temp # crop to highest valued cubes n_left = 4 sum_list = [] n_left = len(nhi_list) for nhi in nhi_list: sum_list.append(np.nansum(nhi)) sort_indices = np.argsort(sum_list)[::-1] new_list = [] for i in xrange(n_left): new_list.append(vel_list[sort_indices[i]]) vel_list = new_list # value limits v_limits = [0, vel_max] # Plot the maps together plot_vel_map_panels(vel_list, header=header, #limits=[278, -37, 282, -35], limits=limits, filename=FILENAME_FIG, #vel_vlimits=, show=show, vscale='linear', )
def plot_cluster_vel_panels(results_ref=None, colors=None, limits=None, cube=None, header=None, load_synthetic_cube=False, show=False, velocity_range=[0, 500], save_pdf=False): from mycoords import make_velocity_axis from localmodule import plot_vel_map_panels, create_synthetic_cube import myimage_analysis as myia from astropy.io import fits # Plot names #DIR_FIG = '../../figures/' DIR_FIG = '/d/bip3/ezbc/multicloud/figures/decomposition/' FILENAME_FIG = DIR_FIG + 'vel_maps_components.png' if save_pdf: FILENAME_FIG = FILENAME_FIG.replace('.png', '.pdf') # Load HI Cube DIR_HI = '../../data_products/hi/' DIR_HI = '/d/bip3/ezbc/multicloud/data_products/hi/' #FILENAME_CUBE = 'gass_280_-45_1450212515.fits' FILENAME_CUBE = 'perseus_hi_galfa_cube_sub_regrid.fits' FILENAME_CUBE_SYNTH_BASE = DIR_HI + 'cube_synth_comp' # Create synthetic cube from fitted spectra velocity_axis = results_ref['velocity_axis'] # get number of unique components component_colors = np.unique(colors) n_components = len(component_colors) vel_list = [] nhi_list = [] vel_max = 0.0 for i in xrange(n_components): if not load_synthetic_cube: print('\n\tCreating synthetic cube ' + str(i+1) + ' of ' + \ str(n_components)) # get the relevant parameters indices = np.where(colors == component_colors[i])[0] pix_positions = results_ref['pos_pix'][indices] fit_params_list = results_ref['data'][indices, 2:] print('\n\t\tNumber of components in cube: ' + \ '{0:.0f}'.format(len(fit_params_list))) cube_synthetic = \ create_synthetic_cube(pix_positions=pix_positions, velocity_axis=velocity_axis, fit_params_list=fit_params_list, cube_data=cube, ) np.save(FILENAME_CUBE_SYNTH_BASE + str(i) + '.npy', cube_synthetic) else: print('\n\tLoading synthetic cube ' + str(i+1) + ' of ' + \ str(n_components)) cube_synthetic = np.load(FILENAME_CUBE_SYNTH_BASE + str(i) + '.npy') # Create N(HI) synthetic vel_synthetic = myia.calculate_moment( cube_synthetic, moment=1, weights=velocity_axis, ) nhi_synthetic = myia.calculate_nhi( cube=cube_synthetic, velocity_axis=velocity_axis, velocity_range=velocity_range, ) vel_list.append(vel_synthetic) nhi_list.append(nhi_synthetic) vel_max_temp = np.max(vel_synthetic) if vel_max_temp > vel_max: vel_max = vel_max_temp # crop to highest valued cubes n_left = 4 sum_list = [] n_left = len(nhi_list) for nhi in nhi_list: sum_list.append(np.nansum(nhi)) sort_indices = np.argsort(sum_list)[::-1] new_list = [] for i in xrange(n_left): new_list.append(vel_list[sort_indices[i]]) vel_list = new_list # value limits v_limits = [0, vel_max] # Plot the maps together plot_vel_map_panels( vel_list, header=header, #limits=[278, -37, 282, -35], limits=limits, filename=FILENAME_FIG, #vel_vlimits=, show=show, vscale='linear', )