From 42ffe15fe4aa1deafaa4ed71c6260718ab7a808f Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bayle <j2b.bayle@gmail.com> Date: Wed, 8 Dec 2021 08:08:59 -0800 Subject: [PATCH] Rename `neglect_tps` to `orbit_dataset` --- lisainstrument/instrument.py | 52 +++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/lisainstrument/instrument.py b/lisainstrument/instrument.py index 8147e49..ed01a96 100644 --- a/lisainstrument/instrument.py +++ b/lisainstrument/instrument.py @@ -66,7 +66,7 @@ class Instrument: # Telemetry sampling telemetry_downsampling=86400 * 4, telemetry_t0='orbits', # Inter-spacecraft propagation - orbits='static', neglect_tps=False, + orbits='static', orbit_dataset='tps/ppr', gws=None, interpolation=('lagrange', 31), # Artifacts glitches=None, @@ -110,10 +110,10 @@ class Instrument: orbits: path to orbit file, dictionary of constant PPRs for static arms, 'static' for a set of static PPRs corresponding to a fit of Keplerian orbits around t = 0, or dictionary of PPR time series - neglect_tps: read orbit file's proper pseudo-ranges (PPRs) in TPS (spacecraft proper times) - if this is False, read orbit file's light travel times (LTTs) in TCB (coordinate time) - and ignore relativistic effects if this is True; this parameter is ignored if we don't - read orbits from an orbit file (see `orbits` parameter) + orbit_dataset: datasets to read from the orbit file, must be 'tps/ppr' or 'tcb/ltt'; + if set to 'tps/ppr', read proper pseudo-ranges (PPRs) in TPSs (proper times), + if set to 'tcb/ltt', read light travel times (LTTs) in TCB (coordinate time); + ignored if no orbit files are used gws: path to gravitational-wave file, or dictionary of gravitational-wave responses interpolation: interpolation function or interpolation method and parameters; use a tuple ('lagrange', order) with `order` the odd Lagrange interpolation order; @@ -171,7 +171,12 @@ class Instrument: if isinstance(orbits, str) and orbits != 'static': logger.debug("Reading initial time from orbit file '%s'", orbits) with File(orbits, 'r') as orbitf: - attr = 't0' if neglect_tps else 'tau0' + if orbit_dataset == 'tcb/ltt': + attr = 't0' + elif orbit_dataset == 'tps/ppr': + attr = 'tau0' + else: + raise ValueError(f"invalid orbit dataset '{orbit_dataset}'") self.t0 = float(orbitf.attrs[attr]) else: self.t0 = 0.0 @@ -348,7 +353,7 @@ class Instrument: self.offsets_freqs = ForEachMOSA(offsets_freqs) # Orbits, gravitational waves, glitches - self.init_orbits(orbits, neglect_tps) + self.init_orbits(orbits, orbit_dataset) self.init_gws(gws) self.init_glitches(glitches) @@ -468,12 +473,15 @@ class Instrument: else: raise ValueError(f"invalid locking configuration '{lock}'") - def init_orbits(self, orbits, neglect_tps): - """Initialize orbits.""" + def init_orbits(self, orbits, orbit_dataset): + """Initialize orbits. + + Args: + orbits: `orbits` parameter, c.f. `__init__()` + orbit_dataset: `orbit_dataset` parameter, c.f. `__init__()` + """ if orbits == 'static': logger.info("Using default set of static proper pseudo-ranges") - if not neglect_tps: - logger.warning("Neglecting TPS despite configuration because static PPRs are used") self.orbit_file = None self.pprs = ForEachMOSA({ # Default PPRs based on first samples of Keplerian orbits (v1.0) @@ -481,12 +489,12 @@ class Instrument: '13': 8.3315, '32': 8.3044, '21': 8.3315, }) self.d_pprs = ForEachMOSA(0) - self.neglect_tps = True self.tps_proper_time_deviations = ForEachSC(0) + self.orbit_dataset = None elif isinstance(orbits, str): logger.info("Using orbit file '%s'", orbits) self.orbit_file = orbits - self.neglect_tps = neglect_tps + self.orbit_dataset = orbit_dataset with File(self.orbit_file, 'r') as orbitf: version = orbitf.attrs['version'] logger.debug("Using orbit file version %s", version) @@ -495,36 +503,38 @@ class Instrument: else: raise ValueError(f"unsupported orbit file version '{version}'") else: - logger.info("Using user-provided proper pseudo-ranges and derivatives thereof") - if not self.neglect_tps: - logger.warning("Neglecting TPS despite configuration because user-provided PPRs are used") + logger.info("Using user-provided proper pseudo-ranges and derivatives") self.orbit_file = None - self.neglect_tps = True self.pprs = ForEachMOSA(orbits) self.d_pprs = self.pprs.transformed(lambda _, x: 0 if np.isscalar(x) else np.gradient(x, self.physics_dt) ) self.tps_proper_time_deviations = ForEachSC(0) + self.orbit_dataset = None def init_orbits_file_1_0(self, orbitf): """Initialize orbits from an orbit file version ~= 1.0.""" def pprs(mosa): - if self.neglect_tps: + if self.orbit_dataset == 'tcb/ltt': times = orbitf['tcb']['t'][:] values = orbitf[f'tcb/l_{mosa}']['tt'] - else: + elif self.orbit_dataset == 'tps/ppr': times = orbitf['tps']['tau'][:] values = orbitf[f'tps/l_{mosa}']['ppr'] + else: + raise ValueError(f"invalid orbit dataset '{self.orbit_dataset}'") return InterpolatedUnivariateSpline(times, values, k=5, ext='raise') def d_pprs(mosa): - if self.neglect_tps: + if self.orbit_dataset == 'tcb/ltt': times = orbitf['tcb']['t'][:] values = orbitf[f'tcb/l_{mosa}']['d_tt'] - else: + elif self.orbit_dataset == 'tps/ppr': times = orbitf['tps']['tau'][:] values = orbitf[f'tps/l_{mosa}']['d_ppr'] + else: + raise ValueError(f"invalid orbit dataset '{self.orbit_dataset}'") return InterpolatedUnivariateSpline(times, values, k=5, ext='raise') def tps_proper_time_deviations(sc): -- GitLab