コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
        #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")
コード例 #5
0
                                      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: