Verified Commit 25be03e2 authored by Daniel Williams's avatar Daniel Williams
Browse files

Added draft of the data release.

parents
Loading
Loading
Loading
Loading

JSD_calculation.py

0 → 100644
+605 −0
Original line number Diff line number Diff line
#!/usr/bin/env python
# coding: utf-8

import numpy as np
import matplotlib.pyplot as plt
import bilby


num_samples=100


m1_BBH=np.zeros((num_samples,10000))
m2_BBH=np.zeros((num_samples,10000))
t0_BBH=np.zeros((num_samples,10000))
m1_1=np.zeros((num_samples,10000))
m2_1=np.zeros((num_samples,10000))
t0_1=np.zeros((num_samples,10000))
m1_4=np.zeros((num_samples,10000))
m2_4=np.zeros((num_samples,10000))
t0_4=np.zeros((num_samples,10000))
m1_8=np.zeros((num_samples,10000))
m2_8=np.zeros((num_samples,10000))
t0_8=np.zeros((num_samples,10000))
m1_16=np.zeros((num_samples,10000))
m2_16=np.zeros((num_samples,10000))
t0_16=np.zeros((num_samples,10000))

m1_recover_1=np.zeros((num_samples,10000))
m2_recover_1=np.zeros((num_samples,10000))
t0_recover_1=np.zeros((num_samples,10000))
m1_recover_4=np.zeros((num_samples,10000))
m2_recover_4=np.zeros((num_samples,10000))
t0_recover_4=np.zeros((num_samples,10000))
m1_recover_8=np.zeros((num_samples,10000))
m2_recover_8=np.zeros((num_samples,10000))
t0_recover_8=np.zeros((num_samples,10000))
m1_recover_16=np.zeros((num_samples,10000))
m2_recover_16=np.zeros((num_samples,10000))
t0_recover_16=np.zeros((num_samples,10000))


for i in range(num_samples):
    m1_BBH[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/BBH/BBH_results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_BBH[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/BBH/BBH_results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_BBH[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/BBH/BBH_results/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_1[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m1/encounter_results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_1[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m1/encounter_results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_1[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m1/encounter_results/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_4[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m4/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_4[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m4/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_4[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m4/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_8[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m8/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_8[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m8/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_8[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m8/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_16[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m16/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_16[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m16/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_16[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter/m16/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  


for i in range(num_samples):
    m1_recover_1[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m1/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_recover_1[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m1/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_recover_1[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m1/results/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_recover_4[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m4/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_recover_4[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m4/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_recover_4[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m4/results/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_recover_8[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m8/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_recover_8[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m8/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_recover_8[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m8/results/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  
for i in range(num_samples):
    m1_recover_16[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m16/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt')  
    m2_recover_16[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m16/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt')  
    t0_recover_16[i] = np.loadtxt(f'/mnt/d/Colony/vitamin/encounter-like_BBH/m16/results/samples/vitamin_sample_timeseries-{i}_parameter-3.txt')  


jsd_m1_BBH=np.zeros((int(num_samples/2)))
jsd_m2_BBH=np.zeros((int(num_samples/2)))
jsd_t0_BBH=np.zeros((int(num_samples/2)))
jsd_m1_ref_1=np.zeros((num_samples))
jsd_m2_ref_1=np.zeros((num_samples))
jsd_t0_ref_1=np.zeros((num_samples))
jsd_m1_ref_4=np.zeros((num_samples))
jsd_m2_ref_4=np.zeros((num_samples))
jsd_t0_ref_4=np.zeros((num_samples))
jsd_m1_ref_8=np.zeros((num_samples))
jsd_m2_ref_8=np.zeros((num_samples))
jsd_t0_ref_8=np.zeros((num_samples))
jsd_m1_ref_16=np.zeros((num_samples))
jsd_m2_ref_16=np.zeros((num_samples))
jsd_t0_ref_16=np.zeros((num_samples))


jsd_m1_recover_1=np.zeros((num_samples))
jsd_m2_recover_1=np.zeros((num_samples))
jsd_t0_recover_1=np.zeros((num_samples))
jsd_m1_recover_4=np.zeros((num_samples))
jsd_m2_recover_4=np.zeros((num_samples))
jsd_t0_recover_4=np.zeros((num_samples))
jsd_m1_recover_8=np.zeros((num_samples))
jsd_m2_recover_8=np.zeros((num_samples))
jsd_t0_recover_8=np.zeros((num_samples))
jsd_m1_recover_16=np.zeros((num_samples))
jsd_m2_recover_16=np.zeros((num_samples))
jsd_t0_recover_16=np.zeros((num_samples))


# # JSD calculation function

from scipy.spatial import distance
from scipy.stats import gaussian_kde
from collections import namedtuple


def calc_median_error(jsvalues, quantiles=(0.16, 0.84)):

    quants_to_compute = np.array([quantiles[0], 0.5, quantiles[1]])
    quants = np.percentile(jsvalues, quants_to_compute * 100)
    summary = namedtuple("summary", ["median", "lower", "upper"])
    summary.median = quants[1]
    summary.plus = quants[2] - summary.median
    summary.minus = summary.median - quants[0]

    return summary


def calculate_js(samplesA, samplesB, ntests=100, xsteps=100):
    
    js_array = np.zeros(ntests)

    for j in range(ntests):
        nsamples = min([len(samplesA), len(samplesB)])
        A = np.random.choice(samplesA, size=nsamples, replace=False)
        B = np.random.choice(samplesB, size=nsamples, replace=False)
        xmin = np.min([np.min(A), np.min(B)])
        xmax = np.max([np.max(A), np.max(B)])
        x = np.linspace(xmin, xmax, xsteps)
        A_pdf = gaussian_kde(A)(x)
        B_pdf = gaussian_kde(B)(x)
        js_array[j] = np.nan_to_num(np.power(distance.jensenshannon(A_pdf, B_pdf), 2))

#    return calc_median_error(js_array)
    return js_array


for i in range(int(num_samples/2)):
    jsd_t0_BBH[i] = calculate_js(t0_BBH[2*i],t0_BBH[2*i+1]).mean()
    jsd_m1_BBH[i] = calculate_js(m1_BBH[2*i],m1_BBH[2*i+1]).mean()
    jsd_m2_BBH[i] = calculate_js(m2_BBH[2*i],m2_BBH[2*i+1]).mean()
for i in range(num_samples):
    jsd_m1_ref_1[i] = calculate_js(m1_BBH[i],m1_1[i]).mean()
    jsd_m2_ref_1[i] = calculate_js(m2_BBH[i],m2_1[i]).mean()
    jsd_t0_ref_1[i] = calculate_js(t0_BBH[i],t0_1[i]).mean()
for i in range(num_samples):
    jsd_m1_ref_4[i] = calculate_js(m1_BBH[i],m1_4[i]).mean()
    jsd_m2_ref_4[i] = calculate_js(m2_BBH[i],m2_4[i]).mean()
    jsd_t0_ref_4[i] = calculate_js(t0_BBH[i],t0_4[i]).mean()
for i in range(num_samples):
    jsd_m1_ref_8[i] = calculate_js(m1_BBH[i],m1_8[i]).mean()
    jsd_m2_ref_8[i] = calculate_js(m2_BBH[i],m2_8[i]).mean()
    jsd_t0_ref_8[i] = calculate_js(t0_BBH[i],t0_8[i]).mean()
for i in range(num_samples):
    jsd_m1_ref_16[i] = calculate_js(m1_BBH[i],m1_16[i]).mean()
    jsd_m2_ref_16[i] = calculate_js(m2_BBH[i],m2_16[i]).mean()
    jsd_t0_ref_16[i] = calculate_js(t0_BBH[i],t0_16[i]).mean()


for i in range(num_samples):
    jsd_m1_recover_1[i] = calculate_js(m1_1[i],m1_recover_1[i]).mean()
    jsd_m2_recover_1[i] = calculate_js(m2_1[i],m2_recover_1[i]).mean()
    jsd_t0_recover_1[i] = calculate_js(t0_1[i],t0_recover_1[i]).mean()
for i in range(num_samples):
    jsd_m1_recover_4[i] = calculate_js(m1_4[i],m1_recover_4[i]).mean()
    jsd_m2_recover_4[i] = calculate_js(m2_4[i],m2_recover_4[i]).mean()
    jsd_t0_recover_4[i] = calculate_js(t0_4[i],t0_recover_4[i]).mean()
for i in range(num_samples):
    jsd_m1_recover_8[i] = calculate_js(m1_8[i],m1_recover_8[i]).mean()
    jsd_m2_recover_8[i] = calculate_js(m2_8[i],m2_recover_8[i]).mean()
    jsd_t0_recover_8[i] = calculate_js(t0_8[i],t0_recover_8[i]).mean()
for i in range(num_samples):
    jsd_m1_recover_16[i] = calculate_js(m1_16[i],m1_recover_16[i]).mean()
    jsd_m2_recover_16[i] = calculate_js(m2_16[i],m2_recover_16[i]).mean()
    jsd_t0_recover_16[i] = calculate_js(t0_16[i],t0_recover_16[i]).mean()


# # histogram weights


weights = np.ones_like(jsd_m1_ref_1)/float(len(jsd_m1_1))
weights_BBH = np.ones_like(jsd_m1_BBH)/float(len(jsd_m1_BBH))

font = {'family': 'Times New Roman', 'weight': 'normal', 'size': 13}


# # 1. JSD of m1

# ## 1.1 BH encounter & BBH reference


def max_jsd(a,b,c,d,e):

    max_jsd=np.max([np.max(a),np.max(b),np.max(c),np.max(d),np.max(e)])
    
    return max_jsd

max_jsd_m1_ref=0.75
max_jsd_m2_ref=0.75
max_jsd_t0_ref=0.75
max_jsd_m1_inj=0.75
max_jsd_m2_inj=0.75
max_jsd_t0_inj=0.75


bins=10

font = {'family': 'Times New Roman', 'weight': 'normal', 'size': 20}

fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True)
ax[0].hist(jsd_m1_1,weights=weights,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=1')
ax[1].hist(jsd_m1_4,weights=weights,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=4')
ax[2].hist(jsd_m1_8,weights=weights,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=8')
ax[3].hist(jsd_m1_16,weights=weights,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=16')
ax[0].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,color='grey')
ax[1].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,color='grey')
ax[2].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,color='grey')
ax[3].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_ref),bins=bins,alpha=0.7,color='grey')
#ax[0]=plt.axvline(0.121,linestyle='dashdot',color='black')
#ax[1]=plt.axvline(0.121,linestyle='dashdot',color='black')

ax[3].set_xlabel('JSD of m1',fontdict=font)
#ax[3].set_ylabel('Rate',fontdict=font)
#ax[2].set_ylabel('Fraction of injections',fontdict=font)
#ax[1].set_ylabel('Rate',fontdict=font)
#ax[0].set_ylabel('Rate',fontdict=font)
ax[0].legend(prop={'size':18})
ax[1].legend(prop={'size':18})
ax[2].legend(prop={'size':18})
ax[3].legend(prop={'size':18})
ax[0].tick_params(labelsize=14)
ax[1].tick_params(labelsize=14)
ax[2].tick_params(labelsize=14)
ax[3].tick_params(labelsize=14)
ax[0].axvline(0.121,linestyle='dashdot',color='black')
ax[1].axvline(0.121,linestyle='dashdot',color='black')
ax[2].axvline(0.121,linestyle='dashdot',color='black')
ax[3].axvline(0.121,linestyle='dashdot',color='black')
#fig.text(0.5, 0, 'JSD of m1', ha='center',fontdict=font)
fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font)
fig.savefig('m1_be_ref.pdf')


m1_be_1_90=np.percentile(jsd_m1_1,10)
m1_be_1_90

m1_be_4_90=np.percentile(jsd_m1_4,10)
m1_be_4_90

m1_be_8_90=np.percentile(jsd_m1_8,10)
m1_be_8_90

m1_be_16_90=np.percentile(jsd_m1_16,10)
m1_be_16_90

m1_BBH_90=np.percentile(jsd_m1_BBH,95)
m1_BBH_90

m1_bem1_90=np.sum(jsd_m1_1>=m1_BBH_90)     
m1_bem1_90

m1_bem4_90=np.sum(jsd_m1_4>=m1_BBH_90)     
m1_bem4_90

m1_bem8_90=np.sum(jsd_m1_8>=m1_BBH_90)     
m1_bem8_90

m1_bem16_90=np.sum(jsd_m1_16>=m1_BBH_90)     
m1_bem16_90


# ## 1.2 BH encounter & injected BBH 

fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True)
ax[0].hist(jsd_m1_recover_1,weights=weights,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=1')
ax[1].hist(jsd_m1_recover_4,weights=weights,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=4')
ax[2].hist(jsd_m1_recover_8,weights=weights,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=8')
ax[3].hist(jsd_m1_recover_16,weights=weights,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=16')
ax[0].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,color='grey')
ax[1].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,color='grey')
ax[2].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,color='grey')
ax[3].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_inj),bins=bins,alpha=0.7,color='grey')
#ax[0]=plt.axvline(0.121,linestyle='dashdot',color='black')
#ax[1]=plt.axvline(0.121,linestyle='dashdot',color='black')

ax[3].set_xlabel('JSD of m1',fontdict=font)
#ax[3].set_ylabel('Rate',fontdict=font)
#ax[2].set_ylabel('Rate',fontdict=font)
#ax[1].set_ylabel('Rate',fontdict=font)
#ax[0].set_ylabel('Rate',fontdict=font)
ax[0].legend(prop={'size':18})
ax[1].legend(prop={'size':18})
ax[2].legend(prop={'size':18})
ax[3].legend(prop={'size':18})
ax[0].tick_params(labelsize=14)
ax[1].tick_params(labelsize=14)
ax[2].tick_params(labelsize=14)
ax[3].tick_params(labelsize=14)
ax[0].axvline(0.121,linestyle='dashdot',color='black')
ax[1].axvline(0.121,linestyle='dashdot',color='black')
ax[2].axvline(0.121,linestyle='dashdot',color='black')
ax[3].axvline(0.121,linestyle='dashdot',color='black')
#fig.text(0.5, 0, 'JSD of m1', ha='center',fontdict=font)
fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font)

fig.savefig('m1_be_inj.pdf')

m1_eb_1_90=np.percentile(jsd_eb_m1_1,10)
m1_eb_1_90

m1_eb_4_90=np.percentile(jsd_eb_m1_4,10)
m1_eb_4_90

m1_eb_8_90=np.percentile(jsd_eb_m1_8,10)
m1_eb_8_90

m1_eb_16_90=np.percentile(jsd_eb_m1_16,10)
m1_eb_16_90

m1_BBH_90=np.percentile(jsd_m1_BBH,90)
m1_BBH_90

m1_ebm1_90=np.sum(jsd_eb_m1_1>=m1_BBH_90)     
m1_ebm1_90

m1_ebm4_90=np.sum(jsd_eb_m1_4>=m1_BBH_90)     
m1_ebm4_90

m1_ebm8_90=np.sum(jsd_eb_m1_8>=m1_BBH_90)     
m1_ebm8_90

m1_ebm16_90=np.sum(jsd_eb_m1_16>=m1_BBH_90)     
m1_ebm16_90


# # 2. JSD of m2

# ## 2.1 BH encounter & BBH reference


fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True)
ax[0].hist(jsd_m2_1,weights=weights,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=1')
ax[1].hist(jsd_m2_4,weights=weights,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=4')
ax[2].hist(jsd_m2_8,weights=weights,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=8')
ax[3].hist(jsd_m2_16,weights=weights,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=16')
ax[0].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,color='grey')
ax[1].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,color='grey')
ax[2].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,color='grey')
ax[3].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_ref),bins=bins,alpha=0.7,color='grey')
#ax[0]=plt.axvline(0.121,linestyle='dashdot',color='black')
#ax[1]=plt.axvline(0.121,linestyle='dashdot',color='black')

ax[3].set_xlabel('JSD of m2',fontdict=font)
#ax[3].set_ylabel('Rate',fontdict=font)
#ax[2].set_ylabel('Rate',fontdict=font)
#ax[1].set_ylabel('Rate',fontdict=font)
#ax[0].set_ylabel('Rate',fontdict=font)
ax[0].legend(prop={'size':18})
ax[1].legend(prop={'size':18})
ax[2].legend(prop={'size':18})
ax[3].legend(prop={'size':18})
ax[0].tick_params(labelsize=14)
ax[1].tick_params(labelsize=14)
ax[2].tick_params(labelsize=14)
ax[3].tick_params(labelsize=14)
ax[0].axvline(0.121,linestyle='dashdot',color='black')
ax[1].axvline(0.121,linestyle='dashdot',color='black')
ax[2].axvline(0.121,linestyle='dashdot',color='black')
ax[3].axvline(0.121,linestyle='dashdot',color='black')
#fig.text(0.5, 0, 'JSD of m2', ha='center',fontdict=font)
fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font)

fig.savefig('m2_be_ref.pdf')



m2_BBH_90=np.percentile(jsd_m2_BBH,95)
m2_BBH_90


m2_bem1_90=np.sum(jsd_m2_1>=m2_BBH_90)     
m2_bem1_90




m2_bem4_90=np.sum(jsd_m2_4>=m2_BBH_90)     
m2_bem4_90



m2_bem8_90=np.sum(jsd_m2_8>=m2_BBH_90)     
m2_bem8_90




m2_bem16_90=np.sum(jsd_m2_16>=m2_BBH_90)     
m2_bem16_90


# ## 2.2 BH encounter & injected BBH

fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True)
ax[0].hist(jsd_m2_recover_1,weights=weights,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=1')
ax[1].hist(jsd_m2_recover_4,weights=weights,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=4')
ax[2].hist(jsd_m2_recover_8,weights=weights,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=8')
ax[3].hist(jsd_m2_recover_16,weights=weights,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=16')
ax[0].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,color='grey')
ax[1].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,color='grey')
ax[2].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,color='grey')
ax[3].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_inj),bins=bins,alpha=0.7,color='grey')
#ax[0]=plt.axvline(0.121,linestyle='dashdot',color='black')
#ax[1]=plt.axvline(0.121,linestyle='dashdot',color='black')

ax[3].set_xlabel('JSD of m2',fontdict=font)
#ax[3].set_ylabel('Rate',fontdict=font)
#ax[2].set_ylabel('Rate',fontdict=font)
#ax[1].set_ylabel('Rate',fontdict=font)
#ax[0].set_ylabel('Rate',fontdict=font)
ax[0].legend(prop={'size':18})
ax[1].legend(prop={'size':18})
ax[2].legend(prop={'size':18})
ax[3].legend(prop={'size':18})
ax[0].tick_params(labelsize=14)
ax[1].tick_params(labelsize=14)
ax[2].tick_params(labelsize=14)
ax[3].tick_params(labelsize=14)
ax[0].axvline(0.121,linestyle='dashdot',color='black')
ax[1].axvline(0.121,linestyle='dashdot',color='black')
ax[2].axvline(0.121,linestyle='dashdot',color='black')
ax[3].axvline(0.121,linestyle='dashdot',color='black')
#fig.text(0.5, 0, 'JSD of m2', ha='center',fontdict=font)
fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font)

fig.savefig('m2_be_inj.pdf')




m2_eb_1_90=np.percentile(jsd_eb_m2_1,10)
m2_eb_1_90


m2_eb_4_90=np.percentile(jsd_eb_m2_4,10)
m2_eb_4_90


m2_eb_8_90=np.percentile(jsd_eb_m2_8,10)
m2_eb_8_90

m2_eb_16_90=np.percentile(jsd_eb_m2_16,10)
m2_eb_16_90


m2_BBH_90=np.percentile(jsd_m2_BBH,90)
m2_BBH_90

m2_ebm1_90=np.sum(jsd_eb_m2_1>=m2_BBH_90)     
m2_ebm1_90

m2_ebm4_90=np.sum(jsd_eb_m2_4>=m2_BBH_90)     
m2_ebm4_90

m2_ebm8_90=np.sum(jsd_eb_m2_8>=m2_BBH_90)     
m2_ebm8_90

m2_ebm16_90=np.sum(jsd_eb_m2_16>=m2_BBH_90)     
m2_ebm16_90


# # 3. JSD of t0

# ## 3.1 BH encounter & BBH reference


fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True)
ax[0].hist(jsd_t0_1,weights=weights,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=1')
ax[1].hist(jsd_t0_4,weights=weights,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=4')
ax[2].hist(jsd_t0_8,weights=weights,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=8')
ax[3].hist(jsd_t0_16,weights=weights,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=16')
ax[0].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,color='grey')
ax[1].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,color='grey')
ax[2].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,color='grey')
ax[3].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_ref),bins=bins,alpha=0.7,color='grey')

ax[3].set_xlabel('JSD of t0',fontdict=font)
#ax[3].set_ylabel('Rate',fontdict=font)
#ax[2].set_ylabel('Rate',fontdict=font)
#ax[1].set_ylabel('Rate',fontdict=font)
#ax[0].set_ylabel('Rate',fontdict=font)
ax[0].legend(prop={'size':18},loc='upper center')
ax[1].legend(prop={'size':18})
ax[2].legend(prop={'size':18},loc='upper center')
ax[3].legend(prop={'size':18},loc='upper center')
ax[0].tick_params(labelsize=14)
ax[1].tick_params(labelsize=14)
ax[2].tick_params(labelsize=14)
ax[3].tick_params(labelsize=14)
ax[0].axvline(0.121,linestyle='dashdot',color='black')
ax[1].axvline(0.121,linestyle='dashdot',color='black')
ax[2].axvline(0.121,linestyle='dashdot',color='black')
ax[3].axvline(0.121,linestyle='dashdot',color='black')
#fig.text(0.5, 0, 'JSD of t0', ha='center',fontdict=font)
fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font)

fig.savefig('t0_be_ref.pdf')


t0_BBH_90=np.percentile(jsd_t0_BBH,95)
t0_BBH_90

t0_bem1_90=np.sum(jsd_t0_1>=t0_BBH_90)     
t0_bem1_90

t0_bem4_90=np.sum(jsd_t0_4>=t0_BBH_90)     
t0_bem4_90

t0_bem8_90=np.sum(jsd_t0_8>=t0_BBH_90)     
t0_bem8_90

t0_bem16_90=np.sum(jsd_t0_16>=t0_BBH_90)     
t0_bem16_90


# ## 3.2 BH encounter & injected BBH

fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True)
ax[0].hist(jsd_t0_recover_1,weights=weights,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=1')
ax[1].hist(jsd_t0_recover_4,weights=weights,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=4')
ax[2].hist(jsd_t0_recover_8,weights=weights,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=8')
ax[3].hist(jsd_t0_recover_16,weights=weights,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,histtype = 'step',color='r',label='q=16')
ax[0].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,color='grey')
ax[1].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,color='grey')
ax[2].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,color='grey')
ax[3].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_inj),bins=bins,alpha=0.7,color='grey')

ax[3].set_xlabel('JSD of t0',fontdict=font)
#ax[3].set_ylabel('Rate',fontdict=font)
#ax[2].set_ylabel('Rate',fontdict=font)
#ax[1].set_ylabel('Rate',fontdict=font)
#ax[0].set_ylabel('Rate',fontdict=font)
ax[0].legend(prop={'size':18})
ax[1].legend(prop={'size':18})
ax[2].legend(prop={'size':18})
ax[3].legend(prop={'size':18})
ax[0].tick_params(labelsize=14)
ax[1].tick_params(labelsize=14)
ax[2].tick_params(labelsize=14)
ax[3].tick_params(labelsize=14)
ax[0].axvline(0.121,linestyle='dashdot',color='black')
ax[1].axvline(0.121,linestyle='dashdot',color='black')
ax[2].axvline(0.121,linestyle='dashdot',color='black')
ax[3].axvline(0.121,linestyle='dashdot',color='black')
#fig.text(0.5, 0, 'JSD of t0', ha='center',fontdict=font)
fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font)

fig.savefig('t0_be_inj.pdf')


t0_eb_1_90=np.percentile(jsd_eb_t0_1,10)
t0_eb_1_90

t0_eb_4_90=np.percentile(jsd_eb_t0_4,10)
t0_eb_4_90

t0_eb_8_90=np.percentile(jsd_eb_t0_8,10)
t0_eb_8_90

t0_eb_16_90=np.percentile(jsd_eb_t0_16,10)
t0_eb_16_90

t0_BBH_90=np.percentile(jsd_t0_BBH,95)
t0_BBH_90

t0_ebm1_90=np.sum(jsd_eb_t0_1>=t0_BBH_90)     
t0_ebm1_90

t0_ebm4_90=np.sum(jsd_eb_t0_4>=t0_BBH_90)     
t0_ebm4_90

t0_ebm8_90=np.sum(jsd_eb_t0_8>=t0_BBH_90)     
t0_ebm8_90

t0_ebm16_90=np.sum(jsd_eb_t0_16>=t0_BBH_90)     
t0_ebm16_90





LICENSE

0 → 100644
+0 −0

File added.

Preview size limit exceeded, changes collapsed.

README.md

0 → 100644
+0 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −0

File added.

Preview size limit exceeded, changes collapsed.