TEM verification data

A TEM verification history contains the measured point data, its normative evaluation, and the forward-power references derived for later immunity tests. Only load trusted pickles with mpylab.env.Measure.load_pickle_compat().

Indices and structure

description is the user-selected dataset name, for example "stage1_verification". Frequencies are numeric mapping keys in hertz. verification_target_label identifies a measured verification target; target_label identifies a derived immunity-test level. Applications should construct neither label themselves.

rawData_Verification[description]
processedData_Verification[description]
├── target_results[verification_target_label]
├── immunity_reference[target_label][frequency]
└── all_targets_summary

Schema 4 always places explicitly labelled verification targets below target_results—including a single labelled target. Use select_verification_target. There is no order-dependent flat target projection and no duplicate frequency-first immunity-reference mapping.

Raw data

The raw dataset is available as:

raw = history.rawData_Verification[description]

Important metadata are verification_evaluation_schema_version (4), geometry, uniform_area_name, uniform_area (the complete CalibrationPlane), probe_to_cell_axis_mappings, verification_field_strength, target_forward_power, target_forward_power_level_dbm, immunity_test_field_strengths, verification_measurement_targets, amplifier_saturation_test_field_factor, amplifier_saturation_decision_settings, and initial_signal_generator_power_level_dbm. The stored mg remains unchanged; schema 4 deliberately does not migrate the measurement graph.

Measurements are indexed as follows:

raw["efield"][frequency][port][point_index] -> list[entry]

Each entry uses descriptive names: cell_field_vector and optional probe_field_vector contain Quantity(V/m) vectors; measured_forward_power and measured_backward_power are Quantity(W). Optional fields record the point, probe mapping, leveling, verification field strengths, and amplifier-saturation evidence.

Normative evaluation

constant_forward_power follows IEC 61000-4-20, 5.2.2.4.1. constant_field_strength follows 5.2.2.4.2 and Equation 17. Absolute logarithmic power levels are stored in dBm:

\[P_\mathrm{ref,dBm}=\overline{P_\mathrm{dBm}}+k\,s_P,\]

where \(s_P\) is a spread in dB and \(k=1.15\) by default. Therefore measured_forward_power_level_mean_dbm and normative_reference_forward_power_level_dbm are absolute dBm levels, whereas measured_forward_power_sigma_db remains a relative dB quantity.

The regular field-uniformity criterion is strictly below 2.61 dB; 2.61 dB already begins the exception band, which ends at 4.35 dB. Likewise, the regular TEM-mode criterion is strictly Q75 < 0.5; Q75 == 0.5 begins the exception band.

Processed target result

After selecting a target (or for an unlabelled legacy-style run), these are the principal frequency-indexed fields:

Reference and assessment fields

Key

Type

Meaning

normative_reference_field_strength[frequency]

Quantity(V/m)

Reference field from the selected uniformity evaluation.

normative_reference_forward_power[frequency]

Quantity(W)

Normatively derived reference forward power.

normative_reference_forward_power_level_dbm[frequency]

float or None

Same statistical reference as an absolute dBm level when applicable.

normative_reference_forward_power_method[frequency]

str

Derivation-method identifier.

measured_forward_power_samples[frequency]

sequence of Quantity(W)

Point-wise measurements.

measured_forward_power_mean[frequency]

Quantity(W)

Arithmetic mean; not a substitute for the normative reference.

measured_forward_power_level_mean_dbm[frequency]

float

Mean of the measured absolute power levels in dBm.

measured_forward_power_sigma_db[frequency]

float

Sample standard deviation in dB.

field_strength_per_sqrt_forward_power[frequency]

Quantity((V/m)/sqrt(W))

Field factor based on the normative references.

verification_target_field_strength[frequency]

Quantity(V/m)

Effective verification target.

forward_power_for_verification_target[frequency]

Quantity(W)

Normative power scaled to that target.

verification_by_frequency contains the complete evaluator result. frequency_results is the report-oriented frequency view; point_measurements_by_frequency contains complete point entries, and point_results contains compact point summaries. The related fields include normative_reference_field_strength_by_scale, measured_primary_field_level_mean_dbv_per_m, measured_primary_field_sigma_db, measured_primary_field_mean, measured_primary_field_standard_deviation, primary_field_uniformity_span_db, secondary_to_primary_field_ratio_q75, measured_point_coverage, and normatively_covered_points.

verification_passed[frequency] combines field uniformity, TEM-mode dominance, and target reachability. The individual maps are field_uniformity_passed and tem_mode_passed. frequency_range_summary contains verification_overall_passed, field_uniformity_overall_passed, tem_mode_overall_passed, and the exception-frequency counts. all_targets_summary summarizes the target container. Provenance is grouped below provenance; reprocessing details are in provenance["reprocessing"]. reference_dataset registers the derived reference with the history. analytical_e0y_max_series_index describes the optional analytical comparison setting.

Immunity references

The sole canonical path is:

processed["immunity_reference"][target_label][frequency]

An entry contains label, immunity_test_field_strength, normative_reference_field_strength, normative_reference_forward_power, and immunity_test_forward_power. The separate amplifier-saturation procedure uses amplifier_saturation_test_field_factor, amplifier_saturation_test_field_increase_db, amplifier_saturation_test_field_strength, and amplifier_saturation_test_forward_power. Its evidence is stored below amplifier_saturation_check_passed, amplifier_saturation_check_methods, amplifier_saturation_decision_settings, and amplifier_saturation_check. The saturation-test power is not the regular EUT exposure power.

Scaling follows

\[P_\mathrm{test}=P_\mathrm{ref} \left(\frac{E_\mathrm{test}}{E_\mathrm{ref}}\right)^2.\]

Preferred access

from mpylab.env.Measure import load_pickle_compat
from mpylab.tools.aunits import EFIELD
from scuq.quantities import Quantity

history = load_pickle_compat("temcell_history.p")
target = history.select_verification_target(
    reference="stage1_verification",
    verification_target="verification-3-v-per-m",
)
selection = history.select_immunity_reference_power(
    reference="stage1_verification",
    frequency=150e6,
    required_immunity_efield=Quantity(EFIELD, 3.0),
)
power = selection["immunity_test_forward_power"]

The later immunity measurement records this selection below rawData_Immunity[description]["immunity_reference_power_selection"][frequency] and in processedData_Immunity.

Reprocessing and compatibility

Schema 4 is a deliberate hard rename; schema-3 aliases are not written. Loading a historical pickle does not silently re-evaluate it. A trusted source can be migrated reproducibly without overwriting it:

python tools/reprocess_tem_verification_pickle.py SOURCE.p CORRECTED.p \
    --description stage1_verification

The corrected result records the source SHA256, mpylab version, UTC timestamp, and standards reference. A power value alone never authorizes exposure: verification, amplifier-saturation evidence, frequency coverage, preflight, and configured protection limits must all be valid.