From 6d18b55beed6b150a854e039911751fb54ea5d35 Mon Sep 17 00:00:00 2001 From: MoritzThomasHuebner <email@moritz-huebner.de> Date: Thu, 9 Aug 2018 12:19:59 +1000 Subject: [PATCH] Fixed missing function parameter --- tupak/gw/detector.py | 50 ++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py index 21f2dee3b..697e153f3 100644 --- a/tupak/gw/detector.py +++ b/tupak/gw/detector.py @@ -21,6 +21,7 @@ except ImportError: class InterferometerList(list): """ A list of Interferometer objects """ + def __init__(self, interferometers): """ Instantiate a InterferometerList @@ -136,8 +137,9 @@ class InterferometerList(list): for ii, interferometer in enumerate(self): ax = fig.add_subplot(len(self) // 2, 2, ii + 1) ax.loglog(interferometer.frequency_array, - gwutils.asd_from_freq_series( - interferometer.frequency_domain_strain), + gwutils.asd_from_freq_series(freq_data=interferometer.frequency_domain_strain, + df=(interferometer.frequency_array[1] - + interferometer.frequency_array[0])), color='C0', label=interferometer.name) ax.loglog(interferometer.frequency_array, interferometer.amplitude_spectral_density_array, @@ -149,7 +151,11 @@ class InterferometerList(list): ax.legend(loc='best') if signal is not None: ax.loglog(self.frequency_array, - gwutils.asd_from_freq_series(signal), color='C2', + gwutils.asd_from_freq_series(freq_data=signal, + df=(self.frequency_array[1] - + self.frequency_array[0]) + ), + color='C2', label='Signal') fig.tight_layout() if label is None: @@ -198,6 +204,7 @@ class InterferometerList(list): class InterferometerStrainData(object): """ Strain data for an interferometer """ + def __init__(self, minimum_frequency=0, maximum_frequency=np.inf, roll_off=0.4): """ Initiate an InterferometerStrainData object @@ -357,7 +364,7 @@ class InterferometerStrainData(object): elif alpha is not None: self.roll_off = alpha * self.duration / 2 window = tukey(len(self._time_domain_strain), alpha=self.alpha) - self.window_factor = np.mean(window**2) + self.window_factor = np.mean(window ** 2) return window @property @@ -415,7 +422,7 @@ class InterferometerStrainData(object): logger.info( "Low pass filter frequency of {}Hz requested, this is equal" " or greater than the Nyquist frequency so no filter applied" - .format(filter_freq)) + .format(filter_freq)) return logger.debug("Applying low pass filter with filter frequency {}".format(filter_freq)) @@ -572,7 +579,7 @@ class InterferometerStrainData(object): """ timeseries = gwutils.get_open_strain_data( - name, start_time, start_time+duration, outdir=outdir, cache=cache, + name, start_time, start_time + duration, outdir=outdir, cache=cache, **kwargs) self.set_from_gwpy_timeseries(timeseries) @@ -1066,7 +1073,7 @@ class Interferometer(object): """ if not self.__vertex_updated: self.__vertex = gwutils.get_vertex_position_geocentric(self.__latitude, self.__longitude, - self.elevation) + self.elevation) self.__vertex_updated = True return self.__vertex @@ -1199,7 +1206,7 @@ class Interferometer(object): return signal_ifo - def inject_signal(self, parameters=None, injection_polarizations=None, + def inject_signal(self, parameters=None, injection_polarizations=None, waveform_generator=None): """ Inject a signal into noise @@ -1246,7 +1253,7 @@ class Interferometer(object): if not self.strain_data.time_within_data(parameters['geocent_time']): logger.warning( 'Injecting signal outside segment, start_time={}, merger time={}.' - .format(self.strain_data.start_time, parameters['geocent_time'])) + .format(self.strain_data.start_time, parameters['geocent_time'])) signal_ifo = self.get_detector_response(injection_polarizations, parameters) if np.shape(self.frequency_domain_strain).__eq__(np.shape(signal_ifo)): @@ -1309,8 +1316,8 @@ class Interferometer(object): np.cos(self.__latitude) * np.sin(self.__longitude), np.sin(self.__latitude)]) return np.cos(arm_tilt) * np.cos(arm_azimuth) * e_long + \ - np.cos(arm_tilt) * np.sin(arm_azimuth) * e_lat + \ - np.sin(arm_tilt) * e_h + np.cos(arm_tilt) * np.sin(arm_azimuth) * e_lat + \ + np.sin(arm_tilt) * e_h @property def amplitude_spectral_density_array(self): @@ -1334,8 +1341,8 @@ class Interferometer(object): array_like: An array representation of the PSD """ - return self.power_spectral_density.power_spectral_density_interpolated(self.frequency_array)\ - * self.strain_data.window_factor + return self.power_spectral_density.power_spectral_density_interpolated(self.frequency_array) \ + * self.strain_data.window_factor @property def frequency_array(self): @@ -1426,14 +1433,17 @@ class Interferometer(object): fig, ax = plt.subplots() ax.loglog(self.frequency_array, - gwutils.asd_from_freq_series(self.frequency_domain_strain), + gwutils.asd_from_freq_series(freq_data=self.frequency_domain_strain, + df=(self.frequency_array[1] - self.frequency_array[0])), color='C0', label=self.name) ax.loglog(self.frequency_array, self.amplitude_spectral_density_array, color='C1', lw=0.5, label=self.name + ' ASD') if signal is not None: ax.loglog(self.frequency_array, - gwutils.asd_from_freq_series(signal), color='C2', + gwutils.asd_from_freq_series(freq_data=signal, + df=(self.frequency_array[1] - self.frequency_array[0])), + color='C2', label='Signal') ax.grid('on') ax.set_ylabel(r'strain [strain/$\sqrt{\rm Hz}$]') @@ -1466,7 +1476,7 @@ class TriangularInterferometer(InterferometerList): for ii in range(3): self.append(Interferometer( - '{}{}'.format(name, ii+1), power_spectral_density[ii], minimum_frequency[ii], maximum_frequency[ii], + '{}{}'.format(name, ii + 1), power_spectral_density[ii], minimum_frequency[ii], maximum_frequency[ii], length, latitude, longitude, elevation, xarm_azimuth, yarm_azimuth, xarm_tilt, yarm_tilt)) xarm_azimuth += 240 @@ -1636,7 +1646,7 @@ class PowerSpectralDensity(object): 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.__amplitude_spectral_density = power_spectral_density ** 0.5 @property def amplitude_spectral_density(self): @@ -1646,7 +1656,7 @@ class PowerSpectralDensity(object): def amplitude_spectral_density(self, amplitude_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.__power_spectral_density = amplitude_spectral_density ** 2 self._interpolate_power_spectral_density() def import_amplitude_spectral_density(self): @@ -1679,14 +1689,14 @@ class PowerSpectralDensity(object): os.path.dirname(__file__), 'noise_curves', self.power_spectral_density_file) self.frequency_array, self.power_spectral_density = np.genfromtxt( - self.power_spectral_density_file).T + self.power_spectral_density_file).T def _check_frequency_array_matches_density_array(self, density_array): """Check the provided frequency and spectral density arrays match.""" try: self.frequency_array - density_array except ValueError as e: - raise(e, 'Provided spectral density does not match frequency array. Not updating.') + raise (e, 'Provided spectral density does not match frequency array. Not updating.') def _interpolate_power_spectral_density(self): """Interpolate the loaded power spectral density so it can be resampled -- GitLab