Flight Test Data Reduction (flight-test-operations/planning/flight-test-data-reduction)
Use when the task is post-flight data reduction for a flight test campaign: calibration correction of the recorded channels, time alignment of traces from separate recorders, smoothing with a moving average filter, computation of the corrected airspeed from the impact pressure, combination of the measurement uncertainty sources, and the data quality verdict that gates the reduced data before the performance analysis.
Domain quick reference
- Calibration correction: V_corr = m * V_raw + b, with m the slope (gain) and b the intercept (offset) of the channel calibration. Example: a slope of 1.02 and an intercept of -0.5 m/s turn a raw 50.0 m/s reading into 50.5 m/s.
- Time alignment: t_aligned = t_raw + offset, with offset in s; a positive offset shifts the trace later in time. Alignment removes the start-time skew between recorders, which is fixed with GPS time tags, tape marks, or maneuver triggers.
- Moving average filter: y_k = (1/N) * sum of the N samples in the window; an n-sample trace gives n - N + 1 smoothed samples. Odd windows are centered on the samples, even windows lag by half a sample. Example: window 3 on [1, 2, 3, 4, 5] m/s gives [2.0, 3.0, 4.0] m/s.
- Corrected airspeed: V_c = sqrt(2 * q_c / rho), with q_c the impact pressure in Pa and rho the air density in kg/m^3. Example: q_c = 6125 Pa at rho = 1.225 kg/m^3 (sea level standard) gives V_c = 100 m/s.
- Combined uncertainty: u_c = sqrt(u_1^2 + u_2^2 + ... + u_n^2), the root sum square (RSS) of the independent standard uncertainties, in the same unit as the contributors. Example: 0.5 m/s and 1.0 m/s combine into 1.118 m/s. The RSS rule is the zero-correlation special case of the GUM first-order law.
- Data quality verdict: a reduced trace is usable when it has no NaN samples, no values outside the valid range of the channel, and no time gaps beyond the allowed maximum; any single issue flags the trace for review.
Workflow
- Load the recorded channels and apply the calibration with apply_calibration(raw, slope, intercept) channel by channel.
- Align the traces with align_time_series(times, offset) so all channels share the same time base.
- Smooth the noisy traces with moving_average(values, window), choosing the window from the signal content and the sample rate.
- Compute the corrected airspeed with corrected_airspeed(impact_pressure, density) from the calibrated impact pressure and the measured density.
- Combine the uncertainty sources with combined_uncertainty(uncertainties) into the combined uncertainty for the reported values.
- Gate the reduced data with data_quality_verdict(times, values, valid_min, valid_max, max_gap) and flag or fix every NaN sample, out-of-range value, and time gap before the performance analysis.
Pitfalls
- Correcting channels without the calibration: raw recorded values carry the sensor gain and offset, so applying the slope and intercept is the first reduction step.
- Forgetting the time alignment: channels recorded on separate recorders start at different times, and unaligned traces smear the maneuver analysis.
- Using an even window without accounting for the half-sample lag: prefer odd windows when the smoothed trace must stay centered on the samples.
- A window larger than the trace: the moving average raises ValueError instead of silently returning a short output.
- Zero density: corrected_airspeed raises ValueError; a zero density is a data error, not a valid flight condition.
- Treating the root sum square as the worst case: RSS assumes independent, uncorrelated sources, and correlated errors combine linearly, which RSS understates.
- Shipping reduced data without the quality verdict: NaN samples, out-of-range values, and time gaps must be flagged before the data feeds the analysis.
Behavior contract (gate 3)
The calibration correction, time alignment, moving average, corrected airspeed, combined uncertainty, and data quality verdict relations are exercised by the gate 3 contract test: scripts/test_flight_test_data_reduction.py against scripts/flight_test_data_reduction.py (stdlib unittest, offline). Run: python3 scripts/test_flight_test_data_reduction.py
Compliance
- Standards referenced, not reproduced: FAR-25 and CS-25 set the flight test and certification context; the calibration, time alignment, filtering, corrected airspeed, and uncertainty relations are common measurement and data reduction methodology, summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.