Commit 47c5d4c9 authored by Hannah Middleton's avatar Hannah Middleton

some plotting scripts

parent c6a16465
This diff is collapsed.
......@@ -6,8 +6,57 @@ import matplotlib
matplotlib.rcParams.update({'font.size': 16})
def getAGNPost(nFreqBins):
def fiveDCorner(data):
if nFreqBins==9:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==5:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==3:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
#combine the ns
post0And1 = np.concatenate((post0['logn'], post1['logn']))
logns = np.concatenate((post0And1, post2['logn']))
post0And1 = np.concatenate((post0['alpha'], post1['alpha']))
alphas = np.concatenate((post0And1, post2['alpha']))
post0And1 = np.concatenate((post0['delta'], post1['delta']))
deltas = np.concatenate((post0And1, post2['delta']))
post0And1 = np.concatenate((post0['beta'], post1['beta']))
betas = np.concatenate((post0And1, post2['beta']))
post0And1 = np.concatenate((post0['gamma'], post1['gamma']))
gammas = np.concatenate((post0And1, post2['gamma']))
posteriorCombined = {'logn': logns,
'alpha': alphas,
'delta': deltas,
'beta': betas,
'gamma': gammas}
return posteriorCombined
def fiveDCorner(data,nFBins):
dataMstar = [ np.log10(10.0**(delta+7.0)) for delta in data['delta'] ]
......@@ -23,18 +72,17 @@ def fiveDCorner(data):
figure = corner.corner(d2,labels=parameterLabels,
quantiles=[0.05, 0.5, 0.95])
plt.savefig('corner.png')
plt.show()
plt.savefig('forPaper/agn_fullCorner_fBins{}.pdf'.format(nFBins))
plt.savefig('forPaper/agn_fullCorner_fBins{}.png'.format(nFBins))
return
posterior = np.genfromtxt('posterior.dat', names=True)
fiveDCorner(posterior)
n=9
posterior = getAGNPost(n)#np.genfromtxt('posterior.dat', names=True)
fiveDCorner(posterior,n)
exit()
names = ['logn', 'beta', 'gamma', 'alpha', 'delta']
for i in range(5):
......
......@@ -4,6 +4,55 @@ import astropy.units as u
from astropy.cosmology import Planck18 as cosmo
def getAGNPost(nFreqBins):
if nFreqBins==9:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==5:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==3:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
#combine the ns
post0And1 = np.concatenate((post0['logn'], post1['logn']))
logns = np.concatenate((post0And1, post2['logn']))
post0And1 = np.concatenate((post0['alpha'], post1['alpha']))
alphas = np.concatenate((post0And1, post2['alpha']))
post0And1 = np.concatenate((post0['delta'], post1['delta']))
deltas = np.concatenate((post0And1, post2['delta']))
post0And1 = np.concatenate((post0['beta'], post1['beta']))
betas = np.concatenate((post0And1, post2['beta']))
post0And1 = np.concatenate((post0['gamma'], post1['gamma']))
gammas = np.concatenate((post0And1, post2['gamma']))
posteriorCombined = {'logn': logns,
'alpha': alphas,
'delta': deltas,
'beta': betas,
'gamma': gammas}
saveLinesHere = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{0}/f{0}_plotting_things/'.format(nFreqBins)
return posteriorCombined, saveLinesHere
def zInt(beta,gamma,zlow,zhigh):
......@@ -52,23 +101,25 @@ def dndlog10M(theta,log10Ms):
def main():
pathToRuns = '../../runs/simpleModel/logNormLikeMstar6to10/'
pathToRuns = '../models/agnostic_model/posterior.dat'
nRuns=5
simpleModelData = np.genfromtxt(pathToRuns,names=True)#readPosterior.readPosterior(pathToRuns, nRuns=nRuns)
#pathToRuns = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/nFreq3/posterior.dat'
#pathToRuns = '../models/agnostic_model/posterior.dat'
nFreqBins=9
simpleModelData,resultsDir = getAGNPost(nFreqBins)
# set up M range and write to file
log10MRange = np.linspace(6.0, 11.0, 40)
writeMs = open('tmp2_ms.dat'.format(pathToRuns),'w')
writeMs = open('{}/ms.dat'.format(resultsDir),'w')
for logM in log10MRange:
writeMs.write('{}\n'.format(10.0**logM))
writeMs.close()
# place to write results
writeLines = open('tmp2_mLines.dat'.format(pathToRuns),'w')
writeLines = open('{}/mLines.dat'.format(resultsDir),'w')
# compute lines
for i in range(len(simpleModelData)):
for i in range(len(simpleModelData['logn'])):
thetas = simpleModelData['logn'][i], \
simpleModelData['beta'][i], \
simpleModelData['gamma'][i], \
......
import numpy as np
from scipy.integrate import quad
import astropy.units as u
from astropy.cosmology import Planck18 as cosmo
import sys
sys.path.insert(1, '../models/agnostic_model/')
import hmodel
def getAGNPost(nFreqBins):
if nFreqBins==9:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==5:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==3:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
#combine the ns
post0And1 = np.concatenate((post0['logn'], post1['logn']))
logns = np.concatenate((post0And1, post2['logn']))
post0And1 = np.concatenate((post0['alpha'], post1['alpha']))
alphas = np.concatenate((post0And1, post2['alpha']))
post0And1 = np.concatenate((post0['delta'], post1['delta']))
deltas = np.concatenate((post0And1, post2['delta']))
post0And1 = np.concatenate((post0['beta'], post1['beta']))
betas = np.concatenate((post0And1, post2['beta']))
post0And1 = np.concatenate((post0['gamma'], post1['gamma']))
gammas = np.concatenate((post0And1, post2['gamma']))
posteriorCombined = {'logn': logns,
'alpha': alphas,
'delta': deltas,
'beta': betas,
'gamma': gammas}
saveLinesHere = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{0}/f{0}_plotting_things/'.format(nFreqBins)
return posteriorCombined, saveLinesHere
def converthc(Ayr,freq):
'''
convert from hc at 1/1yr to whatever frequency we want
'''
# 1/1yr in Hz
freq1yr = 1./(1.*u.year.to(u.s))
# convert
freqRatio = (freq / freq1yr)
hc = Ayr*(freqRatio**(-2./3.))
log10hc = np.log10(float(hc))
return log10hc
posteriors, directory = getAGNPost(9)
nSamples = np.shape(posteriors['delta'])[0]
writeLines = open('./agn_h_nF{}.dat'.format(9),'w')
for i in range(nSamples):
theta = posteriors['logn'][i],\
posteriors['alpha'][i],\
posteriors['delta'][i],\
posteriors['beta'][i],\
posteriors['gamma'][i]
# integration limits
MlowIntLimit = 10.0**6.0
MhighIntLimit = 10.0**11.0
zlowIntLimit = 0.0
zhighIntLimit = 5.0
h1yr = hmodel.hmodel(theta,MlowIntLimit,MhighIntLimit,zlowIntLimit,zhighIntLimit)
logfs = np.linspace(-9.,-6.,15)
hLine = [ converthc(h1yr,10.**logf) for logf in logfs]
for yi in hLine:
writeLines.write('{}\t'.format(yi))
writeLines.write('\n')
import numpy as np
import matplotlib.pyplot as plt
pathToResults = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/single/'
run='singleChain2'
name = '_s2'
chains = np.genfromtxt(pathToResults+run+'/posterior.dat', names=True)
nparameters = 5
fig, axes = plt.subplots(nparameters, figsize=(10, 10), sharex=True)
labels = (['logn', 'beta', 'gamma', 'alpha', 'delta'])
print(labels)
#labels = ["m", "b", "log(f)"]
for i in range(nparameters):
ax = axes[i]
ax.plot(chains[labels[i]], "k", alpha=0.7)
ax.set_xlim(0, len(chains))
ax.set_ylabel(labels[i],rotation=0)
ax.yaxis.set_label_coords(-0.1, 0.5)
axes[-1].set_xlabel("step number");
plt.savefig('{0}{1}/chains{2}.png'.format(pathToResults,run,name))
plt.show()
This diff is collapsed.
import numpy as np
import GAL_PLOT
def getchains(nFreqBins):
if nFreqBins==9:
path = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f{0}/ptmcmc_f{0}_1/output/'.format(nFreqBins)
saveResultsHere = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f{0}/f{0}_plotting_things_prior'.format(nFreqBins)
elif nFreqBins==5:
path = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f5/ptmcmc_2/output/'.format(nFreqBins)
elif nFreqBins==3:
path = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f3/ptmcmc_f{}_1/output/'.format(nFreqBins)
readChains = np.genfromtxt('{}/chain_1.txt'.format(path))
burnin = int(0.25*len(readChains))
chains = readChains[burnin:,:]
priorChains = np.genfromtxt('/home/ADF/middlehr/repositories/PTAInference/runs/galaxyModel_ext/prior.dat')
return chains, priorChains, saveResultsHere
chain, prior, directory = getchains(9)
print(chain)
print(prior)
GAL_PLOT.conf_hmz(chain,directory,priorChains=prior)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams.update({'font.size': 16})
plt.rcParams.update({
"text.usetex": True,
"font.family": "Helvetica"
})
def getPercentileLines(lineData,xs):
print(np.shape(lineData))
p05,p25,p50,p75,p95 = np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs))
for i in range(len(xs)):
a = lineData[:,i]
p05[i] = np.percentile(a, 5)
p25[i] = np.percentile(a, 25)
p50[i] = np.percentile(a, 50)
p75[i] = np.percentile(a, 75)
p95[i] = np.percentile(a, 95)
return p05, p25, p50, p75, p95
orange = '#E69F00'
blue = '#0072B2'
green = '#009E73'
red = '#D55E00'
green2 = '#004D40'
blue2 = '#1E88E5'
orange2 = '#FFC107'
red2 = '#D81B60'
colSimp=orange
colGalExt=green
colGal = 'k'
agnHs = np.genfromtxt('agn_h_nF9.dat')
logfs = np.linspace(-9.,-6.,15)
p05,p25,p50,p75,p95 = getPercentileLines(agnHs,logfs)
p05,p25,p50,p75,p95 = getPercentileLines(agnHs,logfs)
print(np.shape(agnHs))
fs = [10.**f for f in logfs]
fs = np.atleast_1d(fs)
plt.fill_between(logfs,p05,p95,alpha=0.3,color=colSimp)
plt.fill_between(logfs,p25,p75,alpha=0.3,color=colSimp)
plt.plot(logfs,p50,color=colSimp,ls='--')
nFreqs=9
galLinesDir = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f{0}/f{0}_plotting_things/'.format(nFreqs)
hdata = np.genfromtxt('{}/h_lines.dat'.format(galLinesDir))
print(np.shape(hdata))
p05,p25,p50,p75,p95 = getPercentileLines(hdata,logfs)
fs = [10.**f for f in logfs]
fs = np.atleast_1d(fs)
plt.fill_between(logfs,p05,p95,alpha=0.3,color=colGalExt)
plt.fill_between(logfs,p25,p75,alpha=0.3,color=colGalExt)
plt.plot(logfs,p50,color=colGalExt,ls='--')
plt.ylabel(r'$h_{\rm c}$')
plt.xlabel(r'$\log_{10} f\,({\rm Hz})$')
plt.tight_layout()
plt.savefig('hlines.png')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
pathToResults = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f9/'
run='ptmcmc_f9_2'
name = '_f9_2'
chains = np.genfromtxt(pathToResults+run+'/output/chain_1.txt')
nparameters = 18
fig, axes = plt.subplots(nparameters, figsize=(10, 10), sharex=True)
labels = np.genfromtxt('pars.txt',dtype=str)
print(labels)
#labels = ["m", "b", "log(f)"]
for i in range(nparameters):
ax = axes[i]
ax.plot(chains[:,i], "k", alpha=0.7)
ax.set_xlim(0, len(chains))
ax.set_ylabel(labels[i],rotation=0)
ax.yaxis.set_label_coords(-0.1, 0.5)
axes[-1].set_xlabel("step number");
plt.savefig('{0}{1}/chains{2}.png'.format(pathToResults,run,name))
plt.show()
from matplotlib import pylab
import numpy as np
from math import ceil
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams.update({'font.size': 16})
plt.rcParams.update({
"text.usetex": True,
"font.family": "Helvetica"
})
def fpairtest(delta):
return 1./(delta+1.)*(1.-0.25**(delta+1.))
def getneffGAL(nFreqBins):
if nFreqBins==9:
path = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f9/ptmcmc_f{}_1/output/'.format(nFreqBins)
elif nFreqBins==5:
path = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f5/ptmcmc_2/output/'.format(nFreqBins)
elif nFreqBins==3:
path = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f3/ptmcmc_f{}_1/output/'.format(nFreqBins)
chains = np.genfromtxt('{}/chain_1.txt'.format(path))
burnin = int(0.25*len(chains))
n1 = chains[burnin:,0]-chains[burnin:,2]+np.log10(chains[burnin:,5]/chains[burnin:,9]/fpairtest(chains[burnin:,8]))+chains[burnin:,10]*np.log10(0.4/0.7)+(chains[burnin:,10]-chains[burnin:,6])*(11.-chains[burnin:,2])+11.
priorChains = np.genfromtxt('/home/ADF/middlehr/repositories/PTAInference/runs/galaxyModel_ext/prior.dat')
priorn1 = priorChains[:,0]-priorChains[:,2]+np.log10(priorChains[:,5]/priorChains[:,9]/fpairtest(priorChains[:,8]))+priorChains[:,10]*np.log10(0.4/0.7)+(priorChains[:,10]-priorChains[:,6])*(11.-priorChains[:,2])+11.
return n1, priorn1
def getnAGN(nFreqBins):
if nFreqBins==9:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq9_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==5:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq5_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
elif nFreqBins==3:
path0 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3/posterior.dat'.format(nFreqBins)
path1 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_1/posterior.dat'.format(nFreqBins)
path2 = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{}/nFreq3_2/posterior.dat'.format(nFreqBins)
post0 = np.genfromtxt(path0,names=True)
post1 = np.genfromtxt(path1,names=True)
post2 = np.genfromtxt(path2,names=True)
#combine the ns
post0And1 = np.concatenate((post0['logn'], post1['logn']))
logns = np.concatenate((post0And1, post2['logn']))
return logns
def histOutline(dataIn, *args, **kwargs):
"""
code copied from http://www.scipy.org/Cookbook/Matplotlib/UnfilledHistograms?action=AttachFile&do=get&target=histNofill.py
Make a histogram that can be plotted with plot() so that
the histogram just has the outline rather than bars as it
usually does.
Example Usage:
binsIn = numpy.arange(0, 1, 0.1)
angle = pylab.rand(50)
(bins, data) = histOutline(binsIn, angle)
plot(bins, data, 'k-', linewidth=2)
"""
(histIn, binsIn) = np.histogram(dataIn, *args, **kwargs)
stepSize = binsIn[1] - binsIn[0]
bins = np.zeros(len(binsIn)*2 + 2, dtype=float)
data = np.zeros(len(binsIn)*2 + 2, dtype=float)
for bb in range(len(binsIn)):
bins[2*bb + 1] = binsIn[bb]
bins[2*bb + 2] = binsIn[bb] + stepSize
if bb < len(histIn):
data[2*bb + 1] = histIn[bb]
data[2*bb + 2] = histIn[bb]
bins[0] = bins[1]
bins[-1] = bins[-2]
data[0] = 0
data[-1] = 0
return (bins, data)
def plotOneDPosterior(data,paramLabel,setBins,colour='k-',label='',prior=False):
#pathToRuns = "../../runs/simpleModelPosteriors/"
#setBins = np.arange(int(min(data[paramName])), ceil(max(data[paramName])),0.5)
#setBins = np.linspace(min(data[paramName]), max(data[paramName]),50)
#setBins = np.linspace(-14.5,2.5,50)
p05 = np.percentile(data,5)
p50 = np.percentile(data,50)
p95 = np.percentile(data,95)
if prior==True:
plt.hist(data, bins=setBins, histtype='step', facecolor=colour, alpha=0.3, edgecolor=None,density=1,fill=True,label=label)
else:
(bins,dat) = histOutline(data,setBins,density=1)
pylab.plot(bins,dat,colour,linewidth=2,alpha=1.0,label=label)
plt.axvline(p05,ls=':',color=colour)
plt.axvline(p95,ls=':',color=colour)
plt.xlabel(paramLabel)
plt.ylabel(r'${\rm Normalised~counts}$')
plt.tight_layout()
#plt.savefig('{}lognoHist.pdf'.format(runLoc))
#plt.savefig('logno.png')
#pylab.show()
#print("""{}
#05%: {:.2f} ({})
#50%: {:.2f} ({})
#95%: {:.2f} ({})
#""".format(label,p05,10**p05,p50,10.**p50,p95,10.**p95))
#
print("""{}
{:.2f}^{{+{:.2f}}}_{{-{:.2f}}}""".format(label, p50, p95-p50, p50-p05))
return 0
n = 9
print('Number of frequency bins = {}'.format(n))
neffGAL, neffPriorGAL = getneffGAL(n)
nAGN = getnAGN(n)
# bins
low = int(min(nAGN))
high = ceil(max(nAGN))
bins = np.linspace(low,high,80)
orange = '#E69F00'
blue = '#0072B2'
green = '#009E73'
red = '#D55E00'
purple = '#CC79A7'
colSimp=orange
colGalExt=green
#colGal = 'k'
#colSimpNegAlpha = red
lognoLabel = r'$\log_{10}\frac{{\dot n}_0}{{\rm Mpc}^{3}{\rm Gyr}}$'
plotOneDPosterior(nAGN,lognoLabel,bins,colour=colSimp,label=r'$\textrm{Agnostic posterior}$')
plotOneDPosterior(neffGAL,lognoLabel,bins,colour=colGalExt,label=r'$\textrm{Astro-informed~posterior}$')
plotOneDPosterior(neffPriorGAL,lognoLabel,bins,colour=colGalExt,label=r'$\textrm{Astro-informed prior}$',prior=True)
plt.legend(fontsize=12)
plt.xlim(min(bins),max(bins))
plt.savefig('forPaper/nhistogram_nFreq{}.png'.format(n))
plt.savefig('forPaper/nhistogram_nFreq{}.pdf'.format(n))
plt.show()
Phi0
PhiI
M0
alpha0
alphaI
f0
betaf
alphaf
gammaf
tau0
alphatau
betatau
gammatau
Mstar
alphastar
epsilon
e0
zeta0
lnprob
lnlike
acc_rate
temp
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde as kde
def readChains(nFreqBins):
'''
read in the data and return the lowest nFreqBins
chains and frequencies
'''
frequencies = np.genfromtxt('../chains/dr2new_fs/freqs.txt')
samples = np.genfromtxt('../chains/dr2new_fs/chains_h.txt')
chainsToUse = samples[:,0:nFreqBins]
frequenciesToUse = frequencies[0:nFreqBins]
return frequenciesToUse, chainsToUse
def makeKDEs(samples,nFreqBins):
'''
make the KDEs to use in the likelihood
'''
KDE = {i: kde(samples[:,i]) for i in range(nFreqBins)}
return KDE
f,data = readChains(5)
kdes = makeKDEs(data,len(f))
hcsToPlot = np.linspace(-17,-13,20)
for i in range(len(f)):
chain = data[:,i]
kdeToPlot = kdes[i].logpdf(hcsToPlot)
print(kdeToPlot)
plt.hist(chain,density=True,histtype='step',bins=50)
plt.plot(hcsToPlot,kdeToPlot)
plt.show()
"""
plot distribution in chirp mass
used to make fugure 3 in paper
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams.update({'font.size': 16})
plt.rcParams.update({
"text.usetex": True,
"font.family": "Helvetica"
})
def getPercentileLines(lineData,xs):
print(np.shape(lineData))
p01,p05,p25,p50,p75,p95,p99 = np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs)), \
np.zeros(len(xs))
for i in range(len(xs)):
a = lineData[:,i]
p01[i] = np.percentile(a, 0.5)
p05[i] = np.percentile(a, 5)
p25[i] = np.percentile(a, 25)
p50[i] = np.percentile(a, 50)
p75[i] = np.percentile(a, 75)
p95[i] = np.percentile(a, 95)
p99[i] = np.percentile(a, 99.5)
return p01, p05, p25, p50, p75, p95, p99
orange = '#E69F00'
blue = '#0072B2'
green = '#009E73'
red = '#D55E00'
green2 = '#004D40'
blue2 = '#1E88E5'
orange2 = '#FFC107'
red2 = '#D81B60'
colSimp=orange
colGalExt=green
colGal = 'k'
nFreqs = 9
agnLinesDir = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/agn_model/f{0}/f{0}_plotting_things/'.format(nFreqs)
lines = np.genfromtxt('{}/mLines.dat'.format(agnLinesDir))
simpModMs = np.genfromtxt('{}/ms.dat'.format(agnLinesDir))
print(type(simpModMs),np.shape(simpModMs))
_, p05, p25, p50, p75, p95, _ = getPercentileLines(lines,simpModMs)
plt.fill_between(simpModMs,p05,p95,alpha=0.3,color=colSimp)
plt.fill_between(simpModMs,p25,p75,alpha=0.3,color=colSimp)
plt.plot(simpModMs,p50,color=colSimp,ls='--')
plt.ylim(1E-9,1E6)
plt.xlim(1E6,1E11)
plt.yscale('log')
plt.xscale('log')
plt.xlabel(r'$\mathcal{M}~~({\rm M_{\odot}})$')
plt.ylabel(r'${\rm d}n / {\rm d} \log_{10} \mathcal{M}/{\rm M_{\odot}}~~({\rm Mpc}^{-3})$')
plt.tight_layout()
#plt.savefig('dndlogM_3FreqBins.png')
galLinesDir = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f{0}/f{0}_plotting_things/'.format(nFreqs)
galExtModData = np.genfromtxt('{}/m_lines.dat'.format(galLinesDir))
galExtModLogMs = np.linspace(5,11,30)
print(type(galExtModData),np.shape(galExtModData))
galExtModMs = [ 10.0**logM for logM in galExtModLogMs ]
galExtModMs = np.atleast_1d(galExtModMs)
_, p05,p25,p50,p75,p95, _ = getPercentileLines(galExtModData,galExtModMs)
plt.fill_between(galExtModMs,p05,p95,alpha=0.3,color=colGalExt)
plt.fill_between(galExtModMs,p25,p75,alpha=0.3,color=colGalExt,label='new posterior')
plt.plot(galExtModMs,p50,color=colGalExt,ls='--')
#plt.savefig('forPaper/mlines_nFreq{}.pdf'.format(nFreqs))
#plt.savefig('forPaper/mlines_nFreq{}.png'.format(nFreqs))
#plt.show()
#exit()
galPriorLinesDir = '/home/ADF/middlehr/Documents/PTA/EPTAInterp/results/gal_model/f{0}/f{0}_plotting_things_prior/'.format(nFreqs)
galExtModPrior = np.genfromtxt('{}/m_linesprior.dat'.format(galPriorLinesDir))
p01,p05,p25,p50,p75,p95,p99= getPercentileLines(galExtModPrior,galExtModMs)
plt.plot(galExtModMs, p01, color='k', alpha=0.7, ls=':',label='newly computed prior')
plt.plot(galExtModMs, p99, color='k', alpha=0.7, ls=':')
"""
galModRunLoc = '../../runs/galaxyModel/'
galModData = np.genfromtxt('{}/m_lines.dat'.format(galModRunLoc))
galModLogMs = np.genfromtxt('{}/mc.txt'.format(galModRunLoc))
galModMs = [ 10.0**logM for logM in galModLogMs ]
p05,p25,p50,p75,p95 = confBands.getPercentiles(galModMs,galModData)
plt.fill_between(galModMs,p05,p95,alpha=0.3,color=colGal)
plt.fill_between(galModMs,p25,p75,alpha=0.3,color=colGal)
plt.plot(galModMs,p50,color=colGal,ls='--')
"""
galPriorLinesDir = '/home/ADF/middlehr/repositories/PTAInference/runs/galaxyModel_ext/'
galExtModPrior = np.genfromtxt('{}/m_linesprior.dat'.format(galPriorLinesDir))
p01,p05,p25,p50,p75,p95,p99= getPercentileLines(galExtModPrior,galExtModMs)
plt.plot(galExtModMs, p01, color='k', alpha=0.7, ls='-.',label='M21 prior')
plt.plot(galExtModMs, p99, color='k', alpha=0.7, ls='-.')
galLinesDir = '/home/ADF/middlehr/repositories/PTAInference/runs/galaxyModel_ext/'
galExtModData = np.genfromtxt('{}/m_lines.dat'.format(galLinesDir))
_, p05,p25,p50,p75,p95, _ = getPercentileLines(galExtModData,galExtModMs)
plt.fill_between(galExtModMs,p05,p95,alpha=0.2,color='b',label='M21 posterior')
plt.fill_between(galExtModMs,p25,p75,alpha=0.2,color='b')
plt.plot(galExtModMs,p50,color='b',ls='--')
plt.legend()
plt.ylim(1E-9,1E6)
plt.xlim(1E6,1E11)
plt.yscale('log')
plt.xscale('log')
plt.xlabel(r'$\mathcal{M}~~({\rm M_{\odot}})$')
plt.ylabel(r'${\rm d}n / {\rm d} \log_{10} \mathcal{M}/{\rm M_{\odot}}~~({\rm Mpc}^{-3})$')
plt.tight_layout()
plt.savefig('forPaper/mlines_nFreq{}.pdf'.format(nFreqs))
plt.savefig('forPaper/mlines_nFreq{}.png'.format(nFreqs))
plt.show()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment