def displace_galaxy(galaxy, rotation_mat, translation_vector, radial_velocity, transverse_velocity): widgets = [ 'Adjusting relative velocities and orientations: ', pbwg.AnimatedMarker(), pbwg.EndMsg() ] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: displaced_galaxy = Particles(len(galaxy)) displaced_galaxy.mass = galaxy.mass displaced_galaxy.position = galaxy.position displaced_galaxy.velocity = galaxy.velocity for body in displaced_galaxy: body.position = ([ body.x.value_in(units.kpc), body.y.value_in(units.kpc), body.z.value_in(units.kpc) ] @ rotation_mat) | units.kpc body.velocity = ([ body.vx.value_in(units.kms), body.vy.value_in(units.kms), body.vz.value_in(units.kms) ] @ rotation_mat) | units.kms displaced_galaxy.position += translation_vector displaced_galaxy.velocity += radial_velocity displaced_galaxy.velocity += transverse_velocity return displaced_galaxy
def load_galaxy_data(glxy_name, test=False, loaded='last'): if test == True: parent = __TEST_MODEL_DIR__ tf = '_test_' elif test == False: parent = __FULL_MODEL_DIR__ tf = '_full_' dirnames_list = [] mw_dirnames_list = [] m31_dirnames_list = [] for (dirpath, dirnames, filenames) in os.walk(parent): dirnames_list.extend(dirnames) break for dirname in dirnames_list: if dirname[0:2] == 'mw': mw_dirnames_list.append(dirname) elif dirname[0:3] == 'm31': m31_dirnames_list.append(dirname) if glxy_name == 'mw': current_dirlist = mw_dirnames_list elif glxy_name == 'm31_not_displaced': current_dirlist = m31_dirnames_list if loaded == 'last': try: glxy_dir = sorted(current_dirlist)[-1] except: try: glxy_dir = sorted(current_dirlist)[0] except: glxy_dir = '' else: for dirname in current_dirlist: if loaded == dirname: glxy_dir = dirname break glxy_data_name = glxy_dir glxy_data_dir = parent + glxy_dir + '/' glxy_data_path = glxy_data_dir + glxy_data_name if os.path.exists(glxy_data_path): widgets = [ 'Found galaxy data in {}, loading: '.format(glxy_data_dir), pbwg.AnimatedMarker(), pbwg.EndMsg() ] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: glxy = read_set_from_file(glxy_data_path, "hdf5") else: raise ValueError('No galaxy model found') return glxy, glxy_data_dir
def make_galaxy(n_halo, converter, glxy_name, test=False, **kwargs): widgets = [ 'Building {} galaxy: '.format(glxy_name), pbwg.AnimatedMarker(), ' ', pbwg.Timer(), pbwg.EndMsg() ] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: galaxy = new_galactics_model(n_halo, converter, **kwargs) out_path, current_model, tf = create_output_dir(glxy_name, test=test) galaxy_data_path = out_path + current_model widgets = [ 'Saving {} galaxy data in {}: '.format(glxy_name, out_path), pbwg.AnimatedMarker(), pbwg.EndMsg() ] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: write_set_to_file(galaxy, galaxy_data_path, 'hdf5') return galaxy, out_path
#disk_scale_length = glxy_param['disk_scale_length'], #disk_outer_radius = glxy_param['disk_outer_radius'], #disk_scale_height_sech2 = glxy_param['disk_scale_height_sech2'], #disk_central_radial_velocity_dispersion=m31_param['disk_central_radial_velocity_dispersion'], #bulge paramaters #bulge_scale_radius = glxy_param['bulge_scale_radius'], bulge_number_of_particles=m31_parameters['bulge_number_of_particles']) else: #mw, _ = gal.load_galaxy_data('mw', test=TEST) #m31_not_displaced, _ = gal.load_galaxy_data('m31_not_displaced', test=TEST) mw_data_dir = 'used_models/mw_test_2020-11-10-0001/' m31_data_dir = 'used_models/m31_not_displaced_test_2020-11-10-0001/' widgets = [ 'Found galaxy data in {}, loading: '.format(mw_data_dir), pbwg.AnimatedMarker(), pbwg.EndMsg() ] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: mw = read_set_from_file(mw_data_dir + 'mw_test_2020-11-10-0001', "hdf5") widgets = [ 'Found galaxy data in {}, loading: '.format(m31_data_dir), pbwg.AnimatedMarker(), pbwg.EndMsg() ] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: m31_not_displaced = read_set_from_file( m31_data_dir + 'm31_not_displaced_test_2020-11-10-0001', "hdf5")
bulge_scale_radius = glxy_param['bulge_scale_radius'], bulge_number_of_particles = glxy_param['bulge_number_of_particles']) else: glxy, glxy_path = gal.load_galaxy_data(glxy_param['name'], test=True) ###### model analysis ###### if ANALYSIS: glxy_halo, glxy_disk, glxy_bulge = da.galaxy_structures(glxy, n_disk, n_bulge) print('Halo particles: {}; expected: {}'.format(len(glxy_halo), n_halo)) print('Disk particles: {}; expected: {}'.format(len(glxy_disk), n_disk)) print('Bulge particles: {}; expected: {}'.format(len(glxy_bulge), n_bulge)) widgets = ['Plotting galaxy structures: ', pbwg.AnimatedMarker(), pbwg.EndMsg()] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: for structure, filename in zip([glxy_halo, glxy_disk, glxy_bulge], [glxy_name + '_halo', glxy_name + '_disk', glxy_name + '_bulge']): da.plot_galaxy_structure(structure, glxy_path, filename) _, csv_folder = da.create_model_analysis_dirs(glxy_path) halo_df_path = csv_folder + glxy_name + '_halo_velocities.csv' disk_df_path = csv_folder + glxy_name + '_disk_velocities.csv' bulge_df_path = csv_folder + glxy_name + '_bulge_velocities.csv' if os.path.exists(halo_df_path) and os.path.exists(disk_df_path) and os.path.exists(bulge_df_path): widgets = ['Found galaxy velocities data, loading: ', pbwg.AnimatedMarker(), pbwg.EndMsg()] with pbar.ProgressBar(widgets=widgets, fd=sys.stdout) as progress: