コード例 #1
0
def run():
    H0 = Constants.H0
    WM = Constants.WM
    WV = Constants.WV

    smbh_cluster = get_clusters.get_pickled_file('smbh_cluster.pkl')
    smbh_by_id = analyze_clusters.get_smbh_by_id(smbh_cluster)

    galaxies_cluster_no_bad_z = get_clusters.get_pickled_file('galaxies_cluster_no_bad_z.pkl')
    galaxies_by_id = analyze_clusters.get_galaxies_by_id(galaxies_cluster_no_bad_z)

    galaxies_masses, final_masses = analyze_clusters.get_galaxies_masses(galaxies_by_id)

    galaxy_num = '80'
    if galaxy_num in galaxies_by_id.keys():
        gm_popt = get_galaxy_mass_coefficients(galaxies_masses, galaxy_num)
        print 'Galaxy Mass Coefficients for Galaxy #%s:' % (galaxy_num)
        print gm_popt    

#        bh_popt, central_bh_mass_fitted = merger_tree_plots.curve_fit_central_bh_masses(galaxy_num, central_bh_mass)
#        print 'Central Black Hole Mass Coefficients for Galaxy #%s:' % (galaxy_num)
#        print sm_popt

        sm_popt = get_star_mass_coefficients(galaxies_by_id, galaxy_num)
        print 'Stellar Mass Coefficients for Galaxy #%s:' % (galaxy_num)
        print sm_popt

    else:
        sys.exit('No galaxy with such a number!')
コード例 #2
0
def run():
    mpl.rcParams.update({'font.size': 15})
    plt.rc('text', usetex=True)
    plt.rc('font', family='Computer Modern Sans serif')
    H0 = Constants.H0
    WM = Constants.WM
    WV = Constants.WV

#    smbh_cluster = get_clusters.process_smbh_cluster(H0, WM, WV)
    smbh_cluster = get_clusters.get_pickled_file('smbh_cluster.pkl')
    smbh_by_id = analyze_clusters.get_smbh_by_id(smbh_cluster)

#    galaxies_cluster = get_clusters.process_galaxies_cluster(H0, WM, WV)
    galaxies_cluster_no_bad_z = get_clusters.get_pickled_file('galaxies_cluster_no_bad_z.pkl')
    galaxies_by_id = analyze_clusters.get_galaxies_by_id(galaxies_cluster_no_bad_z)
    galaxies_masses, final_masses = analyze_clusters.get_galaxies_masses(galaxies_by_id)


    for galaxy_num in ['1', '65', '149', '187', '217']:
#    galaxy_num = '187'
        smbh_mass = np.array(analyze_clusters.get_cbh_accreted_plus_seed_mass(smbh_by_id, galaxy_num))
        popt, smbh_mass_fitted = curve_fit_central_bh_masses(galaxy_num, smbh_mass)
        smbh_mass_fitted = np.array(smbh_mass_fitted)
        
        galaxy_mass_v_time = zip(galaxies_masses[galaxy_num][1], galaxies_masses[galaxy_num][2])
        galaxy_mass_v_time = np.array(map(list, galaxy_mass_v_time))
        popt_galaxy_mass = analyze_clusters.curve_fit_any_galaxy_mass(galaxies_masses, galaxy_num)
        ydata_est = [analyze_clusters.poly_func(x, *tuple(popt_galaxy_mass)) for x in galaxies_masses[galaxy_num][1]]
        galaxies_mass_fitted = [galaxies_masses[galaxy_num][1], [10**y for y in ydata_est]]
        galaxies_mass_fitted = np.array(galaxies_mass_fitted)

        stellar_mass = analyze_clusters.get_galaxy_stellar_mass(galaxies_by_id, galaxy_num)
        stellar_mass_v_time = zip(galaxies_masses[galaxy_num][1], stellar_mass)
        stellar_mass_v_time = np.array(map(list, stellar_mass_v_time))
#        print galaxies_by_id[galaxy_num]
#        print galaxy_mass_v_time, '\n'
#        print stellar_mass_v_time, '\n'
#        print smbh_mass

        plt.figure()
        plt.semilogy(galaxy_mass_v_time[:,0], galaxy_mass_v_time[:,1], 'b', lw=3.5, alpha=0.5, label='Galaxy Mass')
        plt.semilogy(galaxies_mass_fitted[0,:], galaxies_mass_fitted[1,:], 'b--', lw=3.5, alpha=0.5)
#        plt.ylabel('Mass [M$_\odot$]')
        plt.ylabel(r'$M_{BH} [M_\odot]$')

        plt.semilogy(stellar_mass_v_time[:,0], stellar_mass_v_time[:,1], 'g', lw=2., alpha=0.5, label='Stellar Mass')
        popt_star_mass = galaxies_star_mass.get_func_coeffs(stellar_mass_v_time[:,0]*1.e3, stellar_mass_v_time[:,1])
        stellar_mass_fitted = zip(stellar_mass_v_time[:,0]*1.e3, 
                                  [10.**(galaxies_star_mass.poly_func(t, *tuple(popt_star_mass))) for t in 
                                                                                         stellar_mass_v_time[:,0]*1.e3])
        stellar_mass_fitted = np.array(stellar_mass_fitted)
        plt.semilogy(stellar_mass_fitted[:,0]/1.e3, stellar_mass_fitted[:,1], 'g--', lw=2., alpha=0.5)

        print(galaxy_num, smbh_mass[:,1])
        plt.semilogy(smbh_mass[:,0], smbh_mass[:,1], 'r', lw=0.5, alpha=1., label='Central BH Mass')
        plt.semilogy(smbh_mass_fitted[0,:], smbh_mass_fitted[1,:], 'r--', lw=1., alpha=0.5)

        plt.xticks(np.arange(0., math.ceil(max(galaxy_mass_v_time[:,0]))+1., 1.0))
        plt.xlabel('Time [Gyr]')
        plt.xticks(np.arange(0, 16, 2))
#        plt.xlim([0, 14])
        plt.ylim([10.**4, 10.**15])
        plt.tight_layout()
        plt.legend(loc='lower right')
        plt.savefig(os.path.join(plots_folder, 'Masses_plot_galaxy_%s.png' % (galaxy_num)))
#        plt.show()
        plt.close()

#    print galaxies_by_id[galaxy_num]

#    galaxy_1 = [line for line in galaxies_cluster if line[2]==1]
#    black_holes = [time_slice[-1] for time_slice in galaxy_1 if time_slice[0]<=0.0][0]
#    print black_holes


#    analyze_clusters.plot_galaxies_all_masses(galaxies_masses)
    '''
    top_masses = 3
    galaxies_max_mass = analyze_clusters.get_most_massive_galaxies(galaxies_masses, final_masses, top_masses)
#    print galaxies_max_mass

    F1 = open(os.path.join(get_clusters.cluster_folder, ''.join([str(top_masses), '_max_mass_galaxies.pkl'])), 'wb')
    pickle.dump(galaxies_max_mass, F1)
    F1.close()
#    analyze_clusters.plot_max_galaxies_masses(galaxies_max_mass)

    popt_galaxies_masses, galaxies_max_mass_fitted = analyze_clusters.curve_fit_most_massive_galaxies(galaxies_max_mass)
    print popt_galaxies_masses

    F = open(os.path.join(get_clusters.cluster_folder,
                          ''.join([str(top_masses), '_max_mass_galaxies_fitted.pkl'])), 'wb')
    pickle.dump(galaxies_max_mass_fitted, F)
    F.close()
####################################################
    f = open(os.path.join(os.path.expanduser('~'), 'Dropbox', 'Columbia', 'Ostriker', 'Cannibalism', 'hermite',
                      'galaxy_mass.txt'), 'rb')
    time_mass = f.readlines()
    time = []
    mass = []
    for line in time_mass:
        time.append(float(line.split()[0]))
        mass.append(float(line.split()[1]))
    time = np.array(time)
    garbage = []
    mass = np.array(mass)
    galaxies_max_mass_fitted['65'] = [time, garbage, mass]

    analyze_clusters.plot_max_masses_galaxies_orig_and_fitted(galaxies_max_mass, galaxies_max_mass_fitted, top_masses)
    '''
    fit_and_plot_central_bh_masses(smbh_cluster, galaxies_cluster_no_bad_z)