Home / Docs-Technical WhitePaper / 08-EFT.WP.Core.Sea v1.0
Appendix B — Calibration Workflow Templates
I. Scope and Versioning
- Applies to
Calibration of amplitude, frequency response, sampling/timebase, environmental correction, and path/arrival-time for sensor.class ∈ {"accel","mic","rf","imu","temp","pressure"}. - Version anchors
sensor.cal_id (calibration version); filt.H_rev (filter-chain revision); path.toa_model_rev (arrival-time model); io.manifest_rev (manifest revision). - Common conventions
Linear calibration: x_corr = A_gain * ( x_raw - B_bias ) + C_offset.
Timebase model: ts_i(t) = alpha_i * tau_mono + beta_i.
Arrival-time dual forms:
T_arr = ( 1 / c_ref ) * ( ∫ n_eff d ell ) and T_arr = ( ∫ ( n_eff / c_ref ) d ell ); discrepancy
delta_form = | ( 1 / c_ref ) * ( ∫ n_eff d ell ) - ( ∫ ( n_eff / c_ref ) d ell ) |.
Uncertainty: U = k * u_c.
II. Common Preparation and Record Template (CAL-0)
- Prepare
Traceable reference certificates and validity; env.RefCond and control ranges; sampling config acq.fs, acq.window, filt.chain.
Timebase & sync: time.sync_ref ∈ {"ptp","gps","ntp"}, record alpha, beta, J, and uncertainties u_alpha, u_beta. - Record
Metadata: sensor.sid, sensor.model, sensor.serial, sensor.cal_id_prev.
Data blocks: time.ts_start, time.ts_end, acq.fs_hat, env.temp, env.hum, env.press.
Results: coefficients, residuals, coverage, quality.q_score, U, acceptance decision.
III. Linear Amplitude Calibration (Mx-C1)
- Objective
Estimate A_gain, B_bias, C_offset; verify linear region and saturation; cover target DR. - Procedure
- Under env.RefCond, apply N step or evenly spaced references x_ref[k], acquire x_raw[k], k=1..N.
- Fit x_corr = A_gain * ( x_raw - B_bias ) + C_offset, compute residuals r[k] = x_corr[k] - x_ref[k].
- Assess linearity NL = max_k | r[k] | / range(x_ref) and R2.
- Compute expanded uncertainty U = k * u_c, with u_c combining repeatability and reference uncertainty.
- Acceptance
NL <= eps_lin; R2 >= 1 - eps_r2; saturation threshold above target top by margin_db; U <= U_max. - Persist
sensor.A_gain, sensor.B_bias, sensor.C_offset, quality.q_score, env.RefCond, U, sample coverage.
IV. Frequency Response & Anti-Aliasing Calibration (Mx-C2)
- Objective
Identify system transfer H(f) and group delay tau_g(H); set anti-alias parameters f_c, BW, stop-band attenuation. - Procedure
- Use sweep or multitone; capture X_in(f) and X_out(f); estimate H_meas(f) = X_out(f) / X_in(f).
- Compute phase phi(f) and group delay tau_g(H) = - d phi / d omega (numeric derivative, omega = 2 * pi * f).
- Design/validate filt.chain; set f_c in [0.4, 0.45] * fs; meet passband ripple and stopband goals.
- Bound residual alias energy E_alias approx ∑_{k ≠ 0} ∫ | X_in(f - k * fs ) | * | H(f) | d f.
- Acceptance
Passband ripple ≤ r_pb_db; stopband ≥ A_s_db (with BW_alias ≥ 0.55 * fs); max |tau_g(H)| within window below tau_g_max. - Persist
filt.H_rev, filt.f_c, filt.BW, filt.tau_g, spec.window, spec.method, E_alias.
V. Sampling Rate & Timebase Calibration (Mx-C3)
- Objective
Calibrate fs and fs_hat; estimate alpha, beta, J to ensure cross-device consistency. - Procedure
- From a reference pulse train (or known-period signal) compute fs_hat = ( N - 1 ) / ( tau_{N-1} - tau_0 ).
- Align to external reference; fit ts_i(t) = alpha_i * tau_mono + beta_i to obtain alpha_i, beta_i.
- Estimate RMS jitter J and uncertainties u_alpha, u_beta.
- Acceptance
Relative rate error |fs_hat - fs_nom| / fs_nom <= eps_fs; |alpha_i - 1| <= eps_alpha; |beta_i| <= eps_beta; J <= J_max. - Persist
acq.fs_hat, time.alpha, time.beta, time.J, time.u_alpha, time.u_beta.
VI. ADC Quantization & Noise Calibration (Mx-C4)
- Objective
Evaluate ENOB, quantization noise, spurs; verify DR. - Procedure
- Inject a pure tone; choose window and fft_len per Chapter 5; estimate SNR_dB via sine-fit or FFT.
- Compute ENOB = ( SNR_dB - 1.76 ) / 6.02; separate SFDR and noise floor.
- Verify clipping probability and AGC settings (if used).
- Acceptance
ENOB >= ENOB_min; SFDR >= SFDR_min; clip_rate <= clip_max. - Persist
sensor.ENOB, sensor.DR, quality.clip_rate, spec.S_xx_units, tone frequency & amplitude.
VII. Environmental Correction Model Calibration (Mx-C5)
- Objective
Build corr_env(x; RefCond) to regress readings under varying conditions back to env.RefCond. - Model shapes (examples)
Additive: x_env = x_raw + k_T * ( temp - RefCond.temp ) + k_H * ( hum - RefCond.hum ) + k_P * ( press - RefCond.press ).
Multiplicative: x_env = x_raw * ( 1 + a_T * Delta_T + a_H * Delta_H + a_P * Delta_P ). - Procedure
- Design a matrix covering temp/hum/press; collect paired {x_raw, x_ref, env}.
- Fit coefficients; compute residuals r_env and cross-validation error.
- Combine uncertainties to report U = k * u_c.
- Acceptance
In-domain max residual <= eps_env_abs; extrapolation slopes bounded; U <= U_max. - Persist
env.RefCond, env.correction_applied, model coefficients and valid domain, U.
VIII. Arrival Time & Path Calibration (Mx-C6)
- Objective
Calibrate T_arr and n_eff conventions on a known gamma(ell); report delta_form. - Procedure
- Build a path with known geometry; record L_gamma = ( ∫ 1 d ell ), c_ref, and environmental settings affecting n_eff.
- Estimate measured arrival time T_arr_meas = estimate_toa( sig, method="xcorr" ).
- Compute modelled arrival time:
• Form 1: T_arr_1 = ( 1 / c_ref ) * ( ∫ n_eff d ell ).
• Form 2: T_arr_2 = ( ∫ ( n_eff / c_ref ) d ell ). - Report delta_form = | T_arr_1 - T_arr_2 | and bias | T_arr_meas - T_arr_model |.
- Acceptance
delta_form <= eps_form; | T_arr_meas - T_arr_model | <= eps_toa. - I80 binding
path_integral(n_eff, gamma, c_ref); enforce_arrival_time_convention(trace); estimate_toa(sig,"xcorr"). - Persist
path.gamma_desc, path.L_gamma, path.c_ref, path.n_eff_model, path.T_arr_meas, path.T_arr_model, path.delta_form.
IX. Uncertainty Evaluation & Combination (Mx-C7)
- Objective
Provide combined standard uncertainty u_c and expanded uncertainty U for y = f( x_1, ..., x_m ). - Conventions
Linear propagation: u_c^2 approx J Σ J^T, with J = ( ∂f/∂x_1, ..., ∂f/∂x_m ), and Σ the input covariance.
With correlations: u_c^2 = ∑ c_i^2 * u_i^2 + 2 * ∑_{i<j} ρ_{ij} * c_i * c_j * u_i * u_j.
Expanded uncertainty: U = k * u_c (typ. k=2). - Procedure
- Classify sources (Type A repeatability; Type B spec/model/resolution).
- Estimate u_i and correlation ρ_{ij}, assemble Σ.
- Compute u_c, choose coverage k, obtain U.
- Persist
env.u_c, env.k, env.U, and a source contribution breakdown.
X. Drift Monitoring & Re-Calibration Triggers (Mx-C8)
- Metrics
Drift D = || mu_x - mu_ref || / sigma_ref; quality q_score ∈ [0,1]; missing mask m ∈ {0,1}. - Triggers
D >= D_warn → observe; D >= D_recal → re-calibrate; q_score <= q_min or clip_rate >= clip_max → troubleshoot. - Actions
- monitor_drift(baseline, current, fields);
- When triggered, run the relevant Mx-C1..C5 flows;
- Update sensor.cal_id and version anchors; raise_alert(kind="recal", payload=...).
XI. Data Commit and Manifest Template (CAL-IO)
- Minimum required (aligned with Appendix A)
Include sensor.* identity/coefficients, acq.*, time.*, filt.*, spec.*, env.*, path.*, quality.*, io.*. - Version locking
In io.manifest_rev record filt.H_rev, spec.window, spec.method, path.toa_model_rev, env.RefCond.
XII. Audit Checklist (CAL-QA)
- Metrology & conventions
fs >= 2 * f_max; H(f) and tau_g(H) reported; delta_form computed; U = k * u_c reported. - Consistency
All delays/jitter in tau_mono; ts for release/audit; naming conflict rule enforced (T_fil vs T_trans). - Traceability
Data, scripts, coefficients, versions, and report mutually referenced and replayable.
XIII. Reference Script Skeleton (I80 Binding)
# register and load calibration
sns = register_sensor(model="ADX-1234", serial="SN-A1B2C3", meta={"class":"accel"})
cal = load_calibration(sid=sns, cal_id="CAL-2025-01")
# sampling & sync
configure_sampling(sid=sns, fs=20000.0, gain=None)
sync = sync_clocks(sids=[sns], method="ptp", ref="lab-ptp-1")
sync_stats = measure_skew_offset(sids=[sns], window=60.0)
# filter & response
fref = design_filter(kind="lp", params={"order":6, "f_c":9000.0, "ripple_db":0.1, "stop_db":80.0})
sig_f = filter_apply(sig=raw_block, filt=fref)
# FFT/PSD & ENOB
S = psd(sig=sig_f, method="welch", seg=16, overlap=0.5)
F = feature_extract(sig=sig_f, feats=["SNR_dB","THD","kurtosis"])
# environment correction
data_corr = apply_env_correction(data=sig_f, ref={"temp":23.0,"hum":45.0,"press":101325.0})
# time-of-arrival & path
toa = estimate_toa(sig=data_corr, method="xcorr")
tarr = path_integral(n_eff="n_air_std_v1", gamma="bench-straight-1m", c_ref=343.0)
enforce_arrival_time_convention(trace={"T_arr_meas":toa,"T_arr_model":tarr})
XIV. Exceptions and Rollback Template (CAL-RB)
- Input anomalies
If references are unstable/out-of-range: pause, set quality.alert={kind:"ref_unstable"}, discard current block. - Model non-convergence
Switch to a secondary model (e.g., multiplicative → additive); record rationale and affected span. - Convention conflict
If delta_form > eps_form, lock c_ref and n_eff sources first, then re-run path or replace gamma(ell) description.
XV. Report Structure Template (CAL-REP)
- Overview: device, purpose, scenario, env.RefCond.
- Methods: H(f), fs_hat, alpha, beta, model(s), windowing.
- Results: coefficients & ranges, E_alias, ENOB, U, delta_form.
- Acceptance: thresholds vs results; pass/fix list.
- Versions: sensor.cal_id, filt.H_rev, path.toa_model_rev, io.manifest_rev.
XVI. Reuse and Cross-Volume Anchors
- Arrival time & path: c_ref, gamma(ell), d ell, L_gamma, n_eff(x,t), T_arr (see Chapter 8 and the Energy Filaments companion).
- Concurrency & lake: chan, cap, q_len, bp, W_q (see Core.Threads); serialization & manifests (see Chapter 7 and Appendix A).
XVII. Conclusions — Execution Highlights
Six closed-loop templates—linear, frequency response, timebase, environmental, arrival-time, and uncertainty—operate on tau_mono, lock environment with RefCond, and are replayable via version anchors. All formulas, symbols, and definitions are English plain text and strictly aligned with this volume’s unified symbol list.Copyright & License (CC BY 4.0)
Copyright: Unless otherwise noted, the copyright of “Energy Filament Theory” (text, charts, illustrations, symbols, and formulas) belongs to the author “Guanglin Tu”.
License: This work is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0). You may copy, redistribute, excerpt, adapt, and share for commercial or non‑commercial purposes with proper attribution.
Suggested attribution: Author: “Guanglin Tu”; Work: “Energy Filament Theory”; Source: energyfilament.org; License: CC BY 4.0.
First published: 2025-11-11|Current version:v5.1
License link:https://creativecommons.org/licenses/by/4.0/