Home / Docs-Technical WhitePaper / 08-EFT.WP.Core.Sea v1.0
Appendix A — Device Field Dictionary and Examples
I. Field Hierarchy and Naming Conventions
- Namespaces
sensor.* (identity & specs), cal.* (calibration & coefficients), acq.* (acquisition configuration), time.* (timebase & sync), filt.* (conditioning & anti-alias), spec.* (spectrum & features), env.* (environment & corrections), path.* (path & arrival time), quality.* (quality & drift), io.* (serialization & manifests). - Foundation rules
All symbols and field names are English plain text; inline symbols are wrapped in backticks (e.g., fs, ENOB, H(f), T_arr, gamma(ell)).
Record both ts (UTC, ISO-8601) and tau_mono (monotonic clock); any expression with division, integration, or composite operators must use parentheses and declare the path or measure, e.g., L_gamma = ( ∫ 1 d ell ).
Arrival time dual forms must co-exist:
T_arr = ( 1 / c_ref ) * ( ∫ n_eff d ell ) and T_arr = ( ∫ ( n_eff / c_ref ) d ell ); the difference is reported as delta_form.
II. sensor.* — Device Identity and Specs
- sensor.sid : str — globally unique sensor identifier. Example: SNSR-IMU-0001.
- sensor.model : str — device model, e.g., ADX-1234.
- sensor.serial : str — factory serial number.
- sensor.class : str — device class, class ∈ {"accel","mic","rf","imu","temp","pressure"}.
- sensor.cal_id : str — active calibration version.
- sensor.A_gain : float, sensor.B_bias : float, sensor.C_offset : float — first-order linear calibration coefficients; applied as x_corr = A_gain * ( x_raw - B_bias ) + C_offset.
- sensor.ENOB : float, sensor.ADC_bits : int — effective number of bits and ADC bit width.
- sensor.DR : float — dynamic range (ratio or dB).
III. acq.* — Sampling and Acquisition Configuration
- acq.fs_nom : float, acq.fs_max : float, acq.fs : float — nominal, max, and actual sampling rate (Hz). Constraint: fs <= fs_max; Nyquist hard constraint fs >= 2 * f_max.
- acq.Delta_t : float — analysis window length (s).
- acq.window : str — window function { "rect","hann","hamming","blackman","flattop" }.
- acq.t0 : ts, acq.t1 : ts — UTC timestamps delimiting the acquisition interval.
- acq.pretrigger : float, acq.posttrigger : float — preserved durations (s) around trigger.
- acq.fs_hat : float — empirical rate estimate, fs_hat = ( N - 1 ) / ( tau_{N-1} - tau_0 ).
IV. time.* — Timebase and Synchronization
- time.clock_id : str, time.sync_ref : str — clock ID and reference, e.g., "ptp", "gps", "ntp".
- time.alpha : float, time.beta : float — skew/offset in ts_i(t) = alpha_i * tau_mono + beta_i.
- time.J : float — timing jitter (s or ms).
- time.u_alpha : float, time.u_beta : float — uncertainty of alpha/beta.
- time.ts_start : ts, time.ts_end : ts — UTC boundaries of the data block.
- time.tau_start : float, time.tau_end : float — monotonic clock boundaries (s, from system epoch or common origin).
V. filt.* — Conditioning and Anti-Aliasing
- filt.H_rev : str — filter-chain revision (must not be confused with T_fil/T_trans).
- filt.chain : list[dict] — ordered filter stages, e.g., {type:"lp", order:6, f_c:4800.0, ripple_db:0.1, stop_db:80.0}.
- filt.f_c : float, filt.BW : float — primary cutoff and passband width (Hz), recommended f_c in [0.4, 0.45] * fs.
- filt.tau_g : float — group delay estimate (s), report as tau_g(H).
- filt.AGC : dict|None — AGC settings {target_dBFS, attack_ms, release_ms, limit_db}.
VI. spec.* — Spectrum and Features
- spec.method : str — PSD estimator, default "welch".
- spec.seg : int, spec.overlap : float, spec.window : str — Welch segment count, overlap, and window.
- spec.fft_len : int, spec.df : float — FFT length and frequency resolution.
- spec.S_xx_units : str — PSD units (e.g., "power/Hz").
- spec.features : dict — suggested keys: {"band_power_[f1_f2]","crest","THD","kurtosis","SNR_dB"}.
- spec.E_psd : float — spectral error metric
E_psd = ( ∫_{0}^{BW} | S_xx_meas(f) - S_xx_ref(f) | d f ) / ( ∫_{0}^{BW} S_xx_ref(f) d f ).
VII. env.* — Environment and Corrections
- env.temp : float, env.hum : float, env.press : float — environmental readings (units per sensor domain, e.g., degC, %RH, Pa).
- env.RefCond : dict — reference conditions, e.g., {temp:23.0, hum:45.0, press:101325.0}.
- env.correction_applied : bool — whether corr_env(x; RefCond) has been applied.
- env.U : float, env.u_c : float, env.k : float — expanded uncertainty U = k * u_c.
VIII. path.* — Path and Arrival Time
- path.gamma_desc : str — geometric description or key of the gamma(ell) path.
- path.L_gamma : float — path length L_gamma = ( ∫ 1 d ell ).
- path.c_ref : float, path.n_eff_model : str — reference speed and effective index model revision.
- path.T_arr_meas : float, path.T_arr_model : float — measured/modelled arrival time (s).
- path.delta_form : float — dual-form difference
delta_form = | ( 1 / c_ref ) * ( ∫ n_eff d ell ) - ( ∫ ( n_eff / c_ref ) d ell ) |. - path.toa_model_rev : str — arrival-time model revision.
IX. quality.* — Quality and Drift
- quality.q_score : float — quality score q_score ∈ [0,1].
- quality.clip_rate : float, quality.missing_rate : float — clipping ratio and missingness (from m ∈ {0,1} source mask).
- quality.D : float — drift magnitude (consistent with Chapter 9), e.g., D = || mu_x - mu_ref || / sigma_ref.
- quality.alert : dict|None — last alert summary {kind, ts, level}.
X. io.* — Serialization and Manifests
- io.fmt : str — file/stream format, fmt ∈ {"jsonl","csv","parquet","nc","tfrecord"}.
- io.compress : str|None — compression algorithm (e.g., "zstd").
- io.partition_by : list[str] — lake partition keys, e.g., ["ts_date","sid"].
- io.bytes_raw : int, io.bytes_stored : int, io.bytes_compressed : int — raw/stored/compressed sizes; storage efficiency SE = bytes_raw / bytes_stored, compression ratio CR = bytes_raw / bytes_compressed.
- io.manifest_rev : str — manifest revision; must anchor window, window function, filter and model versions.
XI. Integrity and Consistency Checks (Extract)
- Sampling stability: fs >= 2 * f_max, record fs_hat and |fs_hat - fs_nom| / fs_nom.
- Timebase consistency: all delays and jitter on tau_mono; ts for publication/audit.
- Anti-aliasing: provide H(f) and f_c, report tau_g(H).
- Arrival time: provide gamma(ell), d ell, c_ref, n_eff, and delta_form.
- Quality loop: missing marked with m=0; q_score and D must be traceable to raw chunks and parameter versions.
XII. Example 1 — LAB Accelerometer
{
"sensor": {
"sid": "SNSR-ACC-0007",
"model": "ADX-1234",
"serial": "SN-A1B2C3",
"class": "accel",
"cal_id": "CAL-2025-01",
"A_gain": 0.9987,
"B_bias": 0.0012,
"C_offset": 0.0000,
"ENOB": 17.6,
"ADC_bits": 24,
"DR": 98.0
},
"acq": {
"fs_nom": 20000.0,
"fs_max": 25600.0,
"fs": 20000.0,
"Delta_t": 10.0,
"window": "hann",
"t0": "2025-08-30T09:00:00Z",
"t1": "2025-08-30T09:00:10Z",
"fs_hat": 19999.8
},
"time": {
"clock_id": "clk_lab_01",
"sync_ref": "ptp",
"alpha": 0.9999997,
"beta": 2.3e-06,
"J": 8.0e-06,
"u_alpha": 1.0e-07,
"u_beta": 5.0e-07,
"ts_start": "2025-08-30T09:00:00Z",
"ts_end": "2025-08-30T09:00:10Z",
"tau_start": 12345.0,
"tau_end": 12355.0
},
"filt": {
"H_rev": "H-acc-v2",
"chain": [
{"type": "lp", "order": 6, "f_c": 9000.0, "ripple_db": 0.1, "stop_db": 80.0}
],
"f_c": 9000.0,
"BW": 9000.0,
"tau_g": 2.1e-04,
"AGC": null
},
"spec": {
"method": "welch",
"seg": 16,
"overlap": 0.5,
"window": "hann",
"fft_len": 262144,
"df": 0.076,
"S_xx_units": "power/Hz",
"features": {"band_power_[0_2000]": 1.23, "crest": 3.7, "THD": 0.012, "kurtosis": 3.05, "SNR_dB": 42.1},
"E_psd": 0.018
},
"env": {
"temp": 23.2,
"hum": 45.1,
"press": 101322.0,
"RefCond": {"temp": 23.0, "hum": 45.0, "press": 101325.0},
"correction_applied": true,
"u_c": 0.003,
"k": 2.0,
"U": 0.006
},
"path": {
"gamma_desc": "bench-straight-1m",
"L_gamma": 1.000,
"c_ref": 343.0,
"n_eff_model": "n_air_std_v1",
"T_arr_meas": 0.00295,
"T_arr_model": 0.00292,
"delta_form": 3.0e-05,
"toa_model_rev": "toa-air-1.0"
},
"quality": {
"q_score": 0.992,
"clip_rate": 0.0,
"missing_rate": 0.0,
"D": 0.12,
"alert": null
},
"io": {
"fmt": "parquet",
"compress": "zstd",
"partition_by": ["ts_date","sid"],
"bytes_raw": 160000000,
"bytes_stored": 52000000,
"bytes_compressed": 48000000,
"manifest_rev": "mf-sea-1.0"
}
}
XIII. Example 2 — FIELD Microphone (Long-duration)
{
"sensor": {
"sid": "SNSR-MIC-1145",
"model": "UMK-500",
"serial": "SN-9F2E7Q",
"class": "mic",
"cal_id": "CAL-2025-02",
"A_gain": 1.002,
"B_bias": 0.0,
"C_offset": 0.0,
"ENOB": 19.2,
"ADC_bits": 24,
"DR": 102.5
},
"acq": {
"fs_nom": 48000.0,
"fs_max": 96000.0,
"fs": 43200.0,
"Delta_t": 60.0,
"window": "hann",
"t0": "2025-08-30T00:00:00Z",
"t1": "2025-08-30T01:00:00Z",
"fs_hat": 43199.7
},
"time": {
"clock_id": "clk_field_02",
"sync_ref": "ntp",
"alpha": 1.0000011,
"beta": -1.1e-05,
"J": 2.2e-04,
"u_alpha": 2.0e-07,
"u_beta": 2.0e-06,
"ts_start": "2025-08-30T00:00:00Z",
"ts_end": "2025-08-30T01:00:00Z",
"tau_start": 501234.0,
"tau_end": 505,
"note": "tau_end trimmed per rotation"
},
"filt": {
"H_rev": "H-mic-v3",
"chain": [
{"type": "hp", "order": 4, "f_c": 20.0, "ripple_db": 0.1, "stop_db": 60.0},
{"type": "lp", "order": 6, "f_c": 19000.0, "ripple_db": 0.2, "stop_db": 80.0},
{"type": "notch", "f0": 50.0, "Q": 30.0}
],
"f_c": 19000.0,
"BW": 18980.0,
"tau_g": 3.6e-04,
"AGC": {"target_dBFS": -12.0, "attack_ms": 10.0, "release_ms": 200.0, "limit_db": -1.0}
},
"spec": {
"method": "welch",
"seg": 8,
"overlap": 0.5,
"window": "hann",
"fft_len": 131072,
"df": 0.33,
"S_xx_units": "power/Hz",
"features": {"band_power_[20_20000]": 0.87, "crest": 4.1, "THD": 0.018, "kurtosis": 3.20, "SNR_dB": 36.7},
"E_psd": 0.041
},
"env": {
"temp": 31.5,
"hum": 65.0,
"press": 100850.0,
"RefCond": {"temp": 23.0, "hum": 45.0, "press": 101325.0},
"correction_applied": true,
"u_c": 0.006,
"k": 2.0,
"U": 0.012
},
"path": {
"gamma_desc": "urban-canyon-seg42",
"L_gamma": 142.3,
"c_ref": 343.0,
"n_eff_model": "n_air_urban_v2",
"T_arr_meas": 0.420,
"T_arr_model": 0.417,
"delta_form": 3.4e-03,
"toa_model_rev": "toa-air-1.1"
},
"quality": {
"q_score": 0.956,
"clip_rate": 0.002,
"missing_rate": 0.004,
"D": 0.38,
"alert": {"kind": "drift", "ts": "2025-08-30T00:47:00Z", "level": "warn"}
},
"io": {
"fmt": "parquet",
"compress": "zstd",
"partition_by": ["ts_date","sid"],
"bytes_raw": 2.4e9,
"bytes_stored": 8.3e8,
"bytes_compressed": 7.1e8,
"manifest_rev": "mf-sea-1.0"
}
}
XIV. Example 3 — STREAM Manifest (Micro-batch Ingestion)
{
"sensor": {"sid": "SNSR-RF-2201", "model": "SDR-X9", "serial": "RF-77C1", "class": "rf", "cal_id": "CAL-2025-03", "ENOB": 12.8, "ADC_bits": 14, "DR": 70.0},
"acq": {"fs_nom": 2000000.0, "fs_max": 5000000.0, "fs": 2000000.0, "Delta_t": 1.0, "window": "hann", "fs_hat": 1999995.0},
"time": {"clock_id": "clk_sdr_01", "sync_ref": "gps", "alpha": 1.0, "beta": 0.0, "J": 4.0e-06, "ts_start": "2025-08-30T09:10:00Z", "ts_end": "2025-08-30T09:10:01Z", "tau_start": 201.0, "tau_end": 202.0},
"filt": {"H_rev": "H-rf-v1", "chain": [{"type": "bpf", "order": 8, "f1": 915000000.0, "f2": 916000000.0, "ripple_db": 0.5, "stop_db": 60.0}], "f_c": 915500000.0, "BW": 1000000.0, "tau_g": 1.0e-06},
"spec": {"method": "welch", "seg": 4, "overlap": 0.5, "window": "hann", "fft_len": 2097152, "df": 0.96, "S_xx_units": "power/Hz", "features": {"band_power_[915_916]": 2.78, "crest": 5.2, "SNR_dB": 28.4}},
"env": {"temp": 27.0, "hum": 40.0, "press": 101000.0, "RefCond": {"temp": 23.0, "hum": 45.0, "press": 101325.0}, "correction_applied": false},
"path": {"gamma_desc": "rf-los-200m", "L_gamma": 200.0, "c_ref": 299792458.0, "n_eff_model": "n_rf_free_v1", "T_arr_meas": 6.72e-07, "T_arr_model": 6.67e-07, "delta_form": 5.0e-09, "toa_model_rev": "toa-rf-1.0"},
"quality": {"q_score": 0.941, "clip_rate": 0.0, "missing_rate": 0.0, "D": 0.21},
"io": {"fmt": "tfrecord", "compress": "zstd", "partition_by": ["ts_minute","sid"], "bytes_raw": 8.0e7, "bytes_stored": 2.4e7, "bytes_compressed": 2.0e7, "manifest_rev": "mf-sea-1.0"}
}
XV. Minimal Required Manifest Set (Pre-commit Checklist)
- Identity: sensor.sid, sensor.model, sensor.serial, sensor.cal_id.
- Acquisition: acq.fs, acq.Delta_t, acq.window, acq.t0/acq.t1 or time.ts_start/time.ts_end.
- Timebase: time.clock_id, time.sync_ref, time.alpha, time.beta, time.J.
- Conditioning: filt.H_rev, filt.f_c, filt.BW, filt.tau_g.
- Spectrum: spec.method, spec.seg, spec.overlap, spec.window, spec.fft_len or spec.df.
- Environment: env.RefCond, env.correction_applied.
- Path: path.c_ref, path.n_eff_model, path.gamma_desc, path.T_arr_meas or path.T_arr_model, path.delta_form.
- Quality: quality.q_score, quality.clip_rate, quality.missing_rate.
- Lake I/O: io.fmt, io.compress, io.partition_by, io.manifest_rev.
XVI. Constraints and Conflict Checks (Execution Points)
- Naming conflicts
Never confuse T_fil (tension) with T_trans (transmission coefficient); path/arrival-time fields must only use the c_ref, n_eff, T_arr conventions. - Stability
Any streaming channel must satisfy rho = lambda / mu < 1; backpressure policy must be recorded in the runtime configuration (see Core.Threads). - Convention locking
Spectrum and arrival-time reports must record H_rev, spec.window, spec.method, path.toa_model_rev, and env.RefCond in io.manifest_rev.
XVII. Cross-Volume Anchor References
- Arrival time & path: c_ref, gamma(ell), d ell, L_gamma, n_eff(x,t), T_arr (see Energy Filaments and Chapter 8 herein).
- Concurrency & ingestion: chan, cap, q_len, bp, W_q (see Core.Threads).
- Metrology & uncertainty: U = k * u_c, u(alpha), u(beta) (see Core.Metrology).
XVIII. Change Tracking and Versioning (Recommended Fields)
Every version increment must be recorded in the manifest to guarantee replayable diffs and auditable lineage.sensor.hw_rev : str, filt.H_rev : str, spec.rev : str, path.toa_model_rev : str, env.RefCond_rev : str, io.manifest_rev : str.
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/