reference_psd_filenames_by_process_id = ligolw_bayestar.psd_filenames_by_process_id_for_xmldoc(xmldoc) @memoized def reference_psds_for_filename(filename): xmldoc = ligolw_utils.load_filename( filename, contenthandler=lal.series.PSDContentHandler) psds = lal.series.read_psd_xmldoc(xmldoc) return dict( (key, timing.InterpolatedPSD(filter.abscissa(psd), psd.data.data)) for key, psd in psds.iteritems() if psd is not None) def reference_psd_for_ifo_and_filename(ifo, filename): return reference_psds_for_filename(filename)[ifo] f_low = opts.f_low approximant, amplitude_order, phase_order = timing.get_approximant_and_orders_from_string(opts.waveform) count_sky_maps_failed = 0 # Loop over all coinc_event <-> sim_inspiral coincs. for coinc, sngl_inspirals in ligolw_bayestar.coinc_and_sngl_inspirals_for_xmldoc(xmldoc): instruments = set(sngl_inspiral.ifo for sngl_inspiral in sngl_inspirals) # Look up PSDs log.info('%s:reading PSDs', coinc.coinc_event_id) psds = tuple( reference_psd_for_ifo_and_filename(sngl_inspiral.ifo, reference_psd_filenames_by_process_id[sngl_inspiral.process_id]) for sngl_inspiral in sngl_inspirals)
# Unpack some values from the row in the table. m1 = sim_inspiral.mass1 m2 = sim_inspiral.mass2 f_low = sim_inspiral.f_lower if opts.f_low is None else opts.f_low DL = sim_inspiral.distance ra = sim_inspiral.longitude dec = sim_inspiral.latitude inc = sim_inspiral.inclination phi = sim_inspiral.coa_phase psi = sim_inspiral.polarization epoch = lal.LIGOTimeGPS( sim_inspiral.geocent_end_time, sim_inspiral.geocent_end_time_ns) gmst = lal.GreenwichMeanSiderealTime(epoch) waveform = sim_inspiral.waveform if opts.waveform is None else opts.waveform approximant, amplitude_order, phase_order = \ timing.get_approximant_and_orders_from_string(waveform) # Pre-evaluate some trigonometric functions that we will need. u = np.cos(inc) u2 = np.square(u) # Signal models for each detector. signal_models = [ timing.SignalModel(m1, m2, psds[ifo], f_low, approximant, amplitude_order, phase_order) for ifo in opts.detector] # Get SNR=1 horizon distances for each detector. horizons = np.asarray([signal_model.get_horizon_distance() for signal_model in signal_models])
import scipy.special import itertools from lalinference.bayestar import filter from lalinference.bayestar import timing def abs2(x): return np.square(np.real(x)) + np.square(np.imag(x)) mass1 = 1.4 mass2 = 1.4 f_low = 40 S = timing.get_noise_psd_func('H1') # Compute Fisher matrix elements for full signal (for comparison). signal_model = timing.SignalModel(mass1, mass2, S, f_low, *timing.get_approximant_and_orders_from_string('TaylorF2threePointFivePN')) w1 = signal_model.get_sn_moment(1) w2 = signal_model.get_sn_moment(2) # Compute 1 second of autocorrelation sequence. # FIXME: make this the longest lag that we are going to integrate over. acor_series, sample_rate = filter.autocorrelation( mass1, mass2, S, f_low, 1, *timing.get_approximant_and_orders_from_string('TaylorF2threePointFivePN')) # Augment autocorrelation sequence with negative time lags. n = len(acor_series) t = np.arange(1-n, n) / sample_rate acor_series = np.concatenate((np.conj(acor_series[:0:-1]), acor_series)) # Construct spline interpolant and derivatives for real part.
from lalinference.bayestar import timing def abs2(x): return np.square(np.real(x)) + np.square(np.imag(x)) mass1 = 1.4 mass2 = 1.4 f_low = 40 S = timing.get_noise_psd_func('H1') # Compute Fisher matrix elements for full signal (for comparison). signal_model = timing.SignalModel( mass1, mass2, S, f_low, *timing.get_approximant_and_orders_from_string('TaylorF2threePointFivePN')) w1 = signal_model.get_sn_moment(1) w2 = signal_model.get_sn_moment(2) # Compute 1 second of autocorrelation sequence. # FIXME: make this the longest lag that we are going to integrate over. acor_series, sample_rate = filter.autocorrelation( mass1, mass2, S, f_low, 1, *timing.get_approximant_and_orders_from_string('TaylorF2threePointFivePN')) # Augment autocorrelation sequence with negative time lags. n = len(acor_series) t = np.arange(1 - n, n) / sample_rate acor_series = np.concatenate((np.conj(acor_series[:0:-1]), acor_series)) # Construct spline interpolant and derivatives for real part.