From 534df357cd96f95947be03394ed37f524e90cdc5 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bayle <j2b.bayle@gmail.com> Date: Tue, 2 Feb 2021 13:40:10 +0100 Subject: [PATCH] Optimize to use scalar when constant frequency offset --- lisainstrument/containers.py | 7 +++++++ lisainstrument/instrument.py | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lisainstrument/containers.py b/lisainstrument/containers.py index bd08ee2..434a14e 100644 --- a/lisainstrument/containers.py +++ b/lisainstrument/containers.py @@ -93,6 +93,13 @@ class ForEachObject(abc.ABC): """Return dictionary items.""" return self.dict.items() + def __eq__(self, other): + if isinstance(other, self.__class__): + return self.dict == other.dict + if isinstance(other, dict): + return self.dict == other + return numpy.all([self[index] == other for index in self.indices()]) + def __repr__(self): return repr(self.dict) diff --git a/lisainstrument/instrument.py b/lisainstrument/instrument.py index d41cb06..2917444 100644 --- a/lisainstrument/instrument.py +++ b/lisainstrument/instrument.py @@ -762,17 +762,19 @@ class Instrument: ) ## Clock noise - # TODO: better optimize when clock_freqlindrifts and clock_freqquaddrifts == 0 logging.info("Generating clock noise time series") - t = self.physics_t - self.clock_noise_offsets = ForEachSC(lambda sc: - self.clock_freqoffsets[sc] + self.clock_freqlindrifts[sc] * t + self.clock_freqquaddrifts[sc] * t**2 - ) - for sc in self.SCS: - if self.physics_size and numpy.all(self.clock_noise_offsets[sc] == self.clock_noise_offsets[sc][0]): - self.clock_noise_offsets[sc] = self.clock_noise_offsets[sc][0] + if self.clock_freqlindrifts == self.clock_freqquaddrifts == 0: + # Optimize to use a scalar if we only have a constant frequency offset + self.clock_noise_offsets = ForEachSC(lambda sc: + self.clock_freqoffsets[sc] + ) + else: + t = self.physics_t + self.clock_noise_offsets = ForEachSC(lambda sc: + self.clock_freqoffsets[sc] + self.clock_freqlindrifts[sc] * t + self.clock_freqquaddrifts[sc] * t**2 + ) logging.info("Generating clock noise fluctuations time series") -- GitLab