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] 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