Read dPPRs and integrate for PPRs
The dPPRs (derivatives of PPRs) couple directly to our interferometric measurements in-band. Therefore, we have quite stringent requirements in terms of numerical noise and artifacts; in particular, interpolation artifacts due to the large upsampling from orbits rate to physics rate. We currently read the PPRs from orbit files, spline-interpolate them, and then take the spline derivative to get the dPPRs. This seems to leave artifacts at multiples of the orbits sampling rate.
We should read the dPPRs from the orbit files, and then spline-interpolate them directly. We also need to analytically integrate the interpolated dPPR (including the constant by reading the first sampling of the PPRs from the orbit file) to get the PPRs.
Merge request reports
Activity
changed milestone to %v1.5
added feature label
assigned to @j2b.bayle
requested review from @aurelien.hees
@aurelien.hees could you take a quick look again?
- Resolved by Jean-Baptiste Bayle
Looking good. Maybe one comment: in the doc from the antiderivative function, nothing is mentionned about the constant of integration. Apparently, the function does what we want it to do for this constant of integration. But maybe a suggestion would be to replace
pprs_const(mosa) + d_pprs(mosa).antiderivative()(self.physics_t)
by
pprs_const(mosa) + d_pprs(mosa).antiderivative()(self.physics_t)-d_pprs(mosa).antiderivative()(self.orbit_t0)
just to be 100% sure that nothing got screwed with this constant of integration. Same for
python ppr_dataset[0, link_index[mosa]] + int_interpolate(d_ppr_dataset[:, link_index[mosa]], self.physics_t)
which could be replaced bypython ppr_dataset[0, link_index[mosa]] + int_interpolate(d_ppr_dataset[:, link_index[mosa]], self.physics_t)-int_interpolate(d_ppr_dataset[:, link_index[mosa]], self.physics_t[0])
Apparently this is not required with the current implementation of antiderivative (but this is not guaranteed by reading the doc from this function).
mentioned in commit aac06ebf