From 9a16cf031306f6146a55ac5ad68f0601ab91b8e7 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 20:37:27 +1000 Subject: [PATCH 01/14] remove obsolete attributes --- tupak/gw/detector.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 34a868a30..e2a824464 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -622,10 +622,6 @@ class PowerSpectralDensity: Name of the ASD file frequencies: array_like Array containing the frequencies of the ASD/PSD values - frequency_noise_realization: list - TODO: This isn't doing anything right now - interpolated_frequency: list - TODO: This isn't doing anything right now power_spectral_density: array_like Array representation of the PSD power_spectral_density_file: str @@ -637,8 +633,6 @@ class PowerSpectralDensity: self.frequencies = [] self.power_spectral_density = [] self.amplitude_spectral_density = [] - self.frequency_noise_realization = [] - self.interpolated_frequency = [] self.power_spectral_density_interpolated = None if asd_file is not None: -- GitLab From d6344284f535121b1bfd7931720f322b43b2cd3c Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 20:41:03 +1000 Subject: [PATCH 02/14] hide interpolate_power_spectral_density --- tupak/gw/detector.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index e2a824464..79964ffc4 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -661,7 +661,7 @@ class PowerSpectralDensity: self.frequencies = psd.frequencies self.power_spectral_density = psd.value self.amplitude_spectral_density = self.power_spectral_density ** 0.5 - self.interpolate_power_spectral_density() + self._interpolate_power_spectral_density() elif frequencies is not None: if asd_array is not None: self._set_from_amplitude_spectral_density(frequencies, asd_array) @@ -709,15 +709,15 @@ class PowerSpectralDensity: self.frequencies = frequencies self.amplitude_spectral_density = amplitude_spectral_density self.power_spectral_density = self.amplitude_spectral_density ** 2 - self.interpolate_power_spectral_density() + self._interpolate_power_spectral_density() def _set_from_power_spectral_density(self, frequencies, power_spectral_density): self.frequencies = frequencies self.power_spectral_density = power_spectral_density self.amplitude_spectral_density = self.power_spectral_density ** 0.5 - self.interpolate_power_spectral_density() + self._interpolate_power_spectral_density() - def interpolate_power_spectral_density(self): + def _interpolate_power_spectral_density(self): """Interpolate the loaded PSD so it can be resampled for arbitrary frequency arrays.""" self.power_spectral_density_interpolated = interp1d(self.frequencies, self.power_spectral_density, bounds_error=False, -- GitLab From bbd379b86b8278dd9561faf29e75e890e76de0c2 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 20:53:56 +1000 Subject: [PATCH 03/14] make asd and psd properties --- tupak/gw/detector.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 79964ffc4..7e1d58d07 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -629,10 +629,11 @@ class PowerSpectralDensity: power_spectral_density_interpolated: scipy.interpolated.interp1d Interpolated function of the PSD """ + self.__both_updated = True + self.__power_spectral_density = [] + self.__amplitude_spectral_density = [] self.frequencies = [] - self.power_spectral_density = [] - self.amplitude_spectral_density = [] self.power_spectral_density_interpolated = None if asd_file is not None: @@ -679,6 +680,29 @@ class PowerSpectralDensity: min(self.power_spectral_density))) logging.warning("You may have intended to provide this as an amplitude spectral density.") + @property + def power_spectral_density(self): + return self.__power_spectral_density + + @power_spectral_density.setter + def power_spectral_density(self, power_spectral_density): + self.__power_spectral_density = power_spectral_density + self._interpolate_power_spectral_density() + self.__both_updated = ~self.__both_updated + if not self.__both_updated: + self.amplitude_spectral_density(power_spectral_density**0.5) + + @property + def amplitude_spectral_density(self): + return self.__amplitude_spectral_density + + @power_spectral_density.setter + def power_spectral_density(self, amplitude_spectral_density): + self.__amplitude_spectral_density = amplitude_spectral_density + self.__both_updated = ~self.__both_updated + if not self.__both_updated: + self.power_spectral_density(amplitude_spectral_density**2) + def import_amplitude_spectral_density(self): """ Automagically load one of the amplitude spectral density curves contained in the noise_curves directory. -- GitLab From 0e7293f4229423d8fd854435faf12f2ea233eb23 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 20:59:26 +1000 Subject: [PATCH 04/14] add check of frequency array and spectral density array --- tupak/gw/detector.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 7e1d58d07..3fa57f206 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -686,22 +686,24 @@ class PowerSpectralDensity: @power_spectral_density.setter def power_spectral_density(self, power_spectral_density): - self.__power_spectral_density = power_spectral_density - self._interpolate_power_spectral_density() - self.__both_updated = ~self.__both_updated - if not self.__both_updated: - self.amplitude_spectral_density(power_spectral_density**0.5) + if self._check_frequency_array_matches_density_array(power_spectral_density): + self.__power_spectral_density = power_spectral_density + self._interpolate_power_spectral_density() + self.__both_updated = ~self.__both_updated + if not self.__both_updated: + self.amplitude_spectral_density = power_spectral_density**0.5 @property def amplitude_spectral_density(self): return self.__amplitude_spectral_density - @power_spectral_density.setter - def power_spectral_density(self, amplitude_spectral_density): - self.__amplitude_spectral_density = amplitude_spectral_density - self.__both_updated = ~self.__both_updated - if not self.__both_updated: - self.power_spectral_density(amplitude_spectral_density**2) + @amplitude_spectral_density.setter + def amplitude_spectral_density(self, amplitude_spectral_density): + if self._check_frequency_array_matches_density_array(amplitude_spectral_density): + self.__amplitude_spectral_density = amplitude_spectral_density + self.__both_updated = ~self.__both_updated + if not self.__both_updated: + self.power_spectral_density = amplitude_spectral_density**2 def import_amplitude_spectral_density(self): """ @@ -729,6 +731,12 @@ class PowerSpectralDensity: spectral_density = np.genfromtxt(self.power_spectral_density_file) self._set_from_power_spectral_density(spectral_density[:, 0], spectral_density[:, 1]) + def _check_frequency_array_matches_density_array(self, density_array): + match = (len(self.frequencies) == len(density_array)) + if not match: + logging.warning('Spectral density does not match frequency array. Not updating.') + return match + def _set_from_amplitude_spectral_density(self, frequencies, amplitude_spectral_density): self.frequencies = frequencies self.amplitude_spectral_density = amplitude_spectral_density -- GitLab From 16d57a1751ab4c4f23a14ca4483c0b0e0f6e9ebc Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 21:02:26 +1000 Subject: [PATCH 05/14] remove obsolete lines --- tupak/gw/detector.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 3fa57f206..483249071 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -661,8 +661,6 @@ class PowerSpectralDensity: psd = strain.psd(fftlength=fft_length, window=window) self.frequencies = psd.frequencies self.power_spectral_density = psd.value - self.amplitude_spectral_density = self.power_spectral_density ** 0.5 - self._interpolate_power_spectral_density() elif frequencies is not None: if asd_array is not None: self._set_from_amplitude_spectral_density(frequencies, asd_array) @@ -740,14 +738,10 @@ class PowerSpectralDensity: def _set_from_amplitude_spectral_density(self, frequencies, amplitude_spectral_density): self.frequencies = frequencies self.amplitude_spectral_density = amplitude_spectral_density - self.power_spectral_density = self.amplitude_spectral_density ** 2 - self._interpolate_power_spectral_density() def _set_from_power_spectral_density(self, frequencies, power_spectral_density): self.frequencies = frequencies self.power_spectral_density = power_spectral_density - self.amplitude_spectral_density = self.power_spectral_density ** 0.5 - self._interpolate_power_spectral_density() def _interpolate_power_spectral_density(self): """Interpolate the loaded PSD so it can be resampled for arbitrary frequency arrays.""" -- GitLab From b0f054f20ca1c36491fe77663104509c27b07f27 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 21:23:54 +1000 Subject: [PATCH 06/14] make PowerSpectralDensity inherit from object --- tupak/gw/detector.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 483249071..a263dde4c 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -574,7 +574,7 @@ class Interferometer(object): header='f h(f)') -class PowerSpectralDensity: +class PowerSpectralDensity(object): def __init__(self, asd_file=None, psd_file='aLIGO_ZERO_DET_high_P_psd.txt', frame_file=None, asd_array=None, psd_array=None, frequencies=None, epoch=0, @@ -630,8 +630,8 @@ class PowerSpectralDensity: Interpolated function of the PSD """ self.__both_updated = True - self.__power_spectral_density = [] - self.__amplitude_spectral_density = [] + self.__power_spectral_density = None + self.__amplitude_spectral_density = None self.frequencies = [] self.power_spectral_density_interpolated = None @@ -684,12 +684,14 @@ class PowerSpectralDensity: @power_spectral_density.setter def power_spectral_density(self, power_spectral_density): - if self._check_frequency_array_matches_density_array(power_spectral_density): - self.__power_spectral_density = power_spectral_density - self._interpolate_power_spectral_density() - self.__both_updated = ~self.__both_updated - if not self.__both_updated: - self.amplitude_spectral_density = power_spectral_density**0.5 + # if self._check_frequency_array_matches_density_array(power_spectral_density): + self.__power_spectral_density = power_spectral_density + self._interpolate_power_spectral_density() + # print(self.__both_updated) + # self.__both_updated = ~self.__both_updated + # print(self.__both_updated) + # if not self.__both_updated: + self.__amplitude_spectral_density = power_spectral_density**0.5 @property def amplitude_spectral_density(self): @@ -697,11 +699,14 @@ class PowerSpectralDensity: @amplitude_spectral_density.setter def amplitude_spectral_density(self, amplitude_spectral_density): - if self._check_frequency_array_matches_density_array(amplitude_spectral_density): - self.__amplitude_spectral_density = amplitude_spectral_density - self.__both_updated = ~self.__both_updated - if not self.__both_updated: - self.power_spectral_density = amplitude_spectral_density**2 + # if self._check_frequency_array_matches_density_array(amplitude_spectral_density): + self.__amplitude_spectral_density = amplitude_spectral_density + # print(self.__both_updated) + # self.__both_updated = ~self.__both_updated + # print(self.__both_updated) + # if not self.__both_updated: + self.__power_spectral_density = amplitude_spectral_density**2 + self._interpolate_power_spectral_density() def import_amplitude_spectral_density(self): """ -- GitLab From 57ec4f9ef602925fd1a633779d90c01eea8c32bd Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 21:25:39 +1000 Subject: [PATCH 07/14] reinstate check on array length --- tupak/gw/detector.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index a263dde4c..31d1c1c93 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -684,14 +684,14 @@ class PowerSpectralDensity(object): @power_spectral_density.setter def power_spectral_density(self, power_spectral_density): - # if self._check_frequency_array_matches_density_array(power_spectral_density): - self.__power_spectral_density = power_spectral_density - self._interpolate_power_spectral_density() + if self._check_frequency_array_matches_density_array(power_spectral_density): + self.__power_spectral_density = power_spectral_density + self._interpolate_power_spectral_density() # print(self.__both_updated) # self.__both_updated = ~self.__both_updated # print(self.__both_updated) # if not self.__both_updated: - self.__amplitude_spectral_density = power_spectral_density**0.5 + self.__amplitude_spectral_density = power_spectral_density**0.5 @property def amplitude_spectral_density(self): @@ -699,14 +699,14 @@ class PowerSpectralDensity(object): @amplitude_spectral_density.setter def amplitude_spectral_density(self, amplitude_spectral_density): - # if self._check_frequency_array_matches_density_array(amplitude_spectral_density): - self.__amplitude_spectral_density = amplitude_spectral_density + if self._check_frequency_array_matches_density_array(amplitude_spectral_density): + self.__amplitude_spectral_density = amplitude_spectral_density # print(self.__both_updated) # self.__both_updated = ~self.__both_updated # print(self.__both_updated) # if not self.__both_updated: - self.__power_spectral_density = amplitude_spectral_density**2 - self._interpolate_power_spectral_density() + self.__power_spectral_density = amplitude_spectral_density**2 + self._interpolate_power_spectral_density() def import_amplitude_spectral_density(self): """ -- GitLab From a048e917f7214dd8ff2ac0cdb50050bbfd09c9a4 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 21:26:50 +1000 Subject: [PATCH 08/14] change output for bad psd update --- tupak/gw/detector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 31d1c1c93..2fe0550c9 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -737,7 +737,7 @@ class PowerSpectralDensity(object): def _check_frequency_array_matches_density_array(self, density_array): match = (len(self.frequencies) == len(density_array)) if not match: - logging.warning('Spectral density does not match frequency array. Not updating.') + logging.warning('Provided spectral density does not match frequency array. Not updating.') return match def _set_from_amplitude_spectral_density(self, frequencies, amplitude_spectral_density): -- GitLab From 922b6e9321084aa9785b8844a7d80a01ae81824d Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 21:27:55 +1000 Subject: [PATCH 09/14] clean up --- tupak/gw/detector.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 2fe0550c9..32817d357 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -629,7 +629,6 @@ class PowerSpectralDensity(object): power_spectral_density_interpolated: scipy.interpolated.interp1d Interpolated function of the PSD """ - self.__both_updated = True self.__power_spectral_density = None self.__amplitude_spectral_density = None @@ -687,10 +686,6 @@ class PowerSpectralDensity(object): if self._check_frequency_array_matches_density_array(power_spectral_density): self.__power_spectral_density = power_spectral_density self._interpolate_power_spectral_density() - # print(self.__both_updated) - # self.__both_updated = ~self.__both_updated - # print(self.__both_updated) - # if not self.__both_updated: self.__amplitude_spectral_density = power_spectral_density**0.5 @property @@ -701,10 +696,6 @@ class PowerSpectralDensity(object): def amplitude_spectral_density(self, amplitude_spectral_density): if self._check_frequency_array_matches_density_array(amplitude_spectral_density): self.__amplitude_spectral_density = amplitude_spectral_density - # print(self.__both_updated) - # self.__both_updated = ~self.__both_updated - # print(self.__both_updated) - # if not self.__both_updated: self.__power_spectral_density = amplitude_spectral_density**2 self._interpolate_power_spectral_density() -- GitLab From 50a8bb13b084451598bcd1dde83c5b1d4ef5f5f3 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 21:42:52 +1000 Subject: [PATCH 10/14] remove set functions --- tupak/gw/detector.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 32817d357..b83c1a5d0 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -661,10 +661,11 @@ class PowerSpectralDensity(object): self.frequencies = psd.frequencies self.power_spectral_density = psd.value elif frequencies is not None: + self.frequencies = frequencies if asd_array is not None: - self._set_from_amplitude_spectral_density(frequencies, asd_array) + self.amplitude_spectral_density = asd_array elif psd_array is not None: - self._set_from_amplitude_spectral_density(frequencies, psd_array) + self.power_spectral_density = psd_array else: if psd_file is None: logging.info("No power spectral density provided, using aLIGO, zero detuning, high power.") @@ -709,8 +710,7 @@ class PowerSpectralDensity(object): if '/' not in self.amplitude_spectral_density_file: self.amplitude_spectral_density_file = os.path.join(os.path.dirname(__file__), 'noise_curves', self.amplitude_spectral_density_file) - spectral_density = np.genfromtxt(self.amplitude_spectral_density_file) - self._set_from_amplitude_spectral_density(spectral_density[:, 0], spectral_density[:, 1]) + self.frequencies, self.amplitude_spectral_density = np.genfromtxt(self.amplitude_spectral_density_file).T def import_power_spectral_density(self): """ @@ -722,8 +722,7 @@ class PowerSpectralDensity(object): if '/' not in self.power_spectral_density_file: self.power_spectral_density_file = os.path.join(os.path.dirname(__file__), 'noise_curves', self.power_spectral_density_file) - spectral_density = np.genfromtxt(self.power_spectral_density_file) - self._set_from_power_spectral_density(spectral_density[:, 0], spectral_density[:, 1]) + self.frequencies, self.power_spectral_density = np.genfromtxt(self.power_spectral_density_file).T def _check_frequency_array_matches_density_array(self, density_array): match = (len(self.frequencies) == len(density_array)) @@ -731,14 +730,6 @@ class PowerSpectralDensity(object): logging.warning('Provided spectral density does not match frequency array. Not updating.') return match - def _set_from_amplitude_spectral_density(self, frequencies, amplitude_spectral_density): - self.frequencies = frequencies - self.amplitude_spectral_density = amplitude_spectral_density - - def _set_from_power_spectral_density(self, frequencies, power_spectral_density): - self.frequencies = frequencies - self.power_spectral_density = power_spectral_density - def _interpolate_power_spectral_density(self): """Interpolate the loaded PSD so it can be resampled for arbitrary frequency arrays.""" self.power_spectral_density_interpolated = interp1d(self.frequencies, self.power_spectral_density, -- GitLab From 988f415c78e6ab24b06137a9d9e52643db60e490 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Wed, 20 Jun 2018 22:52:24 +1000 Subject: [PATCH 11/14] improve extrpolation of PSD --- tupak/gw/detector.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index b83c1a5d0..824d45729 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -734,7 +734,7 @@ class PowerSpectralDensity(object): """Interpolate the loaded PSD so it can be resampled for arbitrary frequency arrays.""" self.power_spectral_density_interpolated = interp1d(self.frequencies, self.power_spectral_density, bounds_error=False, - fill_value=max(self.power_spectral_density)) + fill_value=np.inf) def get_noise_realisation(self, sampling_frequency, duration): """ @@ -756,6 +756,7 @@ class PowerSpectralDensity(object): white_noise, frequencies = utils.create_white_noise(sampling_frequency, duration) interpolated_power_spectral_density = self.power_spectral_density_interpolated(frequencies) frequency_domain_strain = interpolated_power_spectral_density ** 0.5 * white_noise + frequency_domain_strain[(frequencies < min(self.frequencies)) | (frequencies > max(self.frequencies))] = 0 return frequency_domain_strain, frequencies -- GitLab From 09667f8b9112ea35598538a4c503f625d0be834c Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Thu, 21 Jun 2018 08:48:44 +1000 Subject: [PATCH 12/14] apply frequency mask to noise realisation test --- test/noise_realisation_tests.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/noise_realisation_tests.py b/test/noise_realisation_tests.py index 8f96cb30c..d69d4921b 100644 --- a/test/noise_realisation_tests.py +++ b/test/noise_realisation_tests.py @@ -8,7 +8,7 @@ class TestNoiseRealisation(unittest.TestCase): def test_averaged_noise(self): time_duration = 1. sampling_frequency = 4096. - factor = np.sqrt(2./time_duration) + factor = np.sqrt(2 / time_duration) n_avg = 1000 psd_avg = 0 interferometer = tupak.gw.detector.get_empty_interferometer('H1') @@ -16,11 +16,12 @@ class TestNoiseRealisation(unittest.TestCase): interferometer.set_data(sampling_frequency, time_duration, from_power_spectral_density=True) psd_avg += abs(interferometer.data)**2 - psd_avg = psd_avg/n_avg - asd_avg = np.sqrt(abs(psd_avg)) + psd_avg = psd_avg / n_avg + asd_avg = np.sqrt(abs(psd_avg)) * interferometer.frequency_mask - a = interferometer.amplitude_spectral_density_array/factor + a = np.nan_to_num(interferometer.amplitude_spectral_density_array / factor * interferometer.frequency_mask) b = asd_avg + print(a, b) self.assertTrue(np.allclose(a, b, rtol=1e-1)) def test_noise_normalisation(self): -- GitLab From 119575fda473ce636cd02ae28fd60dfbb2258fdb Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Thu, 21 Jun 2018 10:25:19 +1000 Subject: [PATCH 13/14] make zeroed noise elements complex --- tupak/gw/detector.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 824d45729..77c04c629 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -756,7 +756,8 @@ class PowerSpectralDensity(object): white_noise, frequencies = utils.create_white_noise(sampling_frequency, duration) interpolated_power_spectral_density = self.power_spectral_density_interpolated(frequencies) frequency_domain_strain = interpolated_power_spectral_density ** 0.5 * white_noise - frequency_domain_strain[(frequencies < min(self.frequencies)) | (frequencies > max(self.frequencies))] = 0 + out_of_bounds = (frequencies < min(self.frequencies)) | (frequencies > max(self.frequencies)) + frequency_domain_strain[out_of_bounds] = 0 * (1 + 1j) return frequency_domain_strain, frequencies -- GitLab From 6af99cec2479eda2b70e329f17a19a5c06bdbf65 Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Thu, 21 Jun 2018 10:31:53 +1000 Subject: [PATCH 14/14] make mismatched arrays raise error --- tupak/gw/detector.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 77c04c629..bf7d8bd38 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -684,10 +684,10 @@ class PowerSpectralDensity(object): @power_spectral_density.setter def power_spectral_density(self, power_spectral_density): - if self._check_frequency_array_matches_density_array(power_spectral_density): - self.__power_spectral_density = power_spectral_density - self._interpolate_power_spectral_density() - self.__amplitude_spectral_density = power_spectral_density**0.5 + self._check_frequency_array_matches_density_array(power_spectral_density) + self.__power_spectral_density = power_spectral_density + self._interpolate_power_spectral_density() + self.__amplitude_spectral_density = power_spectral_density**0.5 @property def amplitude_spectral_density(self): @@ -695,10 +695,10 @@ class PowerSpectralDensity(object): @amplitude_spectral_density.setter def amplitude_spectral_density(self, amplitude_spectral_density): - if self._check_frequency_array_matches_density_array(amplitude_spectral_density): - self.__amplitude_spectral_density = amplitude_spectral_density - self.__power_spectral_density = amplitude_spectral_density**2 - self._interpolate_power_spectral_density() + self._check_frequency_array_matches_density_array(amplitude_spectral_density) + self.__amplitude_spectral_density = amplitude_spectral_density + self.__power_spectral_density = amplitude_spectral_density**2 + self._interpolate_power_spectral_density() def import_amplitude_spectral_density(self): """ @@ -725,10 +725,11 @@ class PowerSpectralDensity(object): self.frequencies, self.power_spectral_density = np.genfromtxt(self.power_spectral_density_file).T def _check_frequency_array_matches_density_array(self, density_array): - match = (len(self.frequencies) == len(density_array)) - if not match: - logging.warning('Provided spectral density does not match frequency array. Not updating.') - return match + """Check if the provided frequency and spectral density arrays match.""" + try: + self.frequencies - density_array + except ValueError as e: + raise(e, 'Provided spectral density does not match frequency array. Not updating.') def _interpolate_power_spectral_density(self): """Interpolate the loaded PSD so it can be resampled for arbitrary frequency arrays.""" -- GitLab