Skip to main content

Data dictionary

Generated

Generated from schema/tma.yaml at build time by gen-markdown-datadict. Do not edit; change the schema.

Units​

ClassSlotUnit (UCUM)
BearingErrorModelar_sd_radrad
BearingErrorModelar_tau_ss
BearingErrorModelbias_sd_radrad
BearingErrorModelbias_tau_ss
CurvePointt_since_zig_ss
DetectionRowtimestamp_ss
MetricsRecordposition_window_m_medianm
MetricsRecordposition_window_m_p90m
NaiveMeansspeed_mpsm/s
NormalisationConstantsbearing_rate_scale_rad_srad/s
Observationbearing_radrad
Observationtimestamp_ss
ParameterRangestarget_manoeuvre_after_zig_ss
ParameterRangestarget_manoeuvre_margin_ss
ParameterRangestarget_manoeuvre_spacing_ss
ParameterRangeszig2_delay_ss
PlatformStatecourse_radrad
PlatformStatespeed_mpsm/s
PlatformStatetimestamp_ss
PlatformStatex_mm
PlatformStatey_mm
PredictionRowcourse_radrad
PredictionRowcourse_sd_radrad
PredictionRowrange_mm
PredictionRowspeed_mpsm/s
PredictionRowspeed_sd_mpsm/s
PredictionRowtimestamp_ss
PredictionRowvx_sd_mpsm/s
PredictionRowvy_sd_mpsm/s
PredictionRowx_mm
PredictionRowy_mm
ScenarioMetadatamean_range_mm
ScenarioMetadatamin_range_mm
ScenarioMetadatazig_time_ss
ScenarioParametersdt_ss
ScenarioParametersnoise_sigma_radrad
ScenarioParametersownship_course0_radrad
ScenarioParametersownship_speed_mpsm/s
ScenarioParametersownship_turn_rate_rad_srad/s
ScenarioParameterstarget_bearing0_radrad
ScenarioParameterstarget_course_radrad
ScenarioParameterstarget_manoeuvre_angle_radrad
ScenarioParameterstarget_manoeuvre_time_ss
ScenarioParameterstarget_range0_mm
ScenarioParameterstarget_speed_mpsm/s
ScenarioParameterstarget_turn_rate_rad_srad/s
ScenarioParameterswindow_ss
ScenarioParameterszig2_angle_radrad
ScenarioParameterszig2_delay_ss
ScenarioParameterszig_angle_radrad
TargetManoeuvrestart_time_ss

metamodel version: 1.12.0

version: 0.21.0

Single source of truth for every data type in the TMA via ML proof of concept (constitution principle I). Frame: local flat-earth Cartesian, x east, y north, metres, origin at ownship's window-start position. Bearings and courses are true, clockwise from north, radians in [0, 2π). Speeds in m/s. Times in seconds since window start. All stored floats are float32-rounded.

ERD Diagrams​

Component 1 (BearingErrorModel, Continuation, DatasetHeader...)​

Component 2 (ChangeDecision, DetectorThreshold, ModelDigest...)​

Component 3 (Detection, DetectionRow)​

Component 4 (DetectionHeader, PredictionHeader, PredictionInput)​

Component 5 (GateCheck, GateVerdict)​

Component 6 (GateRecomputation, GateScoring)​

Component 7 (NaiveMeans, NaiveModel)​

Component 8 (Prediction, PredictionRow)​

Standalone Classes​

These classes are completely isolated with no relationships and are not used as base classes:

ClassDescription
CurvePointOne point of an error-vs-time-since-zig curve (curves.csv row).
FeatureLayoutDocuments the model tensors (not stored as records). inputs [N, 240, 10]: bearing_sin, bearing_cos, own_x_km, own_y_km, own_course_sin, own_course_cos, own_speed_scaled, time_scaled, valid, window_mask; the derived feature set appends bearing_rate_scaled, rate_valid, intercept_scaled [N, 240, 13]. targets [N, 240, 6]: log_range_km, course_sin, course_cos, speed_scaled, x_km, y_km. loss_mask [N, 240]: window_mask and t ≥ zig_time. Features file format 2 also embeds the source DatasetHeader and the source dataset SHA-256.
MetricsRecordMetric values for one estimator on one slice at one evaluation point.
PairedComparisonA model and a reference estimator compared on rows both answered (converged and finite), with each estimator's coverage reported separately (spec 003 R9).

Classes​

BearingErrorModel​

Realistic bearing error (generator 0.6.0, SRD Annex C §C.14), added to the white noise of noise_sigma_rad: a first-order autoregressive (Gauss–Markov) term and a slowly varying bias, itself a Gauss–Markov process with a long time constant. Both start in their stationary distribution and are drawn every sample (dropped ones included) from the scenario's own stream (sub-index 2), so the geometry and the white noise are those of 0.5.0 for the same seed.

Attributes​

NameCardinality:TypeDescription
ar_sd_rad1..1floatStationary sd of the correlated term.
ar_tau_s1..1floatTime constant of the correlated term.
bias_sd_rad1..1floatStationary sd of the drifting bias.
bias_tau_s1..1floatTime constant of the drifting bias.

Referenced by:​

ChangeDecision​

The single change of the iteration's change round, fixed from validation evidence and committed before phase B trains (spec 003 R5).

Attributes​

NameCardinality:TypeDescription
calibrations0..*UncertaintyCalibrationThe frozen post-hoc interval multipliers of each estimator and output a G7 decision names (schema 0.20.0, spec 018), fitted on validation; tma-g7 refuses others.
carried_model0..1stringG4: the manifest id of the one carried network (Annex B §B.4); tma-g4 refuses network predictions from another model.
carried_models0..*stringG5 (spec 012, schema 0.16.0): the manifest ids of the carried trackers (one or both of T1 and T2, Annex C §C.5), each with its own plan in plans, in the same order; tma-g5 refuses tracker predictions from any other model.
carried_set_rule1..1string
change1..1stringe.g. feature_set: derived
decided_at1..1string
detector_thresholds0..*DetectorThresholdThe frozen alarm threshold of each detector a G6 decision names (schema 0.19.0, spec 017), set on validation at the matched false-alarm rate; tma-g6 refuses others.
fresh_test_count0..1integerThe dataset count whose test split a re-score scores (the plan's dataset.fresh_test.count; schema 0.11.1); tma-g2 refuses a plan with another count.
git_commit1..1string
model_digests0..*ModelDigestThe frozen carried models a re-score scores, by manifest id, with the SHA-256 of each one's weights.bin, manifest.json and model.json; tma-g2 refuses a re-score whose carried set or any of those files differs.
phase_a_experiment1..1string
plan0..1stringThe plan this decision pre-registers (configs/<…>/plan.json). Required from iteration 3 (spec 007): tma-g2 scores a test split only with the decision that names its plan.
plans0..*stringG5: the plan of each carried tracker (configs/phase4//plan.json), in the order of carried_models; they share one dataset and one fresh test seed.
rationale1..1stringValidation evidence cited.
reference_estimator0..1stringG4 (spec 010, schema 0.13.0): the frozen reference tracker's estimator name, which encodes every tuning parameter (e.g. imm-cv0-ct0.03-w0.003-s0.0001-r4); tma-g4 refuses reference predictions with another name.
rescore_of0..1stringThe experiment directory of the inconclusive gate this decision re-scores (SRD §7: one re-score on a larger fresh-seed test set; e.g. experiments/20261024-i4-g2). When present, tma-g2 runs in re-score mode (--rescore-of): the frozen carried models are bound by model_digests instead of by training ancestry, the re-scored gate must be inconclusive and not itself a re-score, and the fresh test seed must differ from its test seed.
stalled1..1booleanAny gated criterion failed or was inconclusive on validation.
test_seed0..1stringDataset seed of the test split the decision commits to (the plan's fresh_test seed, or its dataset seed); tma-g2 checks it against the plan.

Continuation​

The committed model a seeded continuation started from (scripts/train-continue.mjs; spec 003 decision 14, spec 004 decision 15). Its epoch records up to best_epoch are kept in the continued run's manifest, with their val_loss as recorded under the earlier config.

Attributes​

NameCardinality:TypeDescription
best_epoch1..1integer
git_commit0..1stringThe source model's training-code commit, when it recorded one.
rescored_val_loss0..1floatThe source's best weights re-scored under the continued run's loss, written by tma-train when it resumed (spec 004 FR-002). With best_epoch and best_val_loss it makes the kept weights auditable: a run whose best_epoch is the source's must have best_val_loss equal to this value and weights_digest equal to the source's.
val_loss1..1floatThe source's best-epoch validation loss under the source's config.
weights_digest1..1stringSHA-256 of the weights the continuation resumed from (the source's best epoch).

Referenced by:​

CurvePoint​

One point of an error-vs-time-since-zig curve (curves.csv row).

Attributes​

NameCardinality:TypeDescription
course_deg_median0..1float
estimator1..1string
gross_error_rate1..1float
n1..1integer
non_converged_rate0..1float
range_rel_median0..1floatAbsent when not finite (more than half the rows non-converged), as in MetricsRecord.
range_rel_p900..1float
speed_kt_median0..1float
t_since_zig_s1..1float

DatasetHeader​

First record of every dataset file.

Attributes​

NameCardinality:TypeDescription
created_by1..1stringCommand line that produced the file.
dataset_seed1..1stringDecimal uint64 string.
generator_git_commit0..1stringCommit of the checkout that ran tma-generate (absent before schema 0.8.0).
generator_git_dirty0..1booleanTrue when that checkout had uncommitted changes (only allowed with --allow-dirty; absent before schema 0.8.0).
generator_version1..1string
index_end1..1integerLast scenario index (exclusive).
index_start1..1integerFirst scenario index (inclusive).
parameter_ranges1..1ParameterRanges
record1..1RecordKind
redraw_count1..1integerGeometries rejected for violating min_range_m.
scenario_count1..1integer
schema_version1..1string
split1..1Split

Referenced by:​

DatasetRef​

Attributes​

NameCardinality:TypeDescription
digest0..1stringSHA-256 of the dataset file (absent in manifests written before schema 0.4.0).
header1..1DatasetHeader
path1..1string

Referenced by:​

Detection​

One detector's per-timestep scores for one scenario (schema 0.19.0).

Attributes​

NameCardinality:TypeDescription
detector1..1string
record1..1RecordKind
rows1..*DetectionRow
scenario_index1..1integer

DetectionHeader​

First record of every detection file (schema 0.19.0).

Attributes​

NameCardinality:TypeDescription
dataset_digest1..1stringSHA-256 of the truth file.
detector1..1string
inputs0..*PredictionInputThe prediction files the scores were computed from, with their SHA-256s.
record1..1RecordKind
schema_version1..1string

DetectionRow​

One detector's score at one timestep (schema 0.19.0, spec 017). Larger means a manoeuvre is more likely; an alarm is the score at or above the detector's threshold.

Attributes​

NameCardinality:TypeDescription
score1..1floatThe detector's statistic at this timestep (units depend on the detector).
timestamp_s1..1float

Referenced by:​

DetectorThreshold​

One detector's frozen alarm threshold (schema 0.19.0, spec 017).

Attributes​

NameCardinality:TypeDescription
detector1..1string
threshold1..1float

Referenced by:​

EpochRecord​

Attributes​

NameCardinality:TypeDescription
epoch1..1integer
seconds1..1floatCumulative wall time.
train_loss1..1float
val_loss1..1float

Referenced by:​

EstimatorRef​

Attributes​

NameCardinality:TypeDescription
name1..1string
settings_json1..1stringEstimator settings as JSON.

Referenced by:​

ExperimentManifest​

Everything needed to reproduce an experiment run.

Attributes​

NameCardinality:TypeDescription
id1..1string
command_lines1..*string
created1..1stringISO 8601 timestamp.
datasets1..*DatasetRef
estimators1..*EstimatorRef
generator_version1..1string
git_commit1..1string
git_dirty0..1booleanTrue when the working tree had uncommitted changes (absent before schema 0.4.0).
node_version0..1stringNode.js version that ran the experiment (byte identity is promised per pinned Node).
normalisation0..1NormalisationConstants
schema_version1..1string

FeatureLayout​

Documents the model tensors (not stored as records). inputs [N, 240, 10]: bearing_sin, bearing_cos, own_x_km, own_y_km, own_course_sin, own_course_cos, own_speed_scaled, time_scaled, valid, window_mask; the derived feature set appends bearing_rate_scaled, rate_valid, intercept_scaled [N, 240, 13]. targets [N, 240, 6]: log_range_km, course_sin, course_cos, speed_scaled, x_km, y_km. loss_mask [N, 240]: window_mask and t ≥ zig_time. Features file format 2 also embeds the source DatasetHeader and the source dataset SHA-256.

Attributes​

NameCardinality:TypeDescription
feature_set0..1FeatureSetAbsent means raw.
input_channels1..*string
rows1..1integer
target_channels1..*string

FloatRange​

Closed interval [min, max].

Attributes​

NameCardinality:TypeDescription
max1..1float
min1..1float

Referenced by:​

GateCheck​

Attributes​

NameCardinality:TypeDescription
name1..1string
ci_high0..1floatUpper bound of the bootstrap interval.
ci_level0..1floatInterval coverage, e.g. 0.95.
ci_low0..1floatLower bound of the bootstrap interval.
detail1..1string
result1..1GateResult
threshold0..1floatLimit the statistic is tested against.
value0..1floatStatistic tested (e.g. median range error).

Referenced by:​

GateRecomputation​

One estimator re-computed by a gate on a sample of scenarios (schema 0.18.0).

Attributes​

NameCardinality:TypeDescription
estimator1..1string
sample_sha2561..1stringSHA-256 (hex) of the sampled scenario indices, comma-separated in ascending order.
scenarios1..1integerNumber of scenarios re-computed.

Referenced by:​

GateScoring​

What a test-split gate verdict was scored against (schema 0.18.0; tma-g5 writes it as scoring.json beside verdict.json). tma-g5 refuses to score a decision and test seed that another experiment's scoring.json already records, unless it names that experiment (repeat_of).

Attributes​

NameCardinality:TypeDescription
decision1..1stringPath of the decision record, from the repository root.
decision_sha2561..1stringSHA-256 (hex) of the decision record.
gate1..1GateId
recomputed0..*GateRecomputationThe estimators whose rows the gate re-computed on a seeded sample of scenarios from their declared settings, byte-identical to their files (absent in records backfilled for experiments scored before schema 0.18.0).
repeat_of0..1stringThe earlier experiment that scored the same decision and test seed, named with tma-g5 --repeat-of (a reproduction, not a second chance at the gate).
test_seed1..1string
truth_sha2561..1stringSHA-256 (hex) of the test split file.

GateVerdict​

Machine verdict for a gate; the team review records the final decision.

Attributes​

NameCardinality:TypeDescription
checks1..*GateCheck
decided_by1..1string
gate1..1GateId
result1..1GateResult

ManoeuvreSpan​

Where one target manoeuvre lies in a scenario's samples (generator 0.5.0).

Attributes​

NameCardinality:TypeDescription
end_index1..1integerFirst timestep after it completes.
kind1..1ManoeuvreKind
start_index1..1integerFirst timestep after it starts.

Referenced by:​

MetricsRecord​

Metric values for one estimator on one slice at one evaluation point.

Attributes​

NameCardinality:TypeDescription
course_deg_median0..1float
course_deg_p900..1float
estimator1..1string
excluded1..1integer
gross_error_rate0..1float
n1..1integer
non_converged_rate0..1floatFraction of rows with no estimate (scored +∞; explains absent medians/P90).
point1..1string"final" or "zig+s".
position_m_mean0..1floatMean position error over converged rows (non-converged rows count in gross_error_rate).
position_window_m_median0..1floatMedian over scenarios of each scenario's mean position error over its predicted rows (time-late window-mean position, SRD §5; reported, not gated).
position_window_m_p900..1float90th percentile over scenarios of the same per-scenario mean.
range_rel_median0..1float
range_rel_p900..1float
slice1..1string"overall" or e.g. "range_band=5-10km".
speed_kt_median0..1float
speed_kt_p900..1float

ModelDigest​

A trained model named by its manifest id and the SHA-256 of its files (schema 0.11.0; manifest and model.json digests from 0.11.1).

Attributes​

NameCardinality:TypeDescription
manifest_sha2561..1stringSHA-256 (hex) of the model's manifest.json (schema 0.11.1).
model1..1stringThe model's manifest id.
model_json_sha2561..1stringSHA-256 (hex) of the model's model.json, its topology (schema 0.11.1).
weights_sha2561..1stringSHA-256 (hex) of the model's weights.bin; equals its manifest weights_digest.

Referenced by:​

ModelManifest​

Everything needed to reproduce and identify a trained model.

Attributes​

NameCardinality:TypeDescription
id1..1string
best_epoch1..1integer
best_val_loss0..1floatThe validation loss a later epoch must beat, under this manifest's config: the best epoch's val_loss, or, after a continuation changed the loss, the best weights re-scored under the new loss (spec 004 FR-002). Persisted so a chained job resumes against the same value. Absent before schema 0.8.2 (then the best epoch's recorded val_loss).
complete1..1booleanFalse while training is in progress (checkpoint).
config1..1TrainingConfig
continued_from0..1ContinuationPresent when the run was seeded from a committed model (absent before schema 0.8.2).
cpu_model1..1string
epochs1..*EpochRecord
g0_experiment0..1stringId of the G0 experiment whose verdict the training guard accepted.
generator_version1..1string
git_commit0..1stringCommit of the training code, read when training started (absent before schema 0.6.0).
git_dirty0..1booleanTrue when the working tree had uncommitted changes when training started (absent before schema 0.6.0).
node_version1..1string
normalisation1..1NormalisationConstants
parameter_count1..1integer
schema_version1..1string
source_dataset_header0..1DatasetHeaderHeader of the dataset the train features came from (lineage; absent before schema 0.8.0).
stop_reason0..1StopReason
tf_interop_threads0..1integerTF_NUM_INTEROP_THREADS in force when training ran (absent: unset).
tf_intraop_threads0..1integerTF_NUM_INTRAOP_THREADS in force when training ran (absent: unset, so the TensorFlow default of one per core).
tfjs_node_version1..1string
train_features_digest1..1string
val_features_digest1..1string
wall_s1..1float
weights_digest1..1stringSHA-256 of best-epoch weights.

NaiveMeans​

Training-set means used by the naive baseline for one prediction mode.

Attributes​

NameCardinality:TypeDescription
course_cos1..1float
course_sin1..1float
log_range_km1..1floatMean of ln(range in km).
n1..1integerNumber of labels averaged.
speed_mps1..1float

Referenced by:​

NaiveModel​

Naive baseline (SRD §5): predicts training-set means. final uses each scenario's last-sample label; per_timestep uses every post-zig label.

Attributes​

NameCardinality:TypeDescription
final1..1NaiveMeans
per_timestep1..1NaiveMeans
schema_version1..1string
train_digest1..1stringSHA-256 of the train file.

NormalisationConstants​

Fixed scaling constants computed from the train split's input channels only.

Attributes​

NameCardinality:TypeDescription
bearing_rate_scale_rad_s0..1float90th percentile of |trailing least-squares bearing rate| over train inputs; required for the derived feature set.
computed_from1..1stringAlways "inputs_only".
position_scale_km1..1float
speed_scale_mps1..1float
time_scale_s1..1float
train_header_digest1..1stringSHA-256 of the train header.

Referenced by:​

Observation​

One bearing from ownship to target. Stone Soup analogue Detection. When valid is false (dropout) bearing_rad is 0 and must be ignored.

Attributes​

NameCardinality:TypeDescription
bearing_rad1..1float
timestamp_s1..1float
valid1..1boolean

Referenced by:​

  • Scenario : scenario__observations 1..*

PairedComparison​

A model and a reference estimator compared on rows both answered (converged and finite), with each estimator's coverage reported separately (spec 003 R9).

Attributes​

NameCardinality:TypeDescription
course_deg_median0..1float
course_deg_median_ref0..1float
coverage_estimator1..1floatAnswered / scored.
coverage_reference1..1floatAnswered / scored.
estimator1..1string
gross_error_rate0..1float
gross_error_rate_ref0..1float
n_common1..1integer
point1..1string
range_rel_median0..1float
range_rel_median_ref0..1float
range_rel_p900..1float
range_rel_p90_ref0..1float
reference1..1string
slice1..1string
speed_kt_median0..1float
speed_kt_median_ref0..1float

ParameterRanges​

Ranges from which ScenarioParameters are drawn. Initial ownship course, target bearing and target course are always uniform on [0, 2π); zig sign is uniform ±.

Attributes​

NameCardinality:TypeDescription
bearing_error0..1BearingErrorModelGenerator 0.6.0: the same realistic bearing error for every scenario with σ > 0, recorded in its parameters; a noise-free scenario (σ = 0) has none. Absent: white noise only, as 0.5.0.
dropout_fraction1..1FloatRange
dt_s1..1float
los_offset_rad0..1FloatRangeAngle off the line of sight, on the other bow, after an across_los turn; required when zig_rule is across_los.
min_range_m1..1floatGeometries closer than this at any sample are redrawn.
noise_sigma_rad_values1..*floatσ drawn uniformly from this set.
ownship_speed_mps1..1FloatRange
ownship_turn_rate_rad_s0..1FloatRangeTurn rate drawn uniformly per scenario; absent means an instantaneous zig.
range_distribution1..1RangeDistribution
target_course_change_count_weights0..*floatGenerator 0.5.0 (SRD Annex C §C.2): probabilities of 0, 1, 2, … target course changes (summing to 1). Present: every scenario draws its manoeuvres this way, with target_manoeuvre_angle_abs_rad, target_turn_rate_rad_s, target_manoeuvre_after_zig_s and target_manoeuvre_margin_s, and target_manoeuvre_fraction must be absent.
target_manoeuvre_after_zig_s0..1floatEarliest start of the target's turn, after the first sample on leg 2.
target_manoeuvre_angle_abs_rad0..1FloatRangeAbsolute target course change; the sign is uniform ±.
target_manoeuvre_fraction0..1floatProbability a scenario's target makes one course change (generator 0.4.0, SRD Annex B §B.2); absent means the target always holds course, as generators 0.1.0–0.3.0. When present, every scenario draws the manoeuvre parameters (so the PRNG is consumed alike) and the window must fit a turn whether or not one is made.
target_manoeuvre_margin_s0..1floatLeast time from the end of the target's turn to the end of the window, so the gate point (manoeuvre + 5 min) is reached.
target_manoeuvre_spacing_s0..1floatLeast time from the end of one target manoeuvre to the start of the next.
target_range0_m1..1FloatRange
target_speed_change_abs_mps0..1FloatRangeAbsolute speed change; its sign is uniform ±, flipped if the new speed would leave target_speed_mps (redrawn if both signs would).
target_speed_change_fraction0..1floatProbability of one target speed change (generator 0.5.0).
target_speed_change_rate_mps20..1FloatRangeMagnitude of the target's acceleration during a speed change.
target_speed_mps1..1FloatRange
target_turn_rate_rad_s0..1FloatRangeTarget turn rate, drawn uniformly per scenario.
window_s1..1FloatRange
zig2_delay_s0..1FloatRangeDelay from the start of leg 2 to the second turn; absent means one zig. The second zig follows zig_rule (and uses the same turn rate as the first).
zig_angle_abs_rad1..1FloatRange
zig_fraction1..1FloatRange
zig_rule0..1ZigRuleHow each zig is chosen; absent means random (generators 0.1.0–0.2.0). Under across_los zig_angle_abs_rad is still drawn but not used.

Referenced by:​

PlatformState​

One platform state. Stone Soup analogue GroundTruthState.

Attributes​

NameCardinality:TypeDescription
course_rad1..1float
speed_mps1..1float
timestamp_s1..1float
x_m1..1float
y_m1..1float

Referenced by:​

  • Track : track__states 1..*

Prediction​

One estimator's output for one scenario.

Attributes​

NameCardinality:TypeDescription
estimator1..1string
mode1..1PredictionMode
record1..1RecordKind
rows1..*PredictionRow
scenario_index1..1integer

PredictionHeader​

First record of every prediction file.

Attributes​

NameCardinality:TypeDescription
dataset_digest1..1stringSHA-256 of the truth file.
estimator1..1string
inputs0..*PredictionInputThe prediction files a derived estimator was built from, such as a hybrid's tracker and network files (schema 0.17.0; written by tma-hybrid-track). Gates check each against the files they are given.
mode1..1PredictionMode
model_weights_sha2560..1stringSHA-256 (hex) of the weights.bin of the model that made these predictions (schema 0.17.0; written by tma-model-predict). Gates check it against the bound model.
record1..1RecordKind
schema_version1..1string

PredictionInput​

One input file of a derived prediction file: its estimator and the SHA-256 of the whole file (schema 0.17.0).

Attributes​

NameCardinality:TypeDescription
estimator1..1string
sha2561..1stringSHA-256 (hex) of the input file.

Referenced by:​

PredictionRow​

An estimator's target estimate at one timestep.

Attributes​

NameCardinality:TypeDescription
converged1..1boolean
course_rad1..1float
course_sd_rad0..1floatStated standard deviation of the course estimate (schema 0.20.0, spec 018): from a tracker's covariance by the delta method, written only under the -sd name suffix.
iterations0..1integer
log_range_sd0..1floatStandard deviation of the estimator's log range (natural log; about the relative range error), from a velocity_gaussian network (spec 012). Absent for other estimators.
p_manoeuvre0..1floatThe estimator's probability that the target's turn has started by this timestep (velocity_two_hypothesis networks only; spec 011). Absent for other estimators.
range_m1..1float
speed_mps1..1float
speed_sd_mps0..1floatStated standard deviation of the speed estimate (schema 0.20.0, spec 018).
timestamp_s1..1float
vx_sd_mps0..1floatStandard deviation of the estimated east velocity (velocity_gaussian only).
vy_sd_mps0..1floatStandard deviation of the estimated north velocity (velocity_gaussian only).
x_m1..1float
y_m1..1float

Referenced by:​

Scenario​

One ownship-vs-target run over a window.

Attributes​

NameCardinality:TypeDescription
metadata1..1ScenarioMetadata
observations1..*Observation
ownship1..1Track
record1..1RecordKind
target1..1Track

ScenarioMetadata​

Seed, parameter draws and derived slicing keys for one scenario.

Attributes​

NameCardinality:TypeDescription
index1..1integerScenario index within the dataset.
manoeuvre_index0..1integerFirst timestep after the target's turn completes (generator 0.4.0; absent when the target holds course). Gate G4 counts time from here, as earlier gates count from zig_index. Under generator 0.5.0, after the last manoeuvre completes.
manoeuvre_start_index0..1integerFirst timestep after the target's turn starts (generator 0.4.0; absent when the target holds course). Under generator 0.5.0, after the first manoeuvre starts.
manoeuvres0..*ManoeuvreSpanGenerator 0.5.0: each target manoeuvre's sample span, in time order (present, possibly empty, only under 0.5.0).
mean_range_m1..1float
min_range_m1..1float
parameters1..1ScenarioParameters
samples1..1integerNumber of timesteps (60–240).
seed1..1stringScenario seed as a decimal uint64 string.
turn2_start_index0..1integerFirst timestep after the second turn starts (absent with one zig or no turn rate).
turn_start_index0..1integerFirst timestep after the turn starts (absent for an instantaneous zig).
zig2_index0..1integerFirst timestep on leg 3, after the second turn completes (absent with one zig). Gate times still count from zig_index.
zig_index1..1integerFirst timestep on leg 2 (with a rate-limited turn, the first after it completes).
zig_time_s1..1float

Referenced by:​

ScenarioParameters​

The random draws that define one scenario.

Attributes​

NameCardinality:TypeDescription
bearing_error0..1BearingErrorModelRealistic bearing error (generator 0.6.0); absent = white noise only.
dropout_fraction1..1floatProbability each bearing is missing.
dt_s1..1floatBearing interval.
noise_sigma_rad1..1floatBearing noise σ; 0 = noise-free.
ownship_course0_rad1..1floatOwnship course on leg 1.
ownship_speed_mps1..1float
ownship_turn_rate_rad_s0..1floatOwnship turn rate at the zig (rate-limited turn, spec 003 US6). Absent or 0: the course changes instantaneously, as in generator 0.1.0.
target_bearing0_rad1..1floatTrue bearing at window start.
target_course_rad1..1float
target_manoeuvre_angle_rad0..1floatSigned target course change; positive is clockwise.
target_manoeuvre_time_s0..1floatTarget course change (generator 0.4.0, SRD Annex B §B.2): time the target's turn starts, a whole number of samples. Absent: the target holds course.
target_manoeuvres0..*TargetManoeuvreTarget manoeuvres in time order (generator 0.5.0, SRD Annex C §C.2), none overlapping. Present (possibly empty) only under generator 0.5.0 ranges; then the single-turn fields above are absent.
target_range0_m1..1floatRange at window start.
target_speed_mps1..1float
target_turn_rate_rad_s0..1floatTarget turn rate through its course change.
window_s1..1floatWindow length; multiple of dt_s.
zig2_angle_rad0..1floatSigned course change at the second zig; positive is clockwise.
zig2_delay_s0..1floatSecond zig (generator 0.3.0, spec 007): time from the first sample on leg 2 to the start of the second turn. Absent: one zig, two legs.
zig_angle_rad1..1floatSigned course change at the zig; positive is clockwise.
zig_fraction1..1floatZig time as a fraction of the window.

Referenced by:​

TargetManoeuvre​

One target manoeuvre (generator 0.5.0). A course change is an arc at constant speed; a speed change is constant acceleration on a constant course.

Attributes​

NameCardinality:TypeDescription
change1..1floatSigned change: course in rad (positive clockwise) or speed in m/s (positive faster).
kind1..1ManoeuvreKind
rate1..1floatMagnitude of the rate of change, rad/s (course) or m/s² (speed).
start_time_s1..1floatTime the manoeuvre starts, a whole number of samples.

Referenced by:​

Track​

Time-ordered states of one platform. Stone Soup analogue GroundTruthPath.

Attributes​

NameCardinality:TypeDescription
id1..1TrackId
states1..*PlatformState

Referenced by:​

TrainingConfig​

Hyperparameters and seeds for one training run (SRD §4; constitution III).

Attributes​

NameCardinality:TypeDescription
id1..1stringEstimator name used in predictions.
batch_size1..1integer
bucket_batches0..1integerBatches per length-bucketing group (default 16).
feature_set0..1FeatureSetInput channel set; absent means raw. Must match the features files.
kernel_size0..1integerCausal CNN kernel size.
layers0..1integerStacked layers: causal CNN conv layers (no dilation; default 3), or recurrent layers for instantaneous and time_late (default 1; each returns sequences; spec 003 R20).
learning_rate1..1float
length_bucketing0..1booleanLength bucketing (research R15; default false). Each group of bucket_batches batches of the epoch's seeded permutation is sorted by valid length, cut into batches whose rows are trimmed to the longest window, and the batch order is shuffled with a seed derived from train_seed and the epoch. The model takes a variable time dimension. Not for mlp.
loss_weight_course1..1float
loss_weight_manoeuvre0..1floatWeight of the turn-probability cross-entropy term (velocity_two_hypothesis only; spec 011). Absent means 1.
loss_weight_range1..1float
loss_weight_speed1..1float
max_epochs1..1integer
max_wall_s1..1floatWall-clock cap in seconds.
model_kind1..1ModelKind
output_parameterisation0..1OutputParameterisationOutput encoding; absent means course_speed. With velocity, loss_weight_speed weights each velocity component and loss_weight_course is unused (spec 008).
patience1..1integerEpochs without validation improvement before stopping.
shuffle_labels1..1booleanPermute targets across scenarios (leakage check).
tfjs_threads0..1integerTensorFlow intra-op and inter-op thread count, set by tma-train through TF_NUM_INTRAOP_THREADS and TF_NUM_INTEROP_THREADS before tfjs-node loads. Absent: the TensorFlow default (one per core) or whatever the environment sets.
train_limit0..1integerUse only the first N training scenarios (tests and smoke runs).
train_seed1..1stringDecimal uint64; derives initializer seeds and batch order.
units1..1integerLSTM units (per direction), conv filters or dense width.
velocity_scale_mps0..1floatVelocity scale in m/s for the velocity parameterisation (required with it): the top of the generator's target speed range, a constant of the problem, never a truth statistic.

Referenced by:​

UncertaintyCalibration​

One estimator's post-hoc interval multipliers for one output (schema 0.20.0, spec 018): the calibrated q-interval is the estimate ± multiplier × the stated standard deviation.

Attributes​

NameCardinality:TypeDescription
estimator1..1string
output1..1string"log_range", "course" or "speed".
q501..1floatMultiplier for the 50% interval.
q901..1floatMultiplier for the 90% interval.

Referenced by:​

Slots​

NameCardinality/RangeUsed By
bearingErrorModel__ar_sd_rad
Stationary sd of the correlated term.
1..1
float
bearingErrorModel__ar_tau_s
Time constant of the correlated term.
1..1
float
bearingErrorModel__bias_sd_rad
Stationary sd of the drifting bias.
1..1
float
bearingErrorModel__bias_tau_s
Time constant of the drifting bias.
1..1
float
changeDecision__calibrations
The frozen post-hoc interval multipliers of each estimator and output a G7 decision names (schema 0.20.0, spec 018), fitted on validation; tma-g7 refuses others.
0..*
UncertaintyCalibration
changeDecision__carried_model
G4: the manifest id of the one carried network (Annex B §B.4); tma-g4 refuses network predictions from another model.
0..1
string
changeDecision__carried_models
G5 (spec 012, schema 0.16.0): the manifest ids of the carried trackers (one or both of T1 and T2, Annex C §C.5), each with its own plan in plans, in the same order; tma-g5 refuses tracker predictions from any other model.
0..*
string
changeDecision__carried_set_rule1..1
string
changeDecision__change
e.g. feature_set: derived
1..1
string
changeDecision__decided_at1..1
string
changeDecision__detector_thresholds
The frozen alarm threshold of each detector a G6 decision names (schema 0.19.0, spec 017), set on validation at the matched false-alarm rate; tma-g6 refuses others.
0..*
DetectorThreshold
changeDecision__fresh_test_count
The dataset count whose test split a re-score scores (the plan's dataset.fresh_test.count; schema 0.11.1); tma-g2 refuses a plan with another count.
0..1
integer
changeDecision__git_commit1..1
string
changeDecision__model_digests
The frozen carried models a re-score scores, by manifest id, with the SHA-256 of each one's weights.bin, manifest.json and model.json; tma-g2 refuses a re-score whose carried set or any of those files differs.
0..*
ModelDigest
changeDecision__phase_a_experiment1..1
string
changeDecision__plan
The plan this decision pre-registers (configs/<…>/plan.json). Required from iteration 3 (spec 007): tma-g2 scores a test split only with the decision that names its plan.
0..1
string
changeDecision__plans
G5: the plan of each carried tracker (configs/phase4//plan.json), in the order of carried_models; they share one dataset and one fresh test seed.
0..*
string
changeDecision__rationale
Validation evidence cited.
1..1
string
changeDecision__reference_estimator
G4 (spec 010, schema 0.13.0): the frozen reference tracker's estimator name, which encodes every tuning parameter (e.g. imm-cv0-ct0.03-w0.003-s0.0001-r4); tma-g4 refuses reference predictions with another name.
0..1
string
changeDecision__rescore_of
The experiment directory of the inconclusive gate this decision re-scores (SRD §7: one re-score on a larger fresh-seed test set; e.g. experiments/20261024-i4-g2). When present, tma-g2 runs in re-score mode (--rescore-of): the frozen carried models are bound by model_digests instead of by training ancestry, the re-scored gate must be inconclusive and not itself a re-score, and the fresh test seed must differ from its test seed.
0..1
string
changeDecision__stalled
Any gated criterion failed or was inconclusive on validation.
1..1
boolean
changeDecision__test_seed
Dataset seed of the test split the decision commits to (the plan's fresh_test seed, or its dataset seed); tma-g2 checks it against the plan.
0..1
string
continuation__best_epoch1..1
integer
continuation__git_commit
The source model's training-code commit, when it recorded one.
0..1
string
continuation__rescored_val_loss
The source's best weights re-scored under the continued run's loss, written by tma-train when it resumed (spec 004 FR-002). With best_epoch and best_val_loss it makes the kept weights auditable: a run whose best_epoch is the source's must have best_val_loss equal to this value and weights_digest equal to the source's.
0..1
float
continuation__val_loss
The source's best-epoch validation loss under the source's config.
1..1
float
continuation__weights_digest
SHA-256 of the weights the continuation resumed from (the source's best epoch).
1..1
string
curvePoint__course_deg_median0..1
float
curvePoint__estimator1..1
string
curvePoint__gross_error_rate1..1
float
curvePoint__n1..1
integer
curvePoint__non_converged_rate0..1
float
curvePoint__range_rel_median
Absent when not finite (more than half the rows non-converged), as in MetricsRecord.
0..1
float
curvePoint__range_rel_p900..1
float
curvePoint__speed_kt_median0..1
float
curvePoint__t_since_zig_s1..1
float
datasetHeader__created_by
Command line that produced the file.
1..1
string
datasetHeader__dataset_seed
Decimal uint64 string.
1..1
string
datasetHeader__generator_git_commit
Commit of the checkout that ran tma-generate (absent before schema 0.8.0).
0..1
string
datasetHeader__generator_git_dirty
True when that checkout had uncommitted changes (only allowed with --allow-dirty; absent before schema 0.8.0).
0..1
boolean
datasetHeader__generator_version1..1
string
datasetHeader__index_end
Last scenario index (exclusive).
1..1
integer
datasetHeader__index_start
First scenario index (inclusive).
1..1
integer
datasetHeader__parameter_ranges1..1
ParameterRanges
datasetHeader__record1..1
RecordKind
datasetHeader__redraw_count
Geometries rejected for violating min_range_m.
1..1
integer
datasetHeader__scenario_count1..1
integer
datasetHeader__schema_version1..1
string
datasetHeader__split1..1
Split
datasetRef__digest
SHA-256 of the dataset file (absent in manifests written before schema 0.4.0).
0..1
string
datasetRef__header1..1
DatasetHeader
datasetRef__path1..1
string
detectionHeader__dataset_digest
SHA-256 of the truth file.
1..1
string
detectionHeader__detector1..1
string
detectionHeader__inputs
The prediction files the scores were computed from, with their SHA-256s.
0..*
PredictionInput
detectionHeader__record1..1
RecordKind
detectionHeader__schema_version1..1
string
detectionRow__score
The detector's statistic at this timestep (units depend on the detector).
1..1
float
detectionRow__timestamp_s1..1
float
detection__detector1..1
string
detection__record1..1
RecordKind
detection__rows1..*
DetectionRow
detection__scenario_index1..1
integer
detectorThreshold__detector1..1
string
detectorThreshold__threshold1..1
float
epochRecord__epoch1..1
integer
epochRecord__seconds
Cumulative wall time.
1..1
float
epochRecord__train_loss1..1
float
epochRecord__val_loss1..1
float
estimatorRef__name1..1
string
estimatorRef__settings_json
Estimator settings as JSON.
1..1
string
experimentManifest__command_lines1..*
string
experimentManifest__created
ISO 8601 timestamp.
1..1
string
experimentManifest__datasets1..*
DatasetRef
experimentManifest__estimators1..*
EstimatorRef
experimentManifest__generator_version1..1
string
experimentManifest__git_commit1..1
string
experimentManifest__git_dirty
True when the working tree had uncommitted changes (absent before schema 0.4.0).
0..1
boolean
experimentManifest__id1..1
string
experimentManifest__node_version
Node.js version that ran the experiment (byte identity is promised per pinned Node).
0..1
string
experimentManifest__normalisation0..1
NormalisationConstants
experimentManifest__schema_version1..1
string
featureLayout__feature_set
Absent means raw.
0..1
FeatureSet
featureLayout__input_channels1..*
string
featureLayout__rows1..1
integer
featureLayout__target_channels1..*
string
floatRange__max1..1
float
floatRange__min1..1
float
gateCheck__ci_high
Upper bound of the bootstrap interval.
0..1
float
gateCheck__ci_level
Interval coverage, e.g. 0.95.
0..1
float
gateCheck__ci_low
Lower bound of the bootstrap interval.
0..1
float
gateCheck__detail1..1
string
gateCheck__name1..1
string
gateCheck__result1..1
GateResult
gateCheck__threshold
Limit the statistic is tested against.
0..1
float
gateCheck__value
Statistic tested (e.g. median range error).
0..1
float
gateRecomputation__estimator1..1
string
gateRecomputation__sample_sha256
SHA-256 (hex) of the sampled scenario indices, comma-separated in ascending order.
1..1
string
gateRecomputation__scenarios
Number of scenarios re-computed.
1..1
integer
gateScoring__decision
Path of the decision record, from the repository root.
1..1
string
gateScoring__decision_sha256
SHA-256 (hex) of the decision record.
1..1
string
gateScoring__gate1..1
GateId
gateScoring__recomputed
The estimators whose rows the gate re-computed on a seeded sample of scenarios from their declared settings, byte-identical to their files (absent in records backfilled for experiments scored before schema 0.18.0).
0..*
GateRecomputation
gateScoring__repeat_of
The earlier experiment that scored the same decision and test seed, named with tma-g5 --repeat-of (a reproduction, not a second chance at the gate).
0..1
string
gateScoring__test_seed1..1
string
gateScoring__truth_sha256
SHA-256 (hex) of the test split file.
1..1
string
gateVerdict__checks1..*
GateCheck
gateVerdict__decided_by1..1
string
gateVerdict__gate1..1
GateId
gateVerdict__result1..1
GateResult
manoeuvreSpan__end_index
First timestep after it completes.
1..1
integer
manoeuvreSpan__kind1..1
ManoeuvreKind
manoeuvreSpan__start_index
First timestep after it starts.
1..1
integer
metricsRecord__course_deg_median0..1
float
metricsRecord__course_deg_p900..1
float
metricsRecord__estimator1..1
string
metricsRecord__excluded1..1
integer
metricsRecord__gross_error_rate0..1
float
metricsRecord__n1..1
integer
metricsRecord__non_converged_rate
Fraction of rows with no estimate (scored +∞; explains absent medians/P90).
0..1
float
metricsRecord__point
"final" or "zig+s".
1..1
string
metricsRecord__position_m_mean
Mean position error over converged rows (non-converged rows count in gross_error_rate).
0..1
float
metricsRecord__position_window_m_median
Median over scenarios of each scenario's mean position error over its predicted rows (time-late window-mean position, SRD §5; reported, not gated).
0..1
float
metricsRecord__position_window_m_p90
90th percentile over scenarios of the same per-scenario mean.
0..1
float
metricsRecord__range_rel_median0..1
float
metricsRecord__range_rel_p900..1
float
metricsRecord__slice
"overall" or e.g. "range_band=5-10km".
1..1
string
metricsRecord__speed_kt_median0..1
float
metricsRecord__speed_kt_p900..1
float
modelDigest__manifest_sha256
SHA-256 (hex) of the model's manifest.json (schema 0.11.1).
1..1
string
modelDigest__model
The model's manifest id.
1..1
string
modelDigest__model_json_sha256
SHA-256 (hex) of the model's model.json, its topology (schema 0.11.1).
1..1
string
modelDigest__weights_sha256
SHA-256 (hex) of the model's weights.bin; equals its manifest weights_digest.
1..1
string
modelManifest__best_epoch1..1
integer
modelManifest__best_val_loss
The validation loss a later epoch must beat, under this manifest's config: the best epoch's val_loss, or, after a continuation changed the loss, the best weights re-scored under the new loss (spec 004 FR-002). Persisted so a chained job resumes against the same value. Absent before schema 0.8.2 (then the best epoch's recorded val_loss).
0..1
float
modelManifest__complete
False while training is in progress (checkpoint).
1..1
boolean
modelManifest__config1..1
TrainingConfig
modelManifest__continued_from
Present when the run was seeded from a committed model (absent before schema 0.8.2).
0..1
Continuation
modelManifest__cpu_model1..1
string
modelManifest__epochs1..*
EpochRecord
modelManifest__g0_experiment
Id of the G0 experiment whose verdict the training guard accepted.
0..1
string
modelManifest__generator_version1..1
string
modelManifest__git_commit
Commit of the training code, read when training started (absent before schema 0.6.0).
0..1
string
modelManifest__git_dirty
True when the working tree had uncommitted changes when training started (absent before schema 0.6.0).
0..1
boolean
modelManifest__id1..1
string
modelManifest__node_version1..1
string
modelManifest__normalisation1..1
NormalisationConstants
modelManifest__parameter_count1..1
integer
modelManifest__schema_version1..1
string
modelManifest__source_dataset_header
Header of the dataset the train features came from (lineage; absent before schema 0.8.0).
0..1
DatasetHeader
modelManifest__stop_reason0..1
StopReason
modelManifest__tf_interop_threads
TF_NUM_INTEROP_THREADS in force when training ran (absent: unset).
0..1
integer
modelManifest__tf_intraop_threads
TF_NUM_INTRAOP_THREADS in force when training ran (absent: unset, so the TensorFlow default of one per core).
0..1
integer
modelManifest__tfjs_node_version1..1
string
modelManifest__train_features_digest1..1
string
modelManifest__val_features_digest1..1
string
modelManifest__wall_s1..1
float
modelManifest__weights_digest
SHA-256 of best-epoch weights.
1..1
string
naiveMeans__course_cos1..1
float
naiveMeans__course_sin1..1
float
naiveMeans__log_range_km
Mean of ln(range in km).
1..1
float
naiveMeans__n
Number of labels averaged.
1..1
integer
naiveMeans__speed_mps1..1
float
naiveModel__final1..1
NaiveMeans
naiveModel__per_timestep1..1
NaiveMeans
naiveModel__schema_version1..1
string
naiveModel__train_digest
SHA-256 of the train file.
1..1
string
normalisationConstants__bearing_rate_scale_rad_s
90th percentile of |trailing least-squares bearing rate| over train inputs; required for the derived feature set.
0..1
float
normalisationConstants__computed_from
Always "inputs_only".
1..1
string
normalisationConstants__position_scale_km1..1
float
normalisationConstants__speed_scale_mps1..1
float
normalisationConstants__time_scale_s1..1
float
normalisationConstants__train_header_digest
SHA-256 of the train header.
1..1
string
observation__bearing_rad1..1
float
observation__timestamp_s1..1
float
observation__valid1..1
boolean
pairedComparison__course_deg_median0..1
float
pairedComparison__course_deg_median_ref0..1
float
pairedComparison__coverage_estimator
Answered / scored.
1..1
float
pairedComparison__coverage_reference
Answered / scored.
1..1
float
pairedComparison__estimator1..1
string
pairedComparison__gross_error_rate0..1
float
pairedComparison__gross_error_rate_ref0..1
float
pairedComparison__n_common1..1
integer
pairedComparison__point1..1
string
pairedComparison__range_rel_median0..1
float
pairedComparison__range_rel_median_ref0..1
float
pairedComparison__range_rel_p900..1
float
pairedComparison__range_rel_p90_ref0..1
float
pairedComparison__reference1..1
string
pairedComparison__slice1..1
string
pairedComparison__speed_kt_median0..1
float
pairedComparison__speed_kt_median_ref0..1
float
parameterRanges__bearing_error
Generator 0.6.0: the same realistic bearing error for every scenario with σ > 0, recorded in its parameters; a noise-free scenario (σ = 0) has none. Absent: white noise only, as 0.5.0.
0..1
BearingErrorModel
parameterRanges__dropout_fraction1..1
FloatRange
parameterRanges__dt_s1..1
float
parameterRanges__los_offset_rad
Angle off the line of sight, on the other bow, after an across_los turn; required when zig_rule is across_los.
0..1
FloatRange
parameterRanges__min_range_m
Geometries closer than this at any sample are redrawn.
1..1
float
parameterRanges__noise_sigma_rad_values
σ drawn uniformly from this set.
1..*
float
parameterRanges__ownship_speed_mps1..1
FloatRange
parameterRanges__ownship_turn_rate_rad_s
Turn rate drawn uniformly per scenario; absent means an instantaneous zig.
0..1
FloatRange
parameterRanges__range_distribution1..1
RangeDistribution
parameterRanges__target_course_change_count_weights
Generator 0.5.0 (SRD Annex C §C.2): probabilities of 0, 1, 2, … target course changes (summing to 1). Present: every scenario draws its manoeuvres this way, with target_manoeuvre_angle_abs_rad, target_turn_rate_rad_s, target_manoeuvre_after_zig_s and target_manoeuvre_margin_s, and target_manoeuvre_fraction must be absent.
0..*
float
parameterRanges__target_manoeuvre_after_zig_s
Earliest start of the target's turn, after the first sample on leg 2.
0..1
float
parameterRanges__target_manoeuvre_angle_abs_rad
Absolute target course change; the sign is uniform ±.
0..1
FloatRange
parameterRanges__target_manoeuvre_fraction
Probability a scenario's target makes one course change (generator 0.4.0, SRD Annex B §B.2); absent means the target always holds course, as generators 0.1.0–0.3.0. When present, every scenario draws the manoeuvre parameters (so the PRNG is consumed alike) and the window must fit a turn whether or not one is made.
0..1
float
parameterRanges__target_manoeuvre_margin_s
Least time from the end of the target's turn to the end of the window, so the gate point (manoeuvre + 5 min) is reached.
0..1
float
parameterRanges__target_manoeuvre_spacing_s
Least time from the end of one target manoeuvre to the start of the next.
0..1
float
parameterRanges__target_range0_m1..1
FloatRange
parameterRanges__target_speed_change_abs_mps
Absolute speed change; its sign is uniform ±, flipped if the new speed would leave target_speed_mps (redrawn if both signs would).
0..1
FloatRange
parameterRanges__target_speed_change_fraction
Probability of one target speed change (generator 0.5.0).
0..1
float
parameterRanges__target_speed_change_rate_mps2
Magnitude of the target's acceleration during a speed change.
0..1
FloatRange
parameterRanges__target_speed_mps1..1
FloatRange
parameterRanges__target_turn_rate_rad_s
Target turn rate, drawn uniformly per scenario.
0..1
FloatRange
parameterRanges__window_s1..1
FloatRange
parameterRanges__zig2_delay_s
Delay from the start of leg 2 to the second turn; absent means one zig. The second zig follows zig_rule (and uses the same turn rate as the first).
0..1
FloatRange
parameterRanges__zig_angle_abs_rad1..1
FloatRange
parameterRanges__zig_fraction1..1
FloatRange
parameterRanges__zig_rule
How each zig is chosen; absent means random (generators 0.1.0–0.2.0). Under across_los zig_angle_abs_rad is still drawn but not used.
0..1
ZigRule
platformState__course_rad1..1
float
platformState__speed_mps1..1
float
platformState__timestamp_s1..1
float
platformState__x_m1..1
float
platformState__y_m1..1
float
predictionHeader__dataset_digest
SHA-256 of the truth file.
1..1
string
predictionHeader__estimator1..1
string
predictionHeader__inputs
The prediction files a derived estimator was built from, such as a hybrid's tracker and network files (schema 0.17.0; written by tma-hybrid-track). Gates check each against the files they are given.
0..*
PredictionInput
predictionHeader__mode1..1
PredictionMode
predictionHeader__model_weights_sha256
SHA-256 (hex) of the weights.bin of the model that made these predictions (schema 0.17.0; written by tma-model-predict). Gates check it against the bound model.
0..1
string
predictionHeader__record1..1
RecordKind
predictionHeader__schema_version1..1
string
predictionInput__estimator1..1
string
predictionInput__sha256
SHA-256 (hex) of the input file.
1..1
string
predictionRow__converged1..1
boolean
predictionRow__course_rad1..1
float
predictionRow__course_sd_rad
Stated standard deviation of the course estimate (schema 0.20.0, spec 018): from a tracker's covariance by the delta method, written only under the -sd name suffix.
0..1
float
predictionRow__iterations0..1
integer
predictionRow__log_range_sd
Standard deviation of the estimator's log range (natural log; about the relative range error), from a velocity_gaussian network (spec 012). Absent for other estimators.
0..1
float
predictionRow__p_manoeuvre
The estimator's probability that the target's turn has started by this timestep (velocity_two_hypothesis networks only; spec 011). Absent for other estimators.
0..1
float
predictionRow__range_m1..1
float
predictionRow__speed_mps1..1
float
predictionRow__speed_sd_mps
Stated standard deviation of the speed estimate (schema 0.20.0, spec 018).
0..1
float
predictionRow__timestamp_s1..1
float
predictionRow__vx_sd_mps
Standard deviation of the estimated east velocity (velocity_gaussian only).
0..1
float
predictionRow__vy_sd_mps
Standard deviation of the estimated north velocity (velocity_gaussian only).
0..1
float
predictionRow__x_m1..1
float
predictionRow__y_m1..1
float
prediction__estimator1..1
string
prediction__mode1..1
PredictionMode
prediction__record1..1
RecordKind
prediction__rows1..*
PredictionRow
prediction__scenario_index1..1
integer
scenarioMetadata__index
Scenario index within the dataset.
1..1
integer
scenarioMetadata__manoeuvre_index
First timestep after the target's turn completes (generator 0.4.0; absent when the target holds course). Gate G4 counts time from here, as earlier gates count from zig_index. Under generator 0.5.0, after the last manoeuvre completes.
0..1
integer
scenarioMetadata__manoeuvre_start_index
First timestep after the target's turn starts (generator 0.4.0; absent when the target holds course). Under generator 0.5.0, after the first manoeuvre starts.
0..1
integer
scenarioMetadata__manoeuvres
Generator 0.5.0: each target manoeuvre's sample span, in time order (present, possibly empty, only under 0.5.0).
0..*
ManoeuvreSpan
scenarioMetadata__mean_range_m1..1
float
scenarioMetadata__min_range_m1..1
float
scenarioMetadata__parameters1..1
ScenarioParameters
scenarioMetadata__samples
Number of timesteps (60–240).
1..1
integer
scenarioMetadata__seed
Scenario seed as a decimal uint64 string.
1..1
string
scenarioMetadata__turn2_start_index
First timestep after the second turn starts (absent with one zig or no turn rate).
0..1
integer
scenarioMetadata__turn_start_index
First timestep after the turn starts (absent for an instantaneous zig).
0..1
integer
scenarioMetadata__zig2_index
First timestep on leg 3, after the second turn completes (absent with one zig). Gate times still count from zig_index.
0..1
integer
scenarioMetadata__zig_index
First timestep on leg 2 (with a rate-limited turn, the first after it completes).
1..1
integer
scenarioMetadata__zig_time_s1..1
float
scenarioParameters__bearing_error
Realistic bearing error (generator 0.6.0); absent = white noise only.
0..1
BearingErrorModel
scenarioParameters__dropout_fraction
Probability each bearing is missing.
1..1
float
scenarioParameters__dt_s
Bearing interval.
1..1
float
scenarioParameters__noise_sigma_rad
Bearing noise σ; 0 = noise-free.
1..1
float
scenarioParameters__ownship_course0_rad
Ownship course on leg 1.
1..1
float
scenarioParameters__ownship_speed_mps1..1
float
scenarioParameters__ownship_turn_rate_rad_s
Ownship turn rate at the zig (rate-limited turn, spec 003 US6). Absent or 0: the course changes instantaneously, as in generator 0.1.0.
0..1
float
scenarioParameters__target_bearing0_rad
True bearing at window start.
1..1
float
scenarioParameters__target_course_rad1..1
float
scenarioParameters__target_manoeuvre_angle_rad
Signed target course change; positive is clockwise.
0..1
float
scenarioParameters__target_manoeuvre_time_s
Target course change (generator 0.4.0, SRD Annex B §B.2): time the target's turn starts, a whole number of samples. Absent: the target holds course.
0..1
float
scenarioParameters__target_manoeuvres
Target manoeuvres in time order (generator 0.5.0, SRD Annex C §C.2), none overlapping. Present (possibly empty) only under generator 0.5.0 ranges; then the single-turn fields above are absent.
0..*
TargetManoeuvre
scenarioParameters__target_range0_m
Range at window start.
1..1
float
scenarioParameters__target_speed_mps1..1
float
scenarioParameters__target_turn_rate_rad_s
Target turn rate through its course change.
0..1
float
scenarioParameters__window_s
Window length; multiple of dt_s.
1..1
float
scenarioParameters__zig2_angle_rad
Signed course change at the second zig; positive is clockwise.
0..1
float
scenarioParameters__zig2_delay_s
Second zig (generator 0.3.0, spec 007): time from the first sample on leg 2 to the start of the second turn. Absent: one zig, two legs.
0..1
float
scenarioParameters__zig_angle_rad
Signed course change at the zig; positive is clockwise.
1..1
float
scenarioParameters__zig_fraction
Zig time as a fraction of the window.
1..1
float
scenario__metadata1..1
ScenarioMetadata
scenario__observations1..*
Observation
scenario__ownship1..1
Track
scenario__record1..1
RecordKind
scenario__target1..1
Track
targetManoeuvre__change
Signed change: course in rad (positive clockwise) or speed in m/s (positive faster).
1..1
float
targetManoeuvre__kind1..1
ManoeuvreKind
targetManoeuvre__rate
Magnitude of the rate of change, rad/s (course) or m/s² (speed).
1..1
float
targetManoeuvre__start_time_s
Time the manoeuvre starts, a whole number of samples.
1..1
float
track__id1..1
TrackId
track__states1..*
PlatformState
trainingConfig__batch_size1..1
integer
trainingConfig__bucket_batches
Batches per length-bucketing group (default 16).
0..1
integer
trainingConfig__feature_set
Input channel set; absent means raw. Must match the features files.
0..1
FeatureSet
trainingConfig__id
Estimator name used in predictions.
1..1
string
trainingConfig__kernel_size
Causal CNN kernel size.
0..1
integer
trainingConfig__layers
Stacked layers: causal CNN conv layers (no dilation; default 3), or recurrent layers for instantaneous and time_late (default 1; each returns sequences; spec 003 R20).
0..1
integer
trainingConfig__learning_rate1..1
float
trainingConfig__length_bucketing
Length bucketing (research R15; default false). Each group of bucket_batches batches of the epoch's seeded permutation is sorted by valid length, cut into batches whose rows are trimmed to the longest window, and the batch order is shuffled with a seed derived from train_seed and the epoch. The model takes a variable time dimension. Not for mlp.
0..1
boolean
trainingConfig__loss_weight_course1..1
float
trainingConfig__loss_weight_manoeuvre
Weight of the turn-probability cross-entropy term (velocity_two_hypothesis only; spec 011). Absent means 1.
0..1
float
trainingConfig__loss_weight_range1..1
float
trainingConfig__loss_weight_speed1..1
float
trainingConfig__max_epochs1..1
integer
trainingConfig__max_wall_s
Wall-clock cap in seconds.
1..1
float
trainingConfig__model_kind1..1
ModelKind
trainingConfig__output_parameterisation
Output encoding; absent means course_speed. With velocity, loss_weight_speed weights each velocity component and loss_weight_course is unused (spec 008).
0..1
OutputParameterisation
trainingConfig__patience
Epochs without validation improvement before stopping.
1..1
integer
trainingConfig__shuffle_labels
Permute targets across scenarios (leakage check).
1..1
boolean
trainingConfig__tfjs_threads
TensorFlow intra-op and inter-op thread count, set by tma-train through TF_NUM_INTRAOP_THREADS and TF_NUM_INTEROP_THREADS before tfjs-node loads. Absent: the TensorFlow default (one per core) or whatever the environment sets.
0..1
integer
trainingConfig__train_limit
Use only the first N training scenarios (tests and smoke runs).
0..1
integer
trainingConfig__train_seed
Decimal uint64; derives initializer seeds and batch order.
1..1
string
trainingConfig__units
LSTM units (per direction), conv filters or dense width.
1..1
integer
trainingConfig__velocity_scale_mps
Velocity scale in m/s for the velocity parameterisation (required with it): the top of the generator's target speed range, a constant of the problem, never a truth statistic.
0..1
float
uncertaintyCalibration__estimator1..1
string
uncertaintyCalibration__output
"log_range", "course" or "speed".
1..1
string
uncertaintyCalibration__q50
Multiplier for the 50% interval.
1..1
float
uncertaintyCalibration__q90
Multiplier for the 90% interval.
1..1
float

Enums​

FeatureSet​

Model input channel sets (spec 003 R6).

TextMeaning:Description
derivedNoneraw plus bearing_rate_scaled, rate_valid and intercept_scaled (13 channels), computed causally from bearings and ownship states up to each row.
rawNoneIteration-1 layout, 10 input channels.

Used by​

GateId​

TextMeaning:Description
G0NonePipeline verified.
G1None
G2None
G3None
G4NoneBetter than the tuned tracker after a target turn (SRD Annex B §B.4).
G5NoneAn end-to-end tracker better than the re-tuned reference overall, at most 10% worse when settled (SRD Annex C §C.5).
G6NoneA manoeuvre detector from frozen models faster than a CUSUM on the reference's innovations at matched false alarms (SRD Annex C §C.12).
G7NoneCalibrated uncertainty: the fused tracker's recalibrated intervals cover their nominal level and are narrower than the reference's (SRD Annex C §C.13).

Used by​

GateResult​

TextMeaning:Description
failNone
inconclusiveNoneThe 95% bootstrap interval straddles the threshold (G1 report, T033).
passNone

Used by​

ManoeuvreKind​

What a target manoeuvre changes (generator 0.5.0, SRD Annex C §C.2).

TextMeaning:Description
courseNoneA rate-limited course change at constant speed (an arc).
speedNoneA constant-acceleration speed change on a constant course.

Used by​

ModelKind​

Model families of SRD §4.

TextMeaning:Description
causal_cnnNoneCausal 1-D CNN control for the instantaneous variant.
instantaneousNoneCausal single-layer LSTM (operator's running solution).
learned_gain_filterNonePhase 4 tracker T1 (spec 012, SRD Annex C §C.4): a constant-velocity filter with a bearings-only update whose gain a GRU of units computes each step, in one declared filter layer (constitution 1.3.0). Reads the raw feature set; outputs the velocity parameterisation.
mlpNoneMLP over the flattened window, control for the time-late variant.
time_lateNoneBidirectional LSTM over the whole window.

Used by​

OutputParameterisation​

How the model's four output channels encode the target's course and speed (spec 008).

TextMeaning:Description
course_speedNonelog_range_km, course_sin, course_cos, speed / speed_scale_mps (iterations 1–3).
velocityNonelog_range_km, vx / velocity_scale_mps, vy / velocity_scale_mps, and a fourth channel that carries no loss and is ignored; course and speed are derived from (vx, vy).
velocity_gaussianNoneSpec 012 (phase 4, tracker T2): six channels per row. log_range_km, vx, vy (as velocity), then the log-variance of each, trained by the Gaussian negative log-likelihood. The reported estimate is the mean; prediction rows carry the standard deviations (log_range_sd, vx_sd_mps, vy_sd_mps), reported and their calibration measured, never gated.
velocity_two_hypothesisNoneSpec 011 (phase 3b): seven channels per row. log_range_km, vx, vy (as velocity) under the hypothesis that the target has not turned; the same under the hypothesis that it has; and a logit of P(the target's turn has started by this row). Each hypothesis is trained only on rows where it is true (the label comes from the stored truth course); the logit by binary cross-entropy. The reported estimate is the more probable hypothesis's, never an average.

Used by​

PredictionMode​

TextMeaning:Description
finalNoneOne row at the last timestep of the window.
per_timestepNoneOne row per post-zig timestep using bearings up to that time.

Used by​

RangeDistribution​

TextMeaning:Description
log_uniformNone
uniformNone

Used by​

RecordKind​

Discriminator for records in NDJSON files.

TextMeaning:Description
detectionNoneOne Detection (schema 0.19.0, spec 017).
headerNoneDataset or prediction file header (first line).
predictionNoneOne Prediction.
scenarioNoneOne Scenario.

Used by​

Split​

Dataset split. Train/validation/test are 80/10/10 by scenario index.

TextMeaning:Description
heldoutNoneHeld-out geometry with parameter ranges outside training.
testNone
trainNone
validationNone

Used by​

StopReason​

TextMeaning:Description
divergedNone
early_stoppingNone
max_epochsNone
wall_clockNone

Used by​

TrackId​

TextMeaning:Description
ownshipNone
targetNone

Used by​

ZigRule​

How each zig's direction and size are chosen (generator 0.3.0, spec 007).

TextMeaning:Description
across_losNoneTurn across the line of sight: the new course puts the target on the other bow at an angle off drawn from los_offset_rad, by the shorter turn. Uses the true bearing at the last sample before the turn.
randomNoneSize from zig_angle_abs_rad, side uniformly ±, regardless of the target.

Used by​