From 597df20c009bf91e40d9762e7891908ea2d245d3 Mon Sep 17 00:00:00 2001 From: Aaron Viets <aaron.viets@ligo.org> Date: Tue, 10 Aug 2021 09:42:11 -0700 Subject: [PATCH] FIRtools.py: added option for faster ASDs --- gstlal-calibration/python/FIRtools.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gstlal-calibration/python/FIRtools.py b/gstlal-calibration/python/FIRtools.py index 8a462861b1..346f1276df 100644 --- a/gstlal-calibration/python/FIRtools.py +++ b/gstlal-calibration/python/FIRtools.py @@ -1379,7 +1379,7 @@ def freqresp(filt, delay_samples = 0, samples_per_lobe = 8, return_double = Fals # -def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0): +def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0, fast = True): # How many FFTs will we take? if len(data) < fft_samples: @@ -1405,9 +1405,14 @@ def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0) win = Blackman(fft_samples) # Compute the ASD - asd = abs(rfft(win * data[:fft_samples])) - for i in range(1, num_ffts): - asd += abs(rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples])) + if fast: + asd = abs(np.fft.rfft(win * data[:fft_samples])) + for i in range(1, num_ffts): + asd += abs(np.fft.rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples])) + else: + asd = abs(rfft(win * data[:fft_samples])) + for i in range(1, num_ffts): + asd += abs(rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples])) asd /= num_ffts * sr * np.sqrt((float(fft_samples) / sr)) return np.float64(asd) -- GitLab