diff --git a/JSD/BBH/BBH_data_creation.py b/JSD/BBH/BBH_data_creation.py new file mode 100755 index 0000000000000000000000000000000000000000..53b8e5ff25d1ccf483ca81bb18d6b07f9f62ccf9 --- /dev/null +++ b/JSD/BBH/BBH_data_creation.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python +# coding: utf-8 + +import numpy as np +import bilby +import matplotlib.pyplot as plt + +duration = 1. +sampling_frequency = 256. +Nt = duration*sampling_frequency +ifos_list = ['H1','L1','V1'] + +# Set up a random seed for result reproducibility. This is optional! +np.random.seed(10000) +ref_geocent_time = 1126259642.5 +start_time = ref_geocent_time - 0.5 + + +# The injections of reference BBH. +injection_parameters = dict( + mass_1=78, mass_2=72, a_1=0., a_2=0., tilt_1=0., tilt_2=0., + phi_12=0., phi_jl=0., luminosity_distance=1400, theta_jn=1.51, psi=1.54, + phase=0., geocent_time=1126259642.5+0.22, ra=0.89, dec=-0.94) + + +# Fixed arguments passed into the source model. +waveform_arguments = dict(waveform_approximant='IMRPhenomPv2', + reference_frequency=20, minimum_frequency=20) + +# Create the waveform_generator using a LAL BinaryBlackHole source function. +waveform_generator = bilby.gw.WaveformGenerator( + duration=duration, sampling_frequency=sampling_frequency, + frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole, + parameter_conversion=bilby.gw.conversion.convert_to_lal_binary_black_hole_parameters, + waveform_arguments=waveform_arguments, + start_time=ref_geocent_time - 0.5) + +# Set up interferometers. In this case we'll use two interferometers +# (LIGO-Hanford (H1), LIGO-Livingston (L1). These default to their design +# sensitivity +ifos_o = bilby.gw.detector.InterferometerList(['H1', 'L1','V1']) +ifos_o.set_strain_data_from_power_spectral_densities( + sampling_frequency=sampling_frequency, duration=duration, + start_time=ref_geocent_time - 0.5) +ifos_o.inject_signal(waveform_generator=waveform_generator, + parameters=injection_parameters) + + +np.random.seed(10000) +ifos = bilby.gw.detector.InterferometerList(['H1', 'L1','V1']) +ifos.set_strain_data_from_power_spectral_densities( + sampling_frequency=sampling_frequency, duration=duration, + start_time=ref_geocent_time - 0.5) + +# Transfer BBH signal in time domain to frequency domain. +freq_signal = waveform_generator.frequency_domain_strain() +signal_fd = np.zeros((3,int(Nt/2)+1),dtype=complex) +signal_td = np.zeros((3,int(Nt))) +for i in range(3): + signal_fd[i] = ifos_o[i].get_detector_response(freq_signal, injection_parameters) + signal_td[i] = sampling_frequency*np.fft.irfft(signal_fd[i]) + +# Calculate the optimal SNR in each detector. + +np.sqrt(ifos_o[0].optimal_snr_squared(signal=signal_fd[0])).real +np.sqrt(ifos_o[1].optimal_snr_squared(signal=signal_fd[1])).real +np.sqrt(ifos_o[2].optimal_snr_squared(signal=signal_fd[2])).real + + +# Produce 100 sets of detector network(H1,L1,V1), for the following signal whitening. +np.random.seed(10000) +ifos={} +# In this study we generate 100 data files, which contain one signal combining 100 noise realisations. +num_samples=100 +for i in range(num_samples): + ifos[i] = bilby.gw.detector.InterferometerList(ifos_list) + ifos[i].set_strain_data_from_power_spectral_densities( + sampling_frequency=sampling_frequency, duration=duration, + start_time=ref_geocent_time-duration/2.0) + + +# Signal whitening. +def whiten_signal(signal_fd,ifo): + + #signal_fd = np.fft.rfft(signal_td)/sampling_frequency + whitened_signal_fd = signal_fd/ifo.amplitude_spectral_density_array + whitened_signal_td = np.sqrt(2.0*Nt)*np.fft.irfft(whitened_signal_fd) + 1.0*np.random.randn(256) + + return whitened_signal_td + +np.random.seed(10000) +ifos={} +num_samples=100 + +for i in range(num_samples): + ifos[i] = bilby.gw.detector.InterferometerList(ifos_list) + ifos[i].set_strain_data_from_power_spectral_densities( + sampling_frequency=256, duration=duration, + start_time=ref_geocent_time-duration/2.0) + + +np.random.seed(10000) +whitened_signal_td_array=np.zeros((num_samples,3,256)) + +for i in range(num_samples): + k=0 + for k in range(len(ifos_list)): + whitened_signal_td_array[i][k,:] = whiten_signal(signal_fd[k],ifos[i][k]) + k+=1 + + +# Plot the noisy signal. +times = np.linspace(start_time, start_time+duration, int(Nt)) +plt.plot(times,whitened_signal_td_array[0][0]) +plt.xlabel('GPS time[s]', fontdict={'family':'Times New Roman', 'size':18}) +plt.ylabel('strain', fontdict={'family':'Times New Roman', 'size':18}) +plt.grid(color="k", linestyle=":") +plt.savefig('noisy_BBH.pdf') + + +# import the h5py module for creating data file. +import h5py + +f1 = h5py.File('data_0.h5py','r') +name_list=[] +data_set_list=[] + +for name in f1: + name_list.append(name) + data_set_list.append(f1[f'{name}']) + +x_data_list=[injection_parameters['mass_1'],injection_parameters['mass_2'],injection_parameters['luminosity_distance'], + injection_parameters['geocent_time'],injection_parameters['ra'],injection_parameters['dec'], + injection_parameters['psi']] + +# Record the injections. +x_data_sum = np.zeros((num_samples,7)) +for i in range(num_samples): + x_data_sum[i] = x_data_list +x_data_sum + +# Produce the data file for VItamin analysis. +for i in range(num_samples): + + with h5py.File(f'data_20211025{i}.h5py','w') as f1: + + for k in range(len(name_list)): + d = f1.create_dataset(name_list[k],data=data_set_list[k]) + + del f1['x_data'] + del f1['y_data_noisy'] + + d1 = f1.create_dataset('x_data',data = x_data_sum[i]) + d2 = f1.create_dataset('y_data_noisy',data = whitened_signal_td_array[i]) + diff --git a/JSD/BH_capture/BH_capture_data_creation.py b/JSD/BH_capture/BH_capture_data_creation.py new file mode 100755 index 0000000000000000000000000000000000000000..1a03d46ae52026cd700c17a5360407aee0420ab9 --- /dev/null +++ b/JSD/BH_capture/BH_capture_data_creation.py @@ -0,0 +1,256 @@ +#!/usr/bin/env python +# coding: utf-8 + +import minke.sources +import lalsimulation +import lal +import numpy as np +import minke.distribution +import matplotlib.pyplot as plt +import bilby +get_ipython().run_line_magic('matplotlib', 'inline') + +# Specify the waveform we use. +mass_ratio= 1 +nr_path = './h_psi4/{}' +waveforms_merge = { + 1: "h_m1_L0.9_l2m2_r300.dat", + 2: "h_m2_L0.87_l2m2_r300.dat", + 4: "h_m4_L0.5_l2m2_r300.dat", + 8: "h_m8_L0.35_l2m2_r280.dat", + 16: "h_m16_L0.18_l2m2_r300.dat" +} + +extraction = { + 1: 300, + 2: 300, + 4: 300, + 8: 280, + 16: 300 +} + +# In this study we generate 100 data files, which contain one signal combining 100 noise realisations. . +num_samples = 100 + +nr_waveform = waveforms_merge[mass_ratio] + +duration = 1 +sampling_frequency = 256 +Nt=duration*sampling_frequency + +ref_geocent_time = 1126259642.5 +start_time = ref_geocent_time-duration/2.0 +epoch = str(start_time) + +# These are the distance injections we obtain from VItamin analysis. +distance_set = { + 1: 5000, + 4: 2000, + 8: 1500, + 16: 500 +} + + +# Only one set of injections is used in this script. +total_mass = 150 +ra = np.random.uniform(0.89,0.89,num_samples) +dec = np.random.uniform(-0.94,-0.94,num_samples) +psi = np.random.uniform(1.54,1.54,num_samples) +locations = (ra,dec,psi) +distances = np.random.uniform(distance_set[mass_ratio], distance_set[mass_ratio], num_samples) + + +# the function to generate an injection for a given waveform. +def generate_for_detector(source, ifos, sampling_frequency, epoch, distance, total_mass, ra, dec, psi): + """ + Generate an injection for a given waveform. + + Parameters + ---------- + source : ``minke.Source`` object + The source which should generate the waveform. + ifos : list + A list of interferometer initialisms, e.g. ['L1', 'H1'] + sampling_frequency : int + The sampling_frequency in hertz for the generated signal. + epoch : str + The epoch (start time) for the injection. + Note that this should be provided as a string to prevent overflows. + distance : float + The distance for the injection, in megaparsecs. + total_mass : float + The total mass for the injected signal. + ra : float + The right ascension of the source, in radians. + dec : float + The declination of the source, in radians. + psi : float + The polarisation angle of the source, in radians. + + Notes + ----- + This is very much a draft implementation, and there are a number of + things which should be tidied-up before this is moved into Minke, + including bundling total mass with the source. + """ + nr_waveform = source.datafile + + waveform = {} + waveform['signal'] = {} + waveform['times'] = {} + + for ifo in ifos: + + det = lalsimulation.DetectorPrefixToLALDetector(ifo) + hp, hx = source._generate(half=True, epoch=epoch, rate=sampling_frequency)[:2] + h_tot = lalsimulation.SimDetectorStrainREAL8TimeSeries(hp, hx, ra, dec, psi, det) + waveform['signal'][ifo] = h_tot.data.data.tolist() + waveform['times'][ifo] = np.linspace(0, len(h_tot.data.data)*h_tot.deltaT, len(h_tot.data.data)).tolist() + + return waveform + + +waveforms = [] +ifos_list = ['H1','L1','V1'] +for distance, location in zip(distances, np.vstack(locations).T): + + hyper_object = minke.sources.Hyperbolic( + datafile = nr_path.format(nr_waveform), + total_mass = total_mass, + distance = distance, + extraction=extraction[mass_ratio] + ) + hyper_object.datafile = nr_waveform + + waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, epoch, distance, total_mass, *location) + waveforms.append(waveform) + + +# The start time was specified when generating mock signal, while the merger time t0 and signal length could not be. We do the following process to make the signal have a start time of 1126259642.5s in GPS time, and a t0 of 0.22s. + +peak_index = waveforms[0]['signal']['H1'].index(max(waveforms[0]['signal']['H1'])) + +supposed_peak_index = int((0.5+0.22)/duration*sampling_frequency) +delta_peak = supposed_peak_index - peak_index +delta_start_time = delta_peak/Nt +new_start_time = start_time + delta_start_time +new_epoch = str(new_start_time) + +new_waveforms = [] + +for distance, location in zip(distances, np.vstack(locations).T): + + hyper_object = minke.sources.Hyperbolic( + datafile = nr_path.format(nr_waveform), + total_mass = total_mass, + distance = distance, + extraction=extraction[mass_ratio] + ) + hyper_object.datafile = nr_waveform + + new_waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, new_epoch, distance, total_mass, *location) + new_waveforms.append(new_waveform) + + + +# Pad the waveform to fit the restrict of VItamin. +def fix_waveform(ifos,num_samples,new_waveforms,delta_peak): + + fixed_waveforms = [] + for i in range(num_samples): + fixed_waveform = {} + fixed_waveform['signal'] = {} + for ifo in ifos_list: + peak_index = waveforms[i]['signal'][ifo].index(max(waveforms[i]['signal'][ifo])) + new_peak_index = new_waveforms[i]['signal'][ifo].index(max(new_waveforms[i]['signal'][ifo])) + if new_peak_index > peak_index: + new_waveforms[i]['signal'][ifo] = new_waveforms[i]['signal'][ifo][new_peak_index-peak_index:] + if new_peak_index < peak_index: + for i in range(peak_index-new_peak_index): + new_waveforms[i]['signal'][ifo] = [0] + new_waveforms[i]['signal'][ifo] + + + fixed_waveform['signal'][ifo] = new_waveforms[i]['signal'][ifo] + for j in range(delta_peak): + fixed_waveform['signal'][ifo] = [0] + fixed_waveform['signal'][ifo] + for k in range(Nt-len(fixed_waveform['signal'][ifo])): + fixed_waveform['signal'][ifo] = fixed_waveform['signal'][ifo] + [0] + fixed_waveform['signal'][ifo] = fixed_waveform['signal'][ifo][0:Nt] + + fixed_waveforms.append(fixed_waveform) + + return fixed_waveforms + + +fixed_waveforms = fix_waveform(ifos_list,num_samples,new_waveforms,delta_peak) + +np.random.seed(10000) +ifos={} +# Use the detector simulated ASD to whiten signal. +for i in range(num_samples): + ifos[i] = bilby.gw.detector.InterferometerList(ifos_list) + ifos[i].set_strain_data_from_power_spectral_densities( + sampling_frequency=sampling_frequency, duration=duration, + start_time=ref_geocent_time-duration/2.0) + + +# Signal whitening. +def whiten_signal(signal,ifo): + + signal_fd = np.fft.rfft(signal)/Nt + + whitened_signal_fd = signal_fd/ifo.amplitude_spectral_density_array + whitened_signal_td = np.sqrt(2.0*Nt)*np.fft.irfft(whitened_signal_fd) + 1.0*np.random.randn(int(Nt)) + + return whitened_signal_td + +# Produce 100 sets of detector network(H1,L1,V1), for the following signal whitening. +np.random.seed(10000) +whitened_signal_td_array=np.zeros((num_samples,3,int(Nt))) + +for i in range(num_samples): + k = 0 + for ifo in ifos_list: + whitened_signal_td_array[i][k,:] = whiten_signal(fixed_waveforms[i]['signal'][ifo],ifos[i][k]) + k += 1 + +# Plot the noisy capture signal. +plt.plot(times,whitened_signal_td_array[0][0]) +plt.xlabel('GPS time[s]', fontdict={'family':'Times New Roman', 'size':18}) +plt.ylabel('strain', fontdict={'family':'Times New Roman', 'size':18}) +plt.grid(color="k", linestyle=":") +plt.savefig('noisy_capture.pdf') + +# Import the h5py module for creating data file. +import h5py + +f1 = h5py.File('data_0.h5py','r') +name_list=[] +data_set_list=[] + +for name in f1: + name_list.append(name) + data_set_list.append(f1[f'{name}']) + +m2=total_mass/(mass_ratio+1) +m1=total_mass-m2 + +# Record the injections. +x_data_sum = np.zeros((num_samples,7)) +for i in range(num_samples): + x_data_sum[i] = [m1,m2,distance_set[mass_ratio],0.22,locations[2][i],locations[0][i],locations[1][i]] +x_data_sum + +# Produce the data file for VItamin analysis. +for i in range(num_samples): + + with h5py.File(f'data_20211013{i}.h5py','w') as f1: + + for k in range(len(name_list)): + d = f1.create_dataset(name_list[k],data=data_set_list[k]) + + del f1['x_data'] + del f1['y_data_noisy'] + + d1 = f1.create_dataset('x_data',data = x_data_sum[i]) + d2 = f1.create_dataset('y_data_noisy',data = whitened_signal_td_array[i]) \ No newline at end of file diff --git a/JSD_calculation.py b/JSD/JSD_calculation.py old mode 100644 new mode 100755 similarity index 65% rename from JSD_calculation.py rename to JSD/JSD_calculation.py index fb9018d88946089890e554abaca087cd7d90e3b2..2581adee60e8d47f93b3b8e0e195c96433e8dcd5 --- a/JSD_calculation.py +++ b/JSD/JSD_calculation.py @@ -1,26 +1,33 @@ #!/usr/bin/env python # coding: utf-8 + + import numpy as np import matplotlib.pyplot as plt import bilby -num_samples=100 +# # Load the posterior samples from VItamin. +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)) @@ -28,88 +35,105 @@ 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') + m1_BBH[i] = np.loadtxt(f'/mnt/d/vitamin/BBH/BBH_results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_BBH[i] = np.loadtxt(f'/mnt/d/vitamin/BBH/BBH_results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_BBH[i] = np.loadtxt(f'/mnt/d/vitamin/BBH/BBH_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') + m1_1[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m1/encounter_results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_1[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m1/encounter_results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_1[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m1/encounter_results/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') + m1_4[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m4/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_4[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m4/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_4[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m4/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') + m1_8[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m8/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_8[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m8/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_8[i] = np.loadtxt(f'/mnt/d/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/vitamin/encounter/m16/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_16[i] = np.loadtxt(f'/mnt/d/vitamin/encounter/m16/encounter_results/20211013/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_16[i] = np.loadtxt(f'/mnt/d/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') + m1_recover_1[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m1/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_recover_1[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m1/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_recover_1[i] = np.loadtxt(f'/mnt/d/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') + m1_recover_4[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m4/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_recover_4[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m4/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_recover_4[i] = np.loadtxt(f'/mnt/d/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') + m1_recover_8[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m8/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_recover_8[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m8/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_recover_8[i] = np.loadtxt(f'/mnt/d/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') + m1_recover_16[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m16/results/samples/vitamin_sample_timeseries-{i}_parameter-0.txt') + m2_recover_16[i] = np.loadtxt(f'/mnt/d/vitamin/encounter-like_BBH/m16/results/samples/vitamin_sample_timeseries-{i}_parameter-1.txt') + t0_recover_16[i] = np.loadtxt(f'/mnt/d/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 @@ -144,52 +168,56 @@ def calculate_js(samplesA, samplesB, ntests=100, xsteps=100): 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 - +# Calculate the JSDs. 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 - +# # 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)) @@ -199,15 +227,16 @@ font = {'family': 'Times New Roman', 'weight': 'normal', 'size': 13} # # 1. JSD of m1 -# ## 1.1 BH encounter & BBH reference - +# ## 1.1 BH capture & BBH reference +# Calculate the maximum of jsd, to determine the x-range of histogram plot. 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 @@ -217,9 +246,9 @@ 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') @@ -229,14 +258,9 @@ ax[0].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_ref),bins=bins,alp 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}) @@ -249,40 +273,19 @@ 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 +fig.savefig('m1_ref.pdf') -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 +# Calculate the percentage of JSDs that are higher than noise benchmark. +m1_BBH_90=np.percentile(jsd_m1_BBH,90) +m1_1_90=np.sum(jsd_m1_1>=m1_BBH_90) +m1_4_90=np.sum(jsd_m1_4>=m1_BBH_90) +m1_8_90=np.sum(jsd_m1_8>=m1_BBH_90) +m1_16_90=np.sum(jsd_m1_16>=m1_BBH_90) -# ## 1.2 BH encounter & injected BBH +# ## 1.2 BH capture & its recovered 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') @@ -293,14 +296,9 @@ ax[0].hist(jsd_m1_BBH,weights=weights_BBH,range=(0,max_jsd_m1_inj),bins=bins,alp 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}) @@ -313,42 +311,23 @@ 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 +fig.savefig('m1_recover.pdf') -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 +# Calculate the percentage of JSDs that are higher than noise benchmark. +m1_recover_1_90=np.sum(jsd_m1_recover_1>=m1_BBH_90) +m1_recover_4_90=np.sum(jsd_m1_recover_4>=m1_BBH_90) +m1_recover_8_90=np.sum(jsd_m1_recover_8>=m1_BBH_90) +m1_recover_16_90=np.sum(jsd_m1_recover_16>=m1_BBH_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 +# ## 2.1 BH capture & BBH reference fig,ax=plt.subplots(4,1,figsize=(7,6),sharex=True) @@ -360,14 +339,9 @@ ax[0].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_ref),bins=bins,alp 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}) @@ -380,39 +354,20 @@ 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') - +fig.savefig('m2_ref.pdf') +# Calculate the percentage of JSDs that are higher than noise benchmark. 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_1_90=np.sum(jsd_m2_1>=m2_BBH_90) +m2_4_90=np.sum(jsd_m2_4>=m2_BBH_90) +m2_8_90=np.sum(jsd_m2_8>=m2_BBH_90) +m2_16_90=np.sum(jsd_m2_16>=m2_BBH_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 +# ## 2.2 BH capture & its recovered 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') @@ -423,14 +378,9 @@ ax[0].hist(jsd_m2_BBH,weights=weights_BBH,range=(0,max_jsd_m2_inj),bins=bins,alp 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}) @@ -443,49 +393,21 @@ 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 - +fig.savefig('m2_recover.pdf') -m2_eb_8_90=np.percentile(jsd_eb_m2_8,10) -m2_eb_8_90 +# Calculate the percentage of JSDs that are higher than noise benchmark. +m2_recover_1_90=np.sum(jsd_m2_recover_1>=m2_BBH_90) +m2_recover_4_90=np.sum(jsd_m2_recover_4>=m2_BBH_90) +m2_recover_8_90=np.sum(jsd_m2_recover_8>=m2_BBH_90) +m2_recover_16_90=np.sum(jsd_m2_recover_16>=m2_BBH_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 - +# ## 3.1 BH capture & 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') @@ -498,10 +420,7 @@ ax[2].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_ref),bins=bins,alp 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') @@ -514,29 +433,22 @@ 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 +fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font) -t0_bem1_90=np.sum(jsd_t0_1>=t0_BBH_90) -t0_bem1_90 +fig.savefig('t0_ref.pdf') -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 +# Calculate the percentage of JSDs that are higher than noise benchmark. +t0_BBH_90=np.percentile(jsd_t0_BBH,90) +t0_1_90=np.sum(jsd_t0_1>=t0_BBH_90) +t0_4_90=np.sum(jsd_t0_4>=t0_BBH_90) +t0_8_90=np.sum(jsd_t0_8>=t0_BBH_90) +t0_16_90=np.sum(jsd_t0_16>=t0_BBH_90) -t0_bem16_90=np.sum(jsd_t0_16>=t0_BBH_90) -t0_bem16_90 +# ## 3.2 BH capture & its recovered BBH -# ## 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') @@ -549,10 +461,7 @@ ax[2].hist(jsd_t0_BBH,weights=weights_BBH,range=(0,max_jsd_t0_inj),bins=bins,alp 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}) @@ -565,41 +474,15 @@ 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 - +fig.text(0, 0.5, 'Fraction of injections', va='center', rotation='vertical',fontdict=font) +fig.savefig('t0_recover.pdf') +# Calculate the percentage of JSDs that are higher than noise benchmark. +t0_recover_1_90=np.sum(jsd_t0_recover_1>=t0_BBH_90) +t0_recover_4_90=np.sum(jsd_t0_recover_4>=t0_BBH_90) +t0_recover_8_90=np.sum(jsd_t0_recover_8>=t0_BBH_90) +t0_recover_16_90=np.sum(jsd_t0_recover_16>=t0_BBH_90) diff --git a/bilby/parameter_estimation_dynesty.py b/bilby/non-spinning_analysis.py old mode 100644 new mode 100755 similarity index 91% rename from bilby/parameter_estimation_dynesty.py rename to bilby/non-spinning_analysis.py index 41cab5d716609f7cc77fdd41d5ab8580648d4b8c..cc0c942ecf0b100d99ff0d73bf9702e0ca9d9d18 --- a/bilby/parameter_estimation_dynesty.py +++ b/bilby/non-spinning_analysis.py @@ -12,6 +12,7 @@ bilby.core.utils.setup_logger(outdir=outdir, label=label) np.random.seed(10000) +# Specify the waveform we use. nr_path = '../h_psi4/{}' waveforms_merge = { 1: "h_m1_L0.9_l2m2_r300.dat", @@ -31,12 +32,13 @@ ref_geocent_time = 1126259642.5 start_time = ref_geocent_time-duration/2.0 epoch = str(start_time) +# Set injection parameters. num_samples = 1 total_mass = 150 locations=(np.array([3.69]),np.array([-0.94]),np.array([1.54])) distances=np.array([4000.0]) - +# Generate BH capture signal. def generate_for_detector(source, ifos, sampling_frequency, epoch, distance, total_mass, ra, dec, psi): """ Generate an injection for a given waveform. @@ -101,7 +103,8 @@ for distance, location in zip(distances, np.vstack(locations).T): waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, epoch, distance, total_mass, *location) waveforms.append(waveform) - + +# The start time was specified when generating mock signal, while the merger time t0 and signal length could not be. We do the following process to make the signal have a start time of 1126259642.5s in GPS time, and a t0 of 0.22s. peak_index = waveforms[0]['signal']['H1'].index(max(waveforms[0]['signal']['H1'])) supposed_peak_index = int((0.5+0.25)/duration*256) @@ -110,8 +113,6 @@ delta_start_time = delta_peak/256 new_start_time = start_time + delta_start_time new_epoch = str(new_start_time) - - new_waveforms = [] for distance, location in zip(distances, np.vstack(locations).T): @@ -126,11 +127,9 @@ for distance, location in zip(distances, np.vstack(locations).T): new_waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, new_epoch, distance, total_mass, *location) new_waveforms.append(waveform) - -new_peak_index = new_waveforms[0]['signal']['H1'].index(max(new_waveforms[0]['signal']['H1'])) - +# Pad the waveform to fit the restrict of VItamin. def fix_waveform(ifos,num_samples,waveforms,delta_peak): fixed_waveforms = [] @@ -150,7 +149,7 @@ def fix_waveform(ifos,num_samples,waveforms,delta_peak): fixed_waveforms = fix_waveform(ifos_list,num_samples,waveforms,delta_peak) - +# Specify the model that we use to perform parameter estimation waveform_arguments = dict(waveform_approximant='IMRPhenomPv2', reference_frequency=20., minimum_frequency=20.) @@ -161,12 +160,13 @@ waveform_generator = bilby.gw.WaveformGenerator( waveform_arguments=waveform_arguments, start_time=ref_geocent_time - 0.5) - +# Set the detector network and the noise. ifos = bilby.gw.detector.InterferometerList(ifos_list) ifos.set_strain_data_from_power_spectral_densities( sampling_frequency=sampling_frequency, duration=duration, start_time=ref_geocent_time-duration/2.0) +# Set the priors. priors = bilby.gw.prior.BBHPriorDict() priors.pop('chirp_mass') priors.pop('mass_ratio') @@ -184,6 +184,7 @@ priors['geocent_time'] = bilby.core.prior.Uniform( name='geocent_time', latex_label='$t_c$', unit='$s$') +# Transfter signal in time domain to frequency domain, then inject it into the simulated detector noise. def fft_signal(signal): signal_fd = np.fft.rfft(signal)/Nt @@ -205,13 +206,11 @@ for det in ifos_list: start_time=start_time) k += 1 - +# Set the likelihood. likelihood = bilby.gw.GravitationalWaveTransient( interferometers=ifos, waveform_generator=waveform_generator,priors=priors) -#result = bilby.run_sampler( -# likelihood=likelihood, priors=priors, label=label,outdir=outdir,sampler='dynesty', -# npoints=1000) +# We use dynesty as the sampler. result = bilby.run_sampler( likelihood=likelihood, priors=priors, label=label,outdir=outdir,sampler='dynesty', nlive=1000, sample='rwalk',walks =100,nact=5,check_point_delta_t=1800,check_point_plot=True) diff --git a/bilby/spinning_analysis.py b/bilby/spinning_analysis.py new file mode 100755 index 0000000000000000000000000000000000000000..e50dce4ff7f89373d468f2d3614ed52694860151 --- /dev/null +++ b/bilby/spinning_analysis.py @@ -0,0 +1,216 @@ +import minke.sources +import lalsimulation +import lal +import numpy as np +import minke.distribution +import matplotlib.pyplot as plt +import bilby + +outdir = 'outdir_BH_encounter' +label = 'BH_encounter_0907' +bilby.core.utils.setup_logger(outdir=outdir, label=label) + +np.random.seed(10000) + +# Specify the waveform we use. +nr_path = '../h_psi4/{}' +waveforms_merge = { + 1: "h_m1_L0.9_l2m2_r300.dat", + 2: "h_m2_L0.87_l2m2_r300.dat", + 4: "h_m4_L0.5_l2m2_r300.dat", + 8: "h_m8_L0.35_l2m2_r280.dat", + 16: "h_m16_L0.18_l2m2_r300.dat" +} +nr_waveform = waveforms_merge[1] + +duration = 1 +sampling_frequency = 256 +Nt=duration*sampling_frequency +t0=0.22 + +ref_geocent_time = 1126259642.5 +start_time = ref_geocent_time-duration/2.0 +epoch = str(start_time) + +# Set injection parameters. +num_samples = 1 +total_mass = 150 +locations=(np.array([3.69]),np.array([-0.94]),np.array([1.54])) +distances=np.array([4000.0]) + +# Generate BH capture signal. +def generate_for_detector(source, ifos, sampling_frequency, epoch, distance, total_mass, ra, dec, psi): + """ + Generate an injection for a given waveform. + + Parameters + ---------- + source : ``minke.Source`` object + The source which should generate the waveform. + ifos : list + A list of interferometer initialisms, e.g. ['L1', 'H1'] + sampling_frequency : int + The sampling_frequency in hertz for the generated signal. + epoch : str + The epoch (start time) for the injection. + Note that this should be provided as a string to prevent overflows. + distance : float + The distance for the injection, in megaparsecs. + total_mass : float + The total mass for the injected signal. + ra : float + The right ascension of the source, in radians. + dec : float + The declination of the source, in radians. + psi : float + The polarisation angle of the source, in radians. + + Notes + ----- + This is very much a draft implementation, and there are a number of + things which should be tidied-up before this is moved into Minke, + including bundling total mass with the source. + """ + nr_waveform = source.datafile + + waveform = {} + waveform['signal'] = {} + waveform['times'] = {} + + for ifo in ifos: + + det = lalsimulation.DetectorPrefixToLALDetector(ifo) + hp, hx = source._generate(half=True, epoch=epoch, rate=sampling_frequency)[:2] + h_tot = lalsimulation.SimDetectorStrainREAL8TimeSeries(hp, hx, ra, dec, psi, det) + waveform['signal'][ifo] = h_tot.data.data.tolist() + waveform['times'][ifo] = np.linspace(0, len(h_tot.data.data)*h_tot.deltaT, len(h_tot.data.data)).tolist() + + return waveform + + +waveforms = [] +ifos_list = ['H1','L1','V1'] +for distance, location in zip(distances, np.vstack(locations).T): + + hyper_object = minke.sources.Hyperbolic( + datafile = nr_path.format(nr_waveform), + total_mass = total_mass, + distance = distance, + extraction=300 + ) + hyper_object.datafile = nr_waveform + + waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, epoch, distance, total_mass, *location) + waveforms.append(waveform) + + +# The start time was specified when generating mock signal, while the merger time t0 and signal length could not be. We do the following process to make the signal have a start time of 1126259642.5s in GPS time, and a t0 of 0.22s. +peak_index = waveforms[0]['signal']['H1'].index(max(waveforms[0]['signal']['H1'])) + +supposed_peak_index = int((0.5+0.25)/duration*256) +delta_peak = supposed_peak_index - peak_index +delta_start_time = delta_peak/256 +new_start_time = start_time + delta_start_time +new_epoch = str(new_start_time) + +new_waveforms = [] + +for distance, location in zip(distances, np.vstack(locations).T): + + hyper_object = minke.sources.Hyperbolic( + datafile = nr_path.format(nr_waveform), + total_mass = total_mass, + distance = distance, + extraction=300 + ) + hyper_object.datafile = nr_waveform + + new_waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, new_epoch, distance, total_mass, *location) + new_waveforms.append(waveform) + + +# Pad the waveform to fit the restrict of VItamin. +def fix_waveform(ifos,num_samples,waveforms,delta_peak): + + fixed_waveforms = [] + for i in range(num_samples): + fixed_waveform = {} + fixed_waveform['signal'] = {} + for ifo in ifos_list: + fixed_waveform['signal'][ifo] = waveforms[i]['signal'][ifo] + for j in range(delta_peak): + fixed_waveform['signal'][ifo] = [0] + fixed_waveform['signal'][ifo] + fixed_waveform['signal'][ifo] = fixed_waveform['signal'][ifo][0:256] + + fixed_waveforms.append(fixed_waveform) + + return fixed_waveforms + +fixed_waveforms = fix_waveform(ifos_list,num_samples,waveforms,delta_peak) + + +# Specify the model that we use to perform parameter estimation +waveform_arguments = dict(waveform_approximant='IMRPhenomPv2', + reference_frequency=20., minimum_frequency=20.) + +waveform_generator = bilby.gw.WaveformGenerator( + duration=duration, sampling_frequency=sampling_frequency, + frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole, + parameter_conversion=bilby.gw.conversion.convert_to_lal_binary_black_hole_parameters, + waveform_arguments=waveform_arguments, + start_time=ref_geocent_time - 0.5) + +# Set the detector network and the noise. +ifos = bilby.gw.detector.InterferometerList(ifos_list) +ifos.set_strain_data_from_power_spectral_densities( + sampling_frequency=sampling_frequency, duration=duration, + start_time=ref_geocent_time-duration/2.0) + +# Set the priors. +priors = bilby.gw.prior.BBHPriorDict() +priors.pop('chirp_mass') +priors.pop('mass_ratio') + +priors['mass_1'] = bilby.core.prior.Uniform(name='mass_1', minimum=30, maximum=160, unit='$M_{\\odot}$') +priors['mass_2'] = bilby.core.prior.Uniform(name='mass_2', minimum=30, maximum=160, unit='$M_{\\odot}$') +priors['luminosity_distance'] = bilby.core.prior.Uniform(name='luminosity_distance', minimum=1000, maximum=3000, unit='$Mpc_{\\odot}$') +priors['psi'] = bilby.core.prior.Uniform(name='psi', minimum=0.0, maximum=np.pi, boundary='periodic') + +priors['geocent_time'] = bilby.core.prior.Uniform( + minimum=ref_geocent_time + 0.15, + maximum=ref_geocent_time + 0.35, + name='geocent_time', latex_label='$t_c$', unit='$s$') + + +# Transfter signal in time domain to frequency domain, then inject it into the simulated detector noise. +def fft_signal(signal): + + signal_fd = np.fft.rfft(signal)/Nt + + return signal_fd + + +signal_fd_array=np.zeros((3,129)) +k = 0 +for ifo in ifos_list: + signal_fd_array[k,:] = fft_signal(fixed_waveforms[0]['signal'][ifo]) + k += 1 + +k = 0 +for det in ifos_list: + ifos[k].set_strain_data_from_frequency_domain_strain(signal_fd_array[k], + sampling_frequency=sampling_frequency, + duration=duration, + start_time=start_time) + k += 1 + +# Set the likelihood. +likelihood = bilby.gw.GravitationalWaveTransient( + interferometers=ifos, waveform_generator=waveform_generator,priors=priors) + +# We use dynesty as the sampler. +result = bilby.run_sampler( + likelihood=likelihood, priors=priors, label=label,outdir=outdir,sampler='dynesty', + nlive=1000, sample='rwalk',walks =100,nact=5,check_point_delta_t=1800,check_point_plot=True) + +result.plot_corner() diff --git a/vitamin/BH_capture_data_creation.ipynb b/vitamin/BH_capture_data_creation.ipynb deleted file mode 100644 index c502795f2eeb4d374483ddcb2da76e377cb21c8f..0000000000000000000000000000000000000000 --- a/vitamin/BH_capture_data_creation.ipynb +++ /dev/null @@ -1,907 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import minke.sources\n", - "import lalsimulation\n", - "import lal\n", - "import numpy as np\n", - "import minke.distribution\n", - "import matplotlib.pyplot as plt\n", - "import bilby\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "mass_ratio= 1\n", - "num_samples = 100" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "nr_path = './h_psi4/{}'\n", - "waveforms_merge = {\n", - " 1: \"h_m1_L0.9_l2m2_r300.dat\",\n", - " 2: \"h_m2_L0.87_l2m2_r300.dat\",\n", - " 4: \"h_m4_L0.5_l2m2_r300.dat\",\n", - " 8: \"h_m8_L0.35_l2m2_r280.dat\",\n", - " 16: \"h_m16_L0.18_l2m2_r300.dat\"\n", - "}\n", - "\n", - "extraction = {\n", - " 1: 300,\n", - " 2: 300,\n", - " 4: 300,\n", - " 8: 280,\n", - " 16: 300\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "nr_waveform = waveforms_merge[mass_ratio]\n", - "\n", - "duration = 1\n", - "sampling_frequency = 256\n", - "Nt=duration*sampling_frequency\n", - "\n", - "ref_geocent_time = 1126259642.5\n", - "start_time = ref_geocent_time-duration/2.0\n", - "epoch = str(start_time)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "distance_set = {\n", - " 1: 5000,\n", - " 4: 2000,\n", - " 8: 1500,\n", - " 16: 500\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "total_mass = 150\n", - "#locations=(np.array([0.014168722617660154]),np.array([0.40882164684030586]),np.array([3.0314003036051638]))\n", - "ra = np.random.uniform(0.89,0.89,num_samples)\n", - "dec = np.random.uniform(-0.94,-0.94,num_samples)\n", - "psi = np.random.uniform(1.54,1.54,num_samples)\n", - "locations = (ra,dec,psi)\n", - "distances = np.random.uniform(distance_set[mass_ratio], distance_set[mass_ratio], num_samples)\n", - "#m16 distances = np.random.uniform(500, 500, num_samples)\n", - "\n", - "#m8 distances = np.random.uniform(1500, 1500, num_samples)\n", - "\n", - "#m4 distances = np.random.uniform(2000, 2000, num_samples)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_for_detector(source, ifos, sampling_frequency, epoch, distance, total_mass, ra, dec, psi):\n", - " \"\"\"\n", - " Generate an injection for a given waveform.\n", - " \n", - " Parameters\n", - " ----------\n", - " source : ``minke.Source`` object\n", - " The source which should generate the waveform.\n", - " ifos : list\n", - " A list of interferometer initialisms, e.g. ['L1', 'H1']\n", - " sampling_frequency : int\n", - " The sampling_frequency in hertz for the generated signal.\n", - " epoch : str\n", - " The epoch (start time) for the injection.\n", - " Note that this should be provided as a string to prevent overflows.\n", - " distance : float\n", - " The distance for the injection, in megaparsecs.\n", - " total_mass : float\n", - " The total mass for the injected signal.\n", - " ra : float\n", - " The right ascension of the source, in radians.\n", - " dec : float\n", - " The declination of the source, in radians.\n", - " psi : float\n", - " The polarisation angle of the source, in radians.\n", - " \n", - " Notes\n", - " -----\n", - " This is very much a draft implementation, and there are a number of \n", - " things which should be tidied-up before this is moved into Minke,\n", - " including bundling total mass with the source.\n", - " \"\"\"\n", - " nr_waveform = source.datafile\n", - " \n", - " waveform = {}\n", - " waveform['signal'] = {}\n", - " waveform['times'] = {}\n", - " \n", - " for ifo in ifos:\n", - " \n", - " det = lalsimulation.DetectorPrefixToLALDetector(ifo)\n", - " hp, hx = source._generate(half=True, epoch=epoch, rate=sampling_frequency)[:2]\n", - " h_tot = lalsimulation.SimDetectorStrainREAL8TimeSeries(hp, hx, ra, dec, psi, det)\n", - " waveform['signal'][ifo] = h_tot.data.data.tolist()\n", - " waveform['times'][ifo] = np.linspace(0, len(h_tot.data.data)*h_tot.deltaT, len(h_tot.data.data)).tolist()\n", - " \n", - " \n", - " return waveform" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "waveforms = []\n", - "ifos_list = ['H1','L1','V1']\n", - "for distance, location in zip(distances, np.vstack(locations).T):\n", - " \n", - " hyper_object = minke.sources.Hyperbolic(\n", - " datafile = nr_path.format(nr_waveform),\n", - " total_mass = total_mass,\n", - " distance = distance,\n", - " extraction=extraction[mass_ratio]\n", - " )\n", - " hyper_object.datafile = nr_waveform\n", - " \n", - " waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, epoch, distance, total_mass, *location)\n", - " waveforms.append(waveform)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "238" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(waveforms[0]['signal']['H1'])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'waveform')" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(waveforms[0]['signal']['H1'])\n", - "plt.title('signal')\n", - "plt.xlabel('times')\n", - "plt.ylabel('waveform')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'waveform')" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(waveforms[0]['signal']['H1'])\n", - "plt.title('signal')\n", - "plt.xlabel('times')\n", - "plt.ylabel('waveform')" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "peak_index = waveforms[0]['signal']['H1'].index(max(waveforms[0]['signal']['H1']))\n", - " \n", - "supposed_peak_index = int((0.5+0.22)/duration*sampling_frequency)\n", - "delta_peak = supposed_peak_index - peak_index\n", - "delta_start_time = delta_peak/Nt\n", - "new_start_time = start_time + delta_start_time\n", - "new_epoch = str(new_start_time)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "148" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "peak_index" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "new_waveforms = []\n", - "\n", - "for distance, location in zip(distances, np.vstack(locations).T):\n", - " \n", - " hyper_object = minke.sources.Hyperbolic(\n", - " datafile = nr_path.format(nr_waveform),\n", - " total_mass = total_mass,\n", - " distance = distance,\n", - " extraction=extraction[mass_ratio]\n", - " )\n", - " hyper_object.datafile = nr_waveform\n", - " \n", - " new_waveform = generate_for_detector(hyper_object, ifos_list, sampling_frequency, new_epoch, distance, total_mass, *location)\n", - " new_waveforms.append(new_waveform)\n", - " \n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "new_peak_index = new_waveforms[0]['signal']['H1'].index(max(new_waveforms[0]['signal']['H1']))" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "148" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_peak_index" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "def fix_waveform(ifos,num_samples,new_waveforms,delta_peak):\n", - " \n", - " fixed_waveforms = []\n", - " for i in range(num_samples):\n", - " fixed_waveform = {}\n", - " fixed_waveform['signal'] = {}\n", - " for ifo in ifos_list: \n", - " peak_index = waveforms[i]['signal'][ifo].index(max(waveforms[i]['signal'][ifo]))\n", - " new_peak_index = new_waveforms[i]['signal'][ifo].index(max(new_waveforms[i]['signal'][ifo]))\n", - " if new_peak_index > peak_index:\n", - " new_waveforms[i]['signal'][ifo] = new_waveforms[i]['signal'][ifo][new_peak_index-peak_index:]\n", - " if new_peak_index < peak_index:\n", - " for i in range(peak_index-new_peak_index):\n", - " new_waveforms[i]['signal'][ifo] = [0] + new_waveforms[i]['signal'][ifo] \n", - " \n", - " \n", - " fixed_waveform['signal'][ifo] = new_waveforms[i]['signal'][ifo] \n", - " for j in range(delta_peak):\n", - " fixed_waveform['signal'][ifo] = [0] + fixed_waveform['signal'][ifo] \n", - " for k in range(Nt-len(fixed_waveform['signal'][ifo])):\n", - " fixed_waveform['signal'][ifo] = fixed_waveform['signal'][ifo] + [0] \n", - " fixed_waveform['signal'][ifo] = fixed_waveform['signal'][ifo][0:Nt] \n", - " \n", - " fixed_waveforms.append(fixed_waveform)\n", - " \n", - " return fixed_waveforms \n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "fixed_waveforms = fix_waveform(ifos_list,num_samples,new_waveforms,delta_peak)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "times = np.linspace(start_time, start_time+duration, Nt)\n", - "plt.plot(times,fixed_waveforms[0]['signal']['H1'])\n", - "plt.xlabel('GPS time[s]', fontdict={'family':'Times New Roman', 'size':18})\n", - "plt.ylabel('strain', fontdict={'family':'Times New Roman', 'size':18})\n", - "plt.grid(color=\"k\", linestyle=\":\")\n", - "plt.savefig('noisefree_BE.pdf')" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/weichangfeng/.local/lib/python3.8/site-packages/numpy/core/_asarray.py:83: ComplexWarning: Casting complex values to real discards the imaginary part\n", - " return array(a, dtype, copy=False, order=order)\n" - ] - }, - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'Amplitude')" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "signal_fd = np.fft.rfft(fixed_waveforms[0]['signal']['H1'])/Nt\n", - "frequency=np.linspace(0,int(sampling_frequency/2+1),int(sampling_frequency/2+1))\n", - "plt.plot(frequency,signal_fd)\n", - "plt.axvline(129,color='b')\n", - "plt.xlabel('Frequency[Hz]', fontdict={'family':'Times New Roman', 'size':18})\n", - "plt.ylabel('Amplitude', fontdict={'family':'Times New Roman', 'size':18})" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "256" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(fixed_waveforms[0]['signal']['H1'])" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "184" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fixed_peak_index = fixed_waveforms[0]['signal']['H1'].index(max(fixed_waveforms[0]['signal']['H1']))\n", - "fixed_peak_index" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "np.random.seed(10000)\n", - "ifos={}\n", - "\n", - "for i in range(num_samples):\n", - " ifos[i] = bilby.gw.detector.InterferometerList(ifos_list)\n", - " ifos[i].set_strain_data_from_power_spectral_densities(\n", - " sampling_frequency=sampling_frequency, duration=duration,\n", - " start_time=ref_geocent_time-duration/2.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "def whiten_signal(signal,ifo):\n", - " \n", - " signal_fd = np.fft.rfft(signal)/Nt\n", - " \n", - " whitened_signal_fd = signal_fd/ifo.amplitude_spectral_density_array\n", - " whitened_signal_td = np.sqrt(2.0*Nt)*np.fft.irfft(whitened_signal_fd) + 1.0*np.random.randn(int(Nt))\n", - " \n", - " return whitened_signal_td" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "np.random.seed(10000)\n", - "whitened_signal_td_array=np.zeros((num_samples,3,int(Nt)))\n", - "\n", - "for i in range(num_samples):\n", - " k = 0\n", - " for ifo in ifos_list:\n", - " whitened_signal_td_array[i][k,:] = whiten_signal(fixed_waveforms[i]['signal'][ifo],ifos[i][k]) \n", - " k += 1\n" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(times,whitened_signal_td_array[0][0])\n", - "plt.xlabel('GPS time[s]', fontdict={'family':'Times New Roman', 'size':18})\n", - "plt.ylabel('strain', fontdict={'family':'Times New Roman', 'size':18})\n", - "plt.grid(color=\"k\", linestyle=\":\")\n", - "plt.savefig('noisy_BE.pdf')" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "import h5py\n", - "\n", - "f1 = h5py.File('data_0.h5py','r')\n", - "name_list=[]\n", - "#shape_list=[]\n", - "#type_list=[]\n", - "data_set_list=[]\n", - "\n", - "for name in f1:\n", - " name_list.append(name)\n", - " #shape_list.append(f2[f'{name}'].shape)\n", - " #type_list.append(f2[f'{name}'].dtype)\n", - " data_set_list.append(f1[f'{name}'])\n", - " #print(y)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "m2=total_mass/(mass_ratio+1)\n", - "m1=total_mass-m2" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01],\n", - " [ 7.50e+01, 7.50e+01, 5.00e+03, 2.20e-01, 1.54e+00, 8.90e-01,\n", - " -9.40e-01]])" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x_data_sum = np.zeros((num_samples,7))\n", - "for i in range(num_samples):\n", - " x_data_sum[i] = [m1,m2,distance_set[mass_ratio],0.22,locations[2][i],locations[0][i],locations[1][i]]\n", - "x_data_sum" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(num_samples):\n", - " \n", - " with h5py.File(f'data_20211013{i}.h5py','w') as f1:\n", - " \n", - " for k in range(len(name_list)):\n", - " d = f1.create_dataset(name_list[k],data=data_set_list[k])\n", - " \n", - "\n", - " \n", - " del f1['x_data']\n", - " del f1['y_data_noisy']\n", - " \n", - " \n", - " d1 = f1.create_dataset('x_data',data = x_data_sum[i])\n", - " d2 = f1.create_dataset('y_data_noisy',data = whitened_signal_td_array[i])\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/vitamin/VItamin_model/checkpoint b/vitamin/VItamin_model/checkpoint new file mode 100755 index 0000000000000000000000000000000000000000..febd7d546081c498d644978b31e8c836a8931736 --- /dev/null +++ b/vitamin/VItamin_model/checkpoint @@ -0,0 +1,2 @@ +model_checkpoint_path: "model.ckpt" +all_model_checkpoint_paths: "model.ckpt" diff --git a/vitamin/VItamin_model/model.ckpt.data-00000-of-00002 b/vitamin/VItamin_model/model.ckpt.data-00000-of-00002 new file mode 100755 index 0000000000000000000000000000000000000000..59a4d7933e75e9ef9e377f2bff563f606f78e9ef Binary files /dev/null and b/vitamin/VItamin_model/model.ckpt.data-00000-of-00002 differ diff --git a/vitamin/VItamin_model/model.ckpt.data-00001-of-00002 b/vitamin/VItamin_model/model.ckpt.data-00001-of-00002 new file mode 100755 index 0000000000000000000000000000000000000000..76e775729f1f8c3298c132afa25f74064805218a Binary files /dev/null and b/vitamin/VItamin_model/model.ckpt.data-00001-of-00002 differ diff --git a/vitamin/VItamin_model/model.ckpt.index b/vitamin/VItamin_model/model.ckpt.index new file mode 100755 index 0000000000000000000000000000000000000000..541f1f8b43e77a739ea9af40c829498d775443a6 Binary files /dev/null and b/vitamin/VItamin_model/model.ckpt.index differ