Commit 30f0abbd authored by Marc Arene's avatar Marc Arene
Browse files

using ext_analysis_dict

parent 6a27b6f7
......@@ -81,13 +81,6 @@ if __name__=='__main__':
conf.ifos = config_dict['analysis']['ifos'].split(',')
if set.intersection(set(ifos_possible), set(conf.ifos)) != set(conf.ifos):
raise ValueError("the '--ifos' option was wrongly set, you must choose between {}. Example: '--ifos=H1,V1'. ".format(ifos_possible))
conf.approximant = config_dict['analysis']['approx']
conf.minimum_frequency = config_dict['analysis']['minimum_frequency']
conf.maximum_frequency = config_dict['analysis']['maximum_frequency']
conf.reference_frequency = config_dict['analysis']['reference_frequency']
conf.roq = config_dict['analysis']['roq']
if conf.roq:
conf.roq_b_matrix_directory = config_dict['analysis']['roq_b_matrix_directory']
conf.psd = config_dict['analysis']['psd']
conf.dlogL = config_dict['analysis']['dlogl']
conf.param_indices = [int(i) for i in list(config_dict['analysis']['param_indices'].split(','))]
......@@ -147,8 +140,8 @@ if __name__=='__main__':
raise ValueError('1 is param_indices => you cannot marginalize over phase and estimate this parameter at the same time !')
outdir += 'phase_marginalization/'
approx_suffix = conf.approximant
if conf.roq and conf.approximant == 'IMRPhenomPv2':
approx_suffix = config_dict['analysis']['approximant']
if config_dict['analysis']['roq'] and config_dict['analysis']['approximant'] == 'IMRPhenomPv2':
approx_suffix += '_ROQ'
outdir += approx_suffix + '/'
......@@ -181,16 +174,18 @@ if __name__=='__main__':
# SET THE INJECTION PARAMETERS
# SET THE INJECTION PARAMETERS AND THE ANALYSIS PARAMETERS
injection_parameters = set_inj.ini_file_to_dict(opts.inj_file)
pu.save_dict_to_json(injection_parameters, outdir + 'injection_parameters.json')
print("\nInjected parameters derived from {} are:".format(opts.inj_file))
pu.print_dict(injection_parameters)
minimum_frequency = conf.minimum_frequency
maximum_frequency_ifo = conf.maximum_frequency_ifo
duration = conf.duration
sampling_frequency = conf.sampling_frequency
start_time = conf.start_time
ext_analysis_dict = set_inj.compute_extended_analysis_dict(injection_parameters['mass_1'], injection_parameters['mass_2'], injection_parameters['geocent_time'], injection_parameters['chirp_mass'], **config_dict['analysis'])
pu.save_dict_to_json(ext_analysis_dict, outdir + 'ext_analysis_dict.json')
print("\nAnalysis parameters derived from the component masses are:")
pu.print_dict(ext_analysis_dict)
start_time = ext_analysis_dict['start_time']
# import IPython; IPython.embed(); sys.exit()
......@@ -198,33 +193,33 @@ if __name__=='__main__':
interferometers = bilby.gw.detector.InterferometerList(conf.ifos)
# The minimun frequency for each interferometer needs to be set if we want the strain derived from the psd to start being non zero at that frequency and not at the default one which is 20Hz
for ifo in interferometers:
ifo.minimum_frequency = minimum_frequency
ifo.maximum_frequency = maximum_frequency_ifo
ifo.minimum_frequency = ext_analysis_dict['minimum_frequency']
ifo.maximum_frequency = ext_analysis_dict['maximum_frequency_ifo']
# The following line is called automatically when setting the PSDs, which we donnot do here hence the line.
# Stangely however, in bilby, the `Interferometer` class does not have `duration` and `sampling_frequency` arguments when the `InterferometerStrainData` and the `InterferometerList` classes do. Hence one needs to set those arguments for the list of `InterferometerStrainData` so that the `InterferometerList` inherits from them. The values will be inherited from the first one in the list...
# Why do `interferometers.duration` and `interferometers.sampling_frequency` need to be set ? => Because I use them when creating my waveform_generator in bilby_wavefor
ifo.strain_data.duration = duration
ifo.strain_data.sampling_frequency = sampling_frequency
ifo.strain_data.duration = ext_analysis_dict['duration']
ifo.strain_data.sampling_frequency = ext_analysis_dict['sampling_frequency']
ifo.strain_data.start_time = start_time
# SET THEIR POWER SPECTRAL DENSITIES
# This function does not interpolate the psd
set_psds.main(interferometers, opt_psd=conf.psd, sampling_frequency=sampling_frequency, duration=duration, start_time=start_time)
set_psds.main(interferometers, opt_psd=conf.psd, sampling_frequency=ext_analysis_dict['sampling_frequency'], duration=ext_analysis_dict['duration'], start_time=start_time)
# SET NOISE STRAIN DATA FROM PSD
interferometers.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency,
duration=duration,
sampling_frequency=ext_analysis_dict['sampling_frequency'],
duration=ext_analysis_dict['duration'],
start_time=start_time)
# WAVEFORM GENERATION
waveform_arguments = {}
waveform_arguments['minimum_frequency'] = injection_parameters['meta']['minimum_frequency']
waveform_arguments['waveform_approximant'] = injection_parameters['meta']['approximant']
waveform_arguments['reference_frequency'] = injection_parameters['meta']['reference_frequency']
waveform_arguments['maximum_frequency'] = injection_parameters['meta']['maximum_frequency_injected_waveform']
waveform_arguments['minimum_frequency'] = ext_analysis_dict['minimum_frequency']
waveform_arguments['waveform_approximant'] = ext_analysis_dict['approximant']
waveform_arguments['reference_frequency'] = ext_analysis_dict['reference_frequency']
waveform_arguments['maximum_frequency'] = ext_analysis_dict['maximum_frequency_injected_waveform']
template_ifos_injected = bilby_wv.WaveForm_ThreeDetectors(injection_parameters, interferometers, waveform_arguments)
# INJECT TEMPLATE INTO NOISE STRAIN DATA
......@@ -234,7 +229,7 @@ if __name__=='__main__':
interferometers[i].fd_strain = interferometers[i].strain_data.frequency_domain_strain
# COMPUTE AND PRINT SNR
waveform_arguments['maximum_frequency'] = injection_parameters['meta']['maximum_frequency_search_waveform']
waveform_arguments['maximum_frequency'] = ext_analysis_dict['maximum_frequency_search_waveform']
template_ifos = bilby_wv.WaveForm_ThreeDetectors(injection_parameters, interferometers, waveform_arguments)
logL, Snr, opt_snr_Best = logL_snr.main(template_ifos, interferometers, True)
......@@ -277,34 +272,34 @@ if __name__=='__main__':
# ROQ Basis used?
if conf.roq:
if injection_parameters['meta']['approximant'] != 'IMRPhenomPv2':
raise ValueError("Need to set approximant to IMRPhenomPv2 to work with the ROQ basis, approximant here is {}".format(injection_parameters['meta']['approximant']))
if config_dict['analysis']['roq']:
if ext_analysis_dict['approximant'] != 'IMRPhenomPv2':
raise ValueError("Need to set approximant to IMRPhenomPv2 to work with the ROQ basis, approximant here is {}".format(ext_analysis_dict['approximant']))
scale_factor = injection_parameters['roq']['scale_factor']
roq_directory = injection_parameters['roq']['directory']
scale_factor = ext_analysis_dict['roq']['scale_factor']
roq_directory = ext_analysis_dict['roq']['directory']
# Load in the pieces for the linear part of the ROQ. Note you will need to
freq_nodes_linear = np.load(roq_directory + "fnodes_linear.npy") * scale_factor
# Load in the pieces for the quadratic part of the ROQ
freq_nodes_quadratic = np.load(roq_directory + "fnodes_quadratic.npy") * scale_factor
# Load the parameters describing the valid parameters for the basis.
params = injection_parameters['roq']['rescaled_params'].copy()
params = ext_analysis_dict['roq']['rescaled_params'].copy()
roq_outdir = '../.ROQ_weights/' + inj_name + '/' + outdir_psd
pu.mkdirs(roq_outdir)
weights_file_path_no_format = roq_outdir + '{:.0f}Hz_{:.0f}Hz_{:.0f}Hz_{:.0f}s_weights'.format(params['flow'], injection_parameters['meta']['maximum_frequency_ifo'], injection_parameters['meta']['maximum_frequency_injected_waveform'], params['seglen'])
weights_file_path_no_format = roq_outdir + '{:.0f}Hz_{:.0f}Hz_{:.0f}Hz_{:.0f}s_weights'.format(params['flow'], ext_analysis_dict['maximum_frequency_ifo'], ext_analysis_dict['maximum_frequency_injected_waveform'], params['seglen'])
weight_format = 'npz'
weights_file_path = weights_file_path_no_format + f'.{weight_format}'
# make ROQ waveform generator
search_waveform_generator = bilby.gw.waveform_generator.WaveformGenerator(
duration=duration, sampling_frequency=sampling_frequency,
duration=ext_analysis_dict['duration'], sampling_frequency=ext_analysis_dict['sampling_frequency'],
frequency_domain_source_model=bilby.gw.source.binary_neutron_star_roq,
waveform_arguments=dict(
frequency_nodes_linear=freq_nodes_linear,
frequency_nodes_quadratic=freq_nodes_quadratic,
reference_frequency=injection_parameters['meta']['reference_frequency'], waveform_approximant=injection_parameters['meta']['approximant']),
reference_frequency=ext_analysis_dict['reference_frequency'], waveform_approximant=ext_analysis_dict['approximant']),
parameter_conversion=bilby.gw.conversion.convert_to_lal_binary_neutron_star_parameters)
# Here we add constraints on chirp mass and mass ratio to the prior, these are
......@@ -332,7 +327,7 @@ if __name__=='__main__':
basis_matrix_quadratic = np.load(roq_directory + "B_quadratic.npy").T
# Redoing here a bit what's already being done in set_inj because `bilby.gw.likelihood.ROQGravitationalWaveTransient()` does not accept dictionnary for roq_params...
roq_params_ndarray = np.genfromtxt(injection_parameters['roq']['params_path'], names=True)
roq_params_ndarray = np.genfromtxt(ext_analysis_dict['roq']['params_path'], names=True)
roq_params_ndarray = roqu.rescale_params(roq_params_ndarray, scale_factor)
# roq_params_ndarray = None
......
[analysis]
# Interferometers to run the analysis on.
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
......@@ -91,39 +91,49 @@ def compute_time_from_flow_to_fhigh_3p5PN(f_low, f_high, mass_1, mass_2):
return tc_flow - tc_fhigh
def ini_file_to_dict(file_path='../examples/GW170817.ini'):
config = ConfigParser()
config.read(file_path)
injection_parameters = pu.config_parser_to_dict(config)['parameters']
injection_parameters = conv.generate_mass_parameters(injection_parameters)
# injection_parameters['reduced_mass'] = (injection_parameters['mass_1'] * injection_parameters['mass_2']) / (injection_parameters['mass_1'] + injection_parameters['mass_2'])
injection_parameters['reduced_mass'] = paru.component_masses_to_reduced_mass(injection_parameters['mass_1'], injection_parameters['mass_2'])
# These two lines have been added to be able to plot the injected value on phi_c on the corner plots. Otherwise the `phi_c` and `tc_3p5PN` keys are not used in the code.
injection_parameters['phi_c'] = (injection_parameters['phase'] * 2) % (2*np.pi)
# injection_parameters['tc_3p5PN'] = tc_3p5PN
return injection_parameters
def compute_extended_analysis_dict(mass_1, mass_2, geocent_time, chirp_mass, **analysis_kwargs):
approximant = analysis_kwargs['approximant']
roq = analysis_kwargs['roq']
roq_directory = analysis_kwargs['roq_b_matrix_directory']
minimum_frequency = analysis_kwargs['minimum_frequency']
reference_frequency = analysis_kwargs['reference_frequency']
maximum_frequency = analysis_kwargs['maximum_frequency']
ext_analysis_dict = {}
# approximant = 'TaylorF2'
# approximant = 'SpinTaylorF2'
# approximant = 'IMRPhenomD'
# approximant = 'IMRPhenomPv2'
# approximant = 'IMRPhenomPv2_NRTidal'
# Set the duration and sampling frequency of the data segment that we're going
# to inject the signal into. For the
# TaylorF2 waveform, we cut the signal close to the isco frequency
m1 = injection_parameters['mass_1']
m2 = injection_parameters['mass_2']
minimum_frequency = conf.minimum_frequency
tc_3p5PN = ComputeChirpTime3p5PN(minimum_frequency, m1, m2)
tc_3p5PN = ComputeChirpTime3p5PN(minimum_frequency, mass_1, mass_2)
# We integrate the signal up to the frequency of the "Innermost stable circular orbit (ISCO)"
R_isco = 6. # Orbital separation at ISCO, in geometric units. 6M for PN ISCO; 2.8M for EOB
m1_min = 1
m2_min = 1
# approximant = 'TaylorF2'
# approximant = 'SpinTaylorF2'
# approximant = 'IMRPhenomD'
# approximant = 'IMRPhenomPv2'
# approximant = 'IMRPhenomPv2_NRTidal'
f_ISCO = Compute_fISCO(R_isco, m1, m2)
f_ISCO = Compute_fISCO(R_isco, mass_1, mass_2)
f_ISCO_run = Compute_fISCO(R_isco, m1_min, m2_min)
# f_ISCO = Compute_LAL_fISCO(m1 * LAL_MSUN_SI, m2 * LAL_MSUN_SI)
# f_ISCO = Compute_LAL_fISCO(mass_1 * LAL_MSUN_SI, mass_2 * LAL_MSUN_SI)
# f_ISCO_run = Compute_LAL_fISCO(m1_min * LAL_MSUN_SI, m2_min * LAL_MSUN_SI)
if conf.approximant == 'TaylorF2':
if approximant == 'TaylorF2':
f_high = f_ISCO
f_high_run = f_ISCO_run
maximum_frequency_injected_waveform = 0
......@@ -132,56 +142,55 @@ def ini_file_to_dict(file_path='../examples/GW170817.ini'):
maximum_frequency_ifo = f_high_run
sampling_frequency = 2 * f_high_run
duration = tc_3p5PN + 2
reference_frequency = 0
elif conf.approximant == 'IMRPhenomPv2' and conf.roq:
# reference_frequency = 0
elif approximant == 'IMRPhenomPv2' and roq:
# cf:
# - https://lscsoft.docs.ligo.org/lalsuite/lalsimulation/group___l_a_l_sim_i_m_r_phenom__c.html#gad3f98acfe9527259a7f73a8ef69a2f7b
# - line 103 of https://lscsoft.docs.ligo.org/lalsuite/lalsimulation/_l_a_l_sim_i_m_r_phenom_d_8c_source.html#l00103
roq_directory = conf.roq_b_matrix_directory
params_best_basis, scale_factor = roqu.get_best_segment_params_from_chirp_mass(injection_parameters['chirp_mass'], roq_directory=roq_directory)
params_best_basis, scale_factor = roqu.get_best_segment_params_from_chirp_mass(chirp_mass, roq_directory=roq_directory)
injection_parameters['roq'] = {}
injection_parameters['roq']['directory'] = roq_directory + str(int(params_best_basis['seglen'])) + 's/'
injection_parameters['roq']['params_path'] = injection_parameters['roq']['directory'] + 'params.dat'
ext_analysis_dict['roq'] = {}
ext_analysis_dict['roq']['directory'] = roq_directory + str(int(params_best_basis['seglen'])) + 's/'
ext_analysis_dict['roq']['params_path'] = ext_analysis_dict['roq']['directory'] + 'params.dat'
rescaled_params = roqu.rescale_params(params_best_basis, scale_factor)
# minimum_frequency = max(conf.minimum_frequency, rescaled_params['flow'])
# maximum_frequency_ifo = min(int(conf.maximum_frequency), int(rescaled_params['fhigh']))
# minimum_frequency = max(minimum_frequency, rescaled_params['flow'])
# maximum_frequency_ifo = min(int(maximum_frequency), int(rescaled_params['fhigh']))
# sampling_frequency = 2 * maximum_frequency_ifo
# tc_3p5PN = ComputeChirpTime3p5PN(minimum_frequency, m1, m2)
# tc_3p5PN = ComputeChirpTime3p5PN(minimum_frequency, mass_1, mass_2)
# # int() function because we need to make sure that sampling_freq * duration = integer to the 14 decimal precision
# duration = min(int(tc_3p5PN + 2 + 1), int(rescaled_params['seglen']))
# maximum_frequency_injected_waveform = rescaled_params['fhigh']
# maximum_frequency_search_waveform = maximum_frequency_ifo
# reference_frequency = conf.reference_frequency * scale_factor
# reference_frequency = reference_frequency * scale_factor
# Settings which give me consistent results between the classic and the roq compute logL
minimum_frequency = rescaled_params['flow']
maximum_frequency_injected_waveform = rescaled_params['fhigh']
# maximum_frequency_injected_waveform = min(2048, rescaled_params['fhigh'])
maximum_frequency_ifo = min(conf.maximum_frequency, rescaled_params['fhigh'])
maximum_frequency_ifo = min(maximum_frequency, rescaled_params['fhigh'])
maximum_frequency_search_waveform = maximum_frequency_injected_waveform
# maximum_frequency_search_waveform = maximum_frequency_ifo
# maximum_frequency_ifo = rescaled_params['fhigh']
sampling_frequency = 2 * max(conf.maximum_frequency, rescaled_params['fhigh'])
sampling_frequency = 2 * max(maximum_frequency, rescaled_params['fhigh'])
duration = rescaled_params['seglen']
reference_frequency = conf.reference_frequency * scale_factor
reference_frequency = reference_frequency * scale_factor
injection_parameters['roq']['params'] = params_best_basis
injection_parameters['roq']['rescaled_params'] = rescaled_params
injection_parameters['roq']['scale_factor'] = scale_factor
ext_analysis_dict['roq']['params'] = params_best_basis
ext_analysis_dict['roq']['rescaled_params'] = rescaled_params
ext_analysis_dict['roq']['scale_factor'] = scale_factor
tc_3p5PN = ComputeChirpTime3p5PN(minimum_frequency, m1, m2)
tc_3p5PN = ComputeChirpTime3p5PN(minimum_frequency, mass_1, mass_2)
LAL_MTSUN_SI = 4.925491025543575903411922162094833998e-6
f_CUT = 0.2
M_sec = (m1 + m2) * LAL_MTSUN_SI
M_sec = (mass_1 + mass_2) * LAL_MTSUN_SI
M_min_sec = (m1_min + m2_min) * LAL_MTSUN_SI
f_high = f_CUT / M_sec
f_high_run = f_CUT / M_min_sec
......@@ -191,26 +200,21 @@ def ini_file_to_dict(file_path='../examples/GW170817.ini'):
# - line 103 of https://lscsoft.docs.ligo.org/lalsuite/lalsimulation/_l_a_l_sim_i_m_r_phenom_d_8c_source.html#l00103
LAL_MTSUN_SI = 4.925491025543575903411922162094833998e-6
f_CUT = 0.2
M_sec = (m1 + m2) * LAL_MTSUN_SI
M_sec = (mass_1 + mass_2) * LAL_MTSUN_SI
M_min_sec = (m1_min + m2_min) * LAL_MTSUN_SI
f_high = f_CUT / M_sec
f_high_run = f_CUT / M_min_sec
maximum_frequency_ifo = min(conf.maximum_frequency, f_high_run)
maximum_frequency_ifo = min(maximum_frequency, f_high_run)
maximum_frequency_injected_waveform = maximum_frequency_ifo
maximum_frequency_search_waveform = maximum_frequency_ifo
sampling_frequency = 2 * maximum_frequency_ifo
duration = 64
reference_frequency = conf.reference_frequency
# import IPython; IPython.embed();
# maximum_frequency_ifo = min(4096 * 4, f_high_run)
# maximum_frequency_ifo = max(4096, f_high)
# sampling_frequency = 4096
# sampling_frequency = 4397
start_time = injection_parameters['geocent_time'] - tc_3p5PN
# breakpoint()
meta_params = dict(
start_time = geocent_time - tc_3p5PN
ext_analysis_dict.update(
minimum_frequency = minimum_frequency,
maximum_frequency_injected_waveform = maximum_frequency_injected_waveform,
maximum_frequency_search_waveform = maximum_frequency_search_waveform,
......@@ -222,40 +226,11 @@ def ini_file_to_dict(file_path='../examples/GW170817.ini'):
start_time = start_time,
f_high = f_high,
f_high_run = f_high_run,
approximant = conf.approximant,
approximant = approximant,
reference_frequency = reference_frequency
)
injection_parameters['meta'] = meta_params
# conf.waveform_arguments = {}
# conf.waveform_arguments['minimum_frequency'] = minimum_frequency
# conf.waveform_arguments['waveform_approximant'] = conf.approximant
# conf.waveform_arguments['reference_frequency'] = reference_frequency
# conf.waveform_arguments['maximum_frequency'] = None
conf.minimum_frequency = minimum_frequency
conf.maximum_frequency_injected_waveform = maximum_frequency_injected_waveform
conf.maximum_frequency_search_waveform = maximum_frequency_search_waveform
conf.maximum_frequency_ifo = maximum_frequency_ifo
conf.reference_frequency = reference_frequency
conf.sampling_frequency = sampling_frequency
conf.duration = duration
conf.tc_3p5PN = tc_3p5PN
conf.start_time = start_time
conf.f_high = f_high
conf.f_high_run = f_high_run
# These two lines have been added to be able to plot the injected value on phi_c on the corner plots. Otherwise the `phi_c` and `tc_3p5PN` keys are not used in the code.
injection_parameters['phi_c'] = (injection_parameters['phase'] * 2) % (2*np.pi)
injection_parameters['tc_3p5PN'] = tc_3p5PN
return injection_parameters
return ext_analysis_dict
if __name__=='__main__':
......
......@@ -11,15 +11,6 @@ import Library.bilby_detector as bilby_det
import Library.config as conf
def get_source_frame_polarizations(parameters, interferometers, waveform_arguments):
# breakpoint()
# Fixed arguments passed into the source model. The analysis starts at 40 Hz.
# if 'meta' in parameters.keys():
# # waveform_arguments = dict(waveform_approximant=parameters['meta']['approximant'], reference_frequency=parameters['meta']['reference_frequency'], minimum_frequency=minimum_frequency, maximum_frequency=0)
# waveform_arguments = dict(waveform_approximant=parameters['meta']['approximant'], reference_frequency=parameters['meta']['reference_frequency'], minimum_frequency=minimum_frequency, maximum_frequency=parameters['meta']['maximum_frequency_generated_waveform'])
# else:
# waveform_arguments = dict(waveform_approximant=conf.approximant, reference_frequency=conf.reference_frequency, minimum_frequency=conf.minimum_frequency, maximum_frequency=conf.maximum_frequency_ifo)
# Create the waveform_generator using a LAL Binary Neutron Star source function
waveform_generator = bilby.gw.WaveformGenerator(
duration=interferometers.duration,
......
[analysis]
# Interferometers to run the analysis on.
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 20.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
[analysis]
ifos = H1,L1,V1
approx = IMRPhenomPv2
approximant = IMRPhenomPv2
minimum_frequency = 30.0
maximum_frequency = 2048.0
reference_frequency = 20.0
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment