예제 #1
0
def run(basename, prof):
    read_scale()

    # read in half light radius, Nu0[munit/Rscale^2], Nu0[munit/pc^2], munit
    print(gp.files.get_scale_file(0))
    A = np.loadtxt(gp.files.get_scale_file(0), unpack=False, skiprows=1)
    gp.rstarhalf = A[0] # halflight radius (all tracer part.s), stored first ("0")
    # read in radial bins
    radii, binmin, binmax, nudat1, nuerr1 = gh.readcol5(gp.files.nufiles[0])
    gp.xipol = radii*gp.rstarhalf       # [pc]
    maxr = max(radii)
    radii = np.hstack([radii, 2*maxr, 4*maxr, 8*maxr])
    gp.xepol = radii*gp.rstarhalf
    
    models = read_models()
    
    # use physical representation for profiles
    profs = []
    for i in range(len(models)):
        M = models[i]
        tmp_rho = M[0:gp.nepol]
        off = gp.nipol
        tmp_nu = M[off:off+gp.nepol]
        off += gp.nipol
        tmp_beta = M[off:off+gp.nbeta]
        # TODO: include handling of N populations

        try:
            tmp_prof = physical(gp.xepol, prof, pop, tmp_rho, tmp_nu, tmp_beta)
            profs.append(tmp_prof)
        except Exception as detail:
            print('handling error in profile', detail)
            continue

    sortedprofs = gh.sort_profiles_binwise(np.array(profs).transpose())

    Mmin, M95lo, M68lo, Mmedi, \
      M68hi, M95hi, Mmax = gh.get_median_1_2_sig(sortedprofs)

    # plot ranges
    if prof=='rho' or prof=='nu':
        gpl.startlog(); gpl.xscale('log')
    else:
        gpl.start()
    plot_labels(prof, pop)
            
    if prof=='nr':
        gpl.xscale('log')
        # gpl.xlim([0.,2.*gp.xipol[-1]])
        gp.xipol = np.hstack([gp.xipol[0]/2., gp.xipol, gp.rinfty*gp.xipol[-1]])
    if prof=='nu' or prof=='sig':
        plot_data(gp.xipol, prof, pop)
    plot_analytic(gp.xepol, prof, pop)

    radfill = gp.xepol
    if prof == 'sig':
        radfill = gp.xipol
    fill_nice(radfill, M95lo, M68lo, Mmedi, M68hi, M95hi)

    gpl.savefig(basename+'/prof_'+prof+'_'+str(pop)+'.png')
    gpl.ion(); gpl.show(); gpl.ioff()
    return
예제 #2
0
# (c) 2013 [email protected]

import numpy as np
import pdb

import gl_params
import gl_plot as gpl
from gl_project import *
from gl_analytic import *

r0 = np.arange(0.1,3.0,0.1)
rho0 = rho_anf(r0,1.,1.e6)
Rho0 = Sigma_anf(r0,1.,1.e6)
gpl.ion()
gpl.start()
# gpl.yscale('linear')

gpl.plot(r0, Rho0, color='blue', lw=2)
# gpl.plot(r0, rho_INTDIRECT_Rho(r0, rho0), color='blue')
try:
    Rhonu = rho_INT_Rho(r0,rho0)
except Exception as detail:
    print('NaN in rho_INT_Rho')
gpl.plot(r0, Rhonu, '.', color='red')
# pdb.set_trace()
print('error fraction determined/true = ',Rhonu/Rho0)
print('gp.ascale = ',gp.ascale)
print('gp.Mscale = ',gp.Mscale)
gpl.ioff(); gpl.show()
예제 #3
0
    if prof=='rho' or prof=='nu':
        gpl.startlog(); gpl.xscale('log')
    else:
        gpl.start()
    plot_labels(prof, pop)
            
    if prof=='nr':
        gpl.xscale('log')
        # gpl.xlim([0.,2.*gp.xipol[-1]])
        gp.xipol = np.hstack([gp.xipol[0]/2., gp.xipol, gp.rinfty*gp.xipol[-1]])
    if prof=='nu' or prof=='sig':
        plot_data(gp.xipol, prof, pop)
    plot_analytic(gp.xepol, prof, pop)

    radfill = gp.xepol
    if prof == 'sig':
        radfill = gp.xipol
    fill_nice(radfill, M95lo, M68lo, Mmedi, M68hi, M95hi)

    gpl.savefig(basename+'/prof_'+prof+'_'+str(pop)+'.png')
    gpl.ion(); gpl.show(); gpl.ioff()
    return
## \fn run()
# main functionality

if __name__=="__main__":
    import select_run
    basename, prof, pop = select_run.run()
    run(basename, prof)
    gpl.show()