Skip to content
Snippets Groups Projects

Resolve "Fix starting time when interpolating frequency plan files"

All threads resolved!
+ 12
12
@@ -236,6 +236,11 @@ class Instrument:
np.arange(self.physics_size + self.initial_telemetry_physics_size, dtype=np.float64) * self.physics_dt
self.physics_et_withinitial = self.physics_t_withinitial - self.t0
# Orbits, gravitational waves, glitches
self.init_orbits(orbits, orbit_dataset)
self.init_gws(gws)
self.init_glitches(glitches)
# Instrument topology
self.central_freq = float(central_freq)
self.init_lock(lock)
@@ -382,11 +387,6 @@ class Instrument:
else:
self.mosa_angles = ForEachMOSA(mosa_angles)
# Orbits, gravitational waves, glitches
self.init_orbits(orbits, orbit_dataset)
self.init_gws(gws)
self.init_glitches(glitches)
# Interpolation and antialiasing filter
self.init_interpolation(interpolation)
self.init_aafilter(aafilter)
@@ -534,7 +534,7 @@ class Instrument:
# Switch between various fplan file standards
if version in SpecifierSet('== 1.1.*', True):
logger.debug("Interpolating locking beatnote frequencies with piecewise linear functions")
times = self.orbits_t0 + np.arange(fplanf.attrs['size']) * fplanf.attrs['dt']
times = self.orbit_t0 + np.arange(fplanf.attrs['size']) * fplanf.attrs['dt']
interpolate = lambda x: InterpolatedUnivariateSpline(times, x, k=1, ext='raise')(self.physics_t)
lock_beatnotes = {}
# Go through all MOSAs and pick locking beatnotes
@@ -571,7 +571,7 @@ class Instrument:
if orbits == 'static':
logger.info("Using default set of static proper pseudo-ranges")
self.orbit_file = None
self.orbits_t0 = self.t0
self.orbit_t0 = self.t0
self.pprs = ForEachMOSA({
# Default PPRs based on first samples of Keplerian orbits (v2.0.dev)
'12': 8.33242295, '23': 8.30282196, '31': 8.33242298,
@@ -600,7 +600,7 @@ class Instrument:
else:
logger.info("Using user-provided proper pseudo-ranges and derivatives")
self.orbit_file = None
self.orbits_t0 = self.t0
self.orbit_t0 = self.t0
self.pprs = ForEachMOSA(orbits)
self.d_pprs = self.pprs.transformed(lambda _, x:
0 if np.isscalar(x) else np.gradient(x, self.physics_dt)
@@ -645,9 +645,9 @@ class Instrument:
try:
logger.debug("Reading orbit's t0")
if self.orbit_dataset == 'tcb/ltt':
self.orbits_t0 = orbitf['tcb']['t'][0]
self.orbit_t0 = orbitf['tcb']['t'][0]
elif self.orbit_dataset == 'tps/ppr':
self.orbits_t0 = orbitf['tps']['tau'][0]
self.orbit_t0 = orbitf['tps']['tau'][0]
else:
raise ValueError(f"invalid orbit dataset '{self.orbit_dataset}'")
logger.debug("Interpolating proper pseudo-ranges")
@@ -673,7 +673,7 @@ class Instrument:
# show a helpful error message if orbit file is too short
try:
logger.debug("Reading orbit's t0")
self.orbits_t0 = orbitf.attrs['t0']
self.orbit_t0 = orbitf.attrs['t0']
logger.debug("Interpolating proper pseudo-ranges")
dataset = orbitf['tcb/ltt'] if self.orbit_dataset == 'tcb/ltt' else orbitf['tps/ppr']
self.pprs = ForEachMOSA(lambda mosa: interpolate(dataset[:, link_index[mosa]], self.physics_t))
@@ -1794,7 +1794,7 @@ class Instrument:
'sc_jitter_phi_asds', 'sc_jitter_eta_asds',
'sc_jitter_theta_asds', 'mosa_jitter_phi_asds',
'dws_asds', 'mosa_angles',
'orbit_file', 'orbit_dataset', 'orbits_t0',
'orbit_file', 'orbit_dataset', 'orbit_t0',
'gw_file', 'gw_group',
'glitch_file',
'interpolation_order',
Loading