diff --git a/gstlal-calibration/bin/gstlal_compute_strain b/gstlal-calibration/bin/gstlal_compute_strain index 8f8948164402909c4c6616292e36a4af55470a1b..241fdb786093e716704daca418ae395c370dfcfd 100755 --- a/gstlal-calibration/bin/gstlal_compute_strain +++ b/gstlal-calibration/bin/gstlal_compute_strain @@ -1025,8 +1025,8 @@ if not options.no_kappac or not options.no_fcc or not options.no_kappapu or not smooth_XiR, smooth_XiI = calibration_parts.split_into_real(pipeline, smooth_Xi) smooth_XiR_nogate, smooth_XiI_nogate = calibration_parts.split_into_real(pipeline, smooth_Xi_nogate) - smooth_sqrtXiR = pipeparts.mkpow(pipeline, smooth_XiR, exponent = 0.5) - smooth_sqrtXiR_nogate = pipeparts.mkpow(pipeline, smooth_XiR_nogate, exponent = 0.5) + smooth_sqrtXiR = calibration_parts.mkpow(pipeline, smooth_XiR, exponent = 0.5) + smooth_sqrtXiR_nogate = calibration_parts.mkpow(pipeline, smooth_XiR_nogate, exponent = 0.5) if not options.no_fs and not options.no_srcQ: smooth_sqrtXiR = pipeparts.mktee(pipeline, smooth_sqrtXiR) @@ -1042,8 +1042,8 @@ if not options.no_kappac or not options.no_fcc or not options.no_kappapu or not # compute SRC Q_inv if not options.no_srcQ: - smooth_sqrtXiR_inv = pipeparts.mkpow(pipeline, smooth_sqrtXiR, exponent = -1.0) - smooth_sqrtXiR_inv_nogate = pipeparts.mkpow(pipeline, smooth_sqrtXiR_nogate, exponent = -1.0) + smooth_sqrtXiR_inv = calibration_parts.mkpow(pipeline, smooth_sqrtXiR, exponent = -1.0) + smooth_sqrtXiR_inv_nogate = calibration_parts.mkpow(pipeline, smooth_sqrtXiR_nogate, exponent = -1.0) smooth_srcQ_inv = calibration_parts.mkmultiplier(pipeline, calibration_parts.list_srcs(pipeline, smooth_sqrtXiR_inv, pipeparts.mkaudioamplify(pipeline, smooth_XiI, -1.0))) smooth_srcQ_inv_nogate = calibration_parts.mkmultiplier(pipeline, calibration_parts.list_srcs(pipeline, smooth_sqrtXiR_inv_nogate, pipeparts.mkaudioamplify(pipeline, smooth_XiI_nogate, -1.0))) @@ -1084,7 +1084,7 @@ if options.update_fcc or options.update_fs or options.update_srcQ: tdep_zpk.append(complex_fcc) # This will be added into tdep_zpk at the end, as required by lal_adaptivefirfilt - variable_invsens_gain = pipeparts.mkaudioamplify(pipeline, pipeparts.mkgeneric(pipeline, smooth_fcctee, "cpow", exponent = -1.0), fcc_default) + variable_invsens_gain = pipeparts.mkaudioamplify(pipeline, calibration_parts.mkpow(pipeline, smooth_fcctee, exponent = -1.0), fcc_default) # There are two zeros that depend on fs and Q, both of which depend on both fs and Q if options.update_fs or options.update_srcQ: @@ -1094,8 +1094,8 @@ if options.update_fcc or options.update_fs or options.update_srcQ: if options.update_fs and options.update_srcQ: # The variable zeros depend on the computed values of fs and Q - Q_inv_squared = pipeparts.mkgeneric(pipeline, smooth_srcQ_inv, "cpow", exponent = 2.0) - sqrt_Q_inv_squared_plus4 = pipeparts.mkgeneric(pipeline, pipeparts.mkgeneric(pipeline, Q_inv_squared, "lal_add_constant", value = 4.0), "cpow", exponent = 0.5) + Q_inv_squared = calibration_parts.mkpow(pipeline, smooth_srcQ_inv, exponent = 2.0) + sqrt_Q_inv_squared_plus4 = calibration_parts.mkpow(pipeline, pipeparts.mkgeneric(pipeline, Q_inv_squared, "lal_add_constant", value = 4.0), exponent = 0.5) sqrt_Q_inv_squared_plus4 = pipeparts.mktee(pipeline, sqrt_Q_inv_squared_plus4) SRC_zero1 = calibration_parts.mkadder(pipeline, calibration_parts.list_srcs(pipeline, smooth_srcQ_inv, sqrt_Q_inv_squared_plus4)) @@ -1125,8 +1125,8 @@ if options.update_fcc or options.update_fs or options.update_srcQ: elif options.update_srcQ: # The variable zeros depend on the model value of fs and the computed value of Q - Q_inv_squared = pipeparts.mkgeneric(pipeline, smooth_srcQ_inv, "cpow", exponent = 2.0) - sqrt_Q_inv_squared_plus4 = pipeparts.mkgeneric(pipeline, pipeparts.mkgeneric(pipeline, Q_inv_squared, "lal_add_constant", value = 4.0), "cpow", exponent = 0.5) + Q_inv_squared = calibration_parts.mkpow(pipeline, smooth_srcQ_inv, exponent = 2.0) + sqrt_Q_inv_squared_plus4 = calibration_parts.mkpow(pipeline, pipeparts.mkgeneric(pipeline, Q_inv_squared, "lal_add_constant", value = 4.0), exponent = 0.5) sqrt_Q_inv_squared_plus4 = pipeparts.mktee(pipeline, sqrt_Q_inv_squared_plus4) SRC_zero1 = calibration_parts.mkadder(pipeline, calibration_parts.list_srcs(pipeline, smooth_srcQ_inv, sqrt_Q_inv_squared_plus4)) @@ -1141,7 +1141,7 @@ if options.update_fcc or options.update_fs or options.update_srcQ: if options.apply_kappac: # We divide the gain by kappa_c - kappac_inv = pipeparts.mkgeneric(pipeline, smooth_kctee, "cpow", exponent = -1.0) + kappac_inv = calibration_parts.mkpow(pipeline, smooth_kctee, exponent = -1.0) if options.update_fcc: variable_invsens_gain = calibration_parts.mkmultiplier(pipeline, calibration_parts.list_srcs(pipeline, variable_invsens_gain, kappac_inv)) else: @@ -1337,7 +1337,7 @@ res_filter_latency += float(reschaindelay)/hoftsr # Apply \kappa_c if we haven't already if options.apply_kappac and not (options.update_fcc or options.update_fs or options.update_srcQ): kc_modify_res = calibration_parts.mkresample(pipeline, smooth_kctee, 3, False, hoft_caps) - res = calibration_parts.mkmultiplier(pipeline, calibration_parts.list_srcs(pipeline, res, pipeparts.mkgeneric(pipeline, kc_modify_res, "cpow", exponent = -1.0))) + res = calibration_parts.mkmultiplier(pipeline, calibration_parts.list_srcs(pipeline, res, calibration_parts.mkpow(pipeline, kc_modify_res, exponent = -1.0))) if options.dewhitening: res = pipeparts.mkfirbank(pipeline, res, latency = int(resdewhitendelay), fir_matrix = [resdewhiten[::-1]], time_domain = td) diff --git a/gstlal-calibration/python/calibration_parts.py b/gstlal-calibration/python/calibration_parts.py index c350a02bf38422a6face845730ac78d8b12943ce..bf79dab28d871383b71384a401aa48667a782ef4 100644 --- a/gstlal-calibration/python/calibration_parts.py +++ b/gstlal-calibration/python/calibration_parts.py @@ -72,6 +72,9 @@ def mkcomplexfirbank2(pipeline, src, latency = None, fir_matrix = None, time_dom properties = dict((name, value) for name, value in zip(("latency", "fir_matrix", "time_domain", "block_stride"), (latency, fir_matrix, time_domain, block_stride)) if value is not None) return pipeparts.mkgeneric(pipeline, src, "lal_complexfirbank2", **properties) +def mkpow(pipeline, src, **properties): + return pipeparts.mkgeneric(pipeline, src, "cpow", **properties) + def mkmultiplier(pipeline, srcs, sync = True, queue_length = 0): elem = pipeparts.mkgeneric(pipeline, None, "lal_adder", sync=sync, mix_mode="product") if srcs is not None: @@ -377,7 +380,7 @@ def compute_rms(pipeline, head, rate, average_time, f_min = None, f_max = None, head = lowpass(pipeline, head, fcut = f_max, filter_latency = filter_latency, td = td) # Square it - head = pipeparts.mkpow(pipeline, head, exponent = 2.0) + head = mkpow(pipeline, head, exponent = 2.0) # Downsample again to save computational cost head = mkresample(pipeline, head, 3, filter_latency == 0.0, rate_out) @@ -531,7 +534,7 @@ def complex_audioamplify(pipeline, chan, WR, WI): def complex_inverse(pipeline, head): # Invert a complex number (1/z) - head = pipeparts.mkgeneric(pipeline, head, "cpow", exponent = -1) + head = mkpow(pipeline, head, exponent = -1) return head @@ -686,8 +689,8 @@ def compute_kappac(pipeline, SR, SI): # SR = pipeparts.mktee(pipeline, SR) - S2 = mkadder(pipeline, list_srcs(pipeline, pipeparts.mkpow(pipeline, SR, exponent=2.0), pipeparts.mkpow(pipeline, SI, exponent=2.0))) - kc = mkmultiplier(pipeline, list_srcs(pipeline, S2, pipeparts.mkpow(pipeline, SR, exponent=-1.0))) + S2 = mkadder(pipeline, list_srcs(pipeline, mkpow(pipeline, SR, exponent=2.0), mkpow(pipeline, SI, exponent=2.0))) + kc = mkmultiplier(pipeline, list_srcs(pipeline, S2, mkpow(pipeline, SR, exponent=-1.0))) return kc def compute_fcc(pipeline, SR, SI, fpcal2): @@ -696,7 +699,7 @@ def compute_fcc(pipeline, SR, SI, fpcal2): # f_cc = - (Re[S]/Im[S]) * fpcal2 # - fcc = mkmultiplier(pipeline, list_srcs(pipeline, pipeparts.mkaudioamplify(pipeline, SR, -1.0*fpcal2), pipeparts.mkpow(pipeline, SI, exponent=-1.0))) + fcc = mkmultiplier(pipeline, list_srcs(pipeline, pipeparts.mkaudioamplify(pipeline, SR, -1.0*fpcal2), mkpow(pipeline, SI, exponent=-1.0))) return fcc def compute_Xi_from_filters_file(pipeline, pcalfpcal4, darmfpcal4, fpcal4, EP11_real, EP11_imag, EP12_real, EP12_imag, EP13_real, EP13_imag, EP14_real, EP14_imag, ktst, kpu, kc, fcc): @@ -711,7 +714,7 @@ def compute_Xi_from_filters_file(pipeline, pcalfpcal4, darmfpcal4, fpcal4, EP11_ minusAD = complex_audioamplify(pipeline, A, -1.0 * EP12_real, -1.0 * EP12_imag) pcal_over_derr = complex_division(pipeline, pcalfpcal4, darmfpcal4) pcal_over_derr_res = mkadder(pipeline, list_srcs(pipeline, pcal_over_derr, minusAD)) - fpcal4_over_fcc = pipeparts.mkaudioamplify(pipeline, pipeparts.mkpow(pipeline, fcc, exponent = -1.0), fpcal4) + fpcal4_over_fcc = pipeparts.mkaudioamplify(pipeline, mkpow(pipeline, fcc, exponent = -1.0), fpcal4) i_fpcal4_over_fcc = pipeparts.mktogglecomplex(pipeline, pipeparts.mkmatrixmixer(pipeline, fpcal4_over_fcc, matrix = [[0, 1]])) i_fpcal4_over_fcc_plus_one = pipeparts.mkgeneric(pipeline, i_fpcal4_over_fcc, "lal_add_constant", value = 1.0) i_fpcal4_over_fcc_plus_one_inv = complex_inverse(pipeline, i_fpcal4_over_fcc_plus_one) @@ -734,7 +737,7 @@ def compute_Xi(pipeline, pcalfpcal4, darmfpcal4, fpcal4, EP11, EP12, EP13, EP14, minusAD = mkmultiplier(pipeline, list_srcs(pipeline, complex_audioamplify(pipeline, EP12, -1.0, 0.0), A)) pcal_over_derr = complex_division(pipeline, pcalfpcal4, darmfpcal4) pcal_over_derr_res = mkadder(pipeline, list_srcs(pipeline, pcal_over_derr, minusAD)) - fpcal4_over_fcc = pipeparts.mkaudioamplify(pipeline, pipeparts.mkpow(pipeline, fcc, exponent = -1.0), fpcal4) + fpcal4_over_fcc = pipeparts.mkaudioamplify(pipeline, mkpow(pipeline, fcc, exponent = -1.0), fpcal4) i_fpcal4_over_fcc = pipeparts.mktogglecomplex(pipeline, pipeparts.mkmatrixmixer(pipeline, fpcal4_over_fcc, matrix = [[0, 1]])) i_fpcal4_over_fcc_plus_one = pipeparts.mkgeneric(pipeline, i_fpcal4_over_fcc, "lal_add_constant", value = 1.0) i_fpcal4_over_fcc_plus_one_inv = complex_inverse(pipeline, i_fpcal4_over_fcc_plus_one)