{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://micarrsim.local/schemas/result.schema.json", "title": "micarrsim simulation result", "type": "object", "additionalProperties": false, "required": [ "schemaVersion", "kind", "experimentId", "arrayId", "sceneId", "createdAt", "algorithm", "backend", "inputHash", "signalStats", "timingMs", "bands" ], "properties": { "schemaVersion": { "const": "1.1.0" }, "kind": { "const": "micarrsim.result" }, "experimentId": { "type": "string", "minLength": 1 }, "arrayId": { "type": "string", "minLength": 1 }, "sceneId": { "type": "string", "minLength": 1 }, "createdAt": { "type": "string", "format": "date-time" }, "algorithm": { "enum": ["das", "das-phat", "gcc-phat", "music"] }, "backend": { "enum": ["cpu", "webgpu"] }, "inputHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "signalStats": { "type": "object", "additionalProperties": false, "required": ["preNormalizationPeak", "appliedScale", "clippedSampleCount", "sampling"], "properties": { "preNormalizationPeak": { "type": "number", "minimum": 0 }, "appliedScale": { "type": "number", "minimum": 0 }, "clippedSampleCount": { "type": "integer", "minimum": 0 }, "acousticModel": { "enum": ["free-field", "shoebox"] }, "acousticPathCount": { "type": "integer", "minimum": 0 }, "acousticPathCounts": { "type": "object", "additionalProperties": false, "properties": { "direct": { "type": "integer", "minimum": 0 }, "reflection": { "type": "integer", "minimum": 0 }, "scattering": { "type": "integer", "minimum": 0 }, "diffraction": { "type": "integer", "minimum": 0 }, "diffuse": { "type": "integer", "minimum": 0 } } }, "sampling": { "$ref": "#/$defs/sampling" } } }, "timingMs": { "type": "object", "additionalProperties": false, "required": ["total", "localization", "beamforming"], "properties": { "total": { "type": "number", "minimum": 0 }, "signalGeneration": { "type": "number", "minimum": 0 }, "localization": { "type": "number", "minimum": 0 }, "beamforming": { "type": "number", "minimum": 0 } } }, "environment": { "type": "object", "additionalProperties": { "type": ["string", "number", "boolean"] } }, "musicModel": { "$ref": "#/$defs/musicModel" }, "bands": { "type": "array", "minItems": 1, "maxItems": 8, "items": { "$ref": "#/$defs/bandResult" } } }, "$defs": { "position": { "type": "array", "prefixItems": [{ "type": "number" }, { "type": "number" }, { "type": "number" }], "items": false, "minItems": 3, "maxItems": 3 }, "sampling": { "type": "object", "additionalProperties": false, "required": ["model", "sampleRate", "nyquistHz", "toneObservations"], "properties": { "model": { "const": "ideal-real-sampler-no-antialias-filter" }, "sampleRate": { "type": "integer", "minimum": 8000, "maximum": 192000 }, "nyquistHz": { "type": "number", "exclusiveMinimum": 0 }, "toneObservations": { "type": "array", "maxItems": 64, "items": { "type": "object", "additionalProperties": false, "required": [ "scope", "id", "analogFrequencyHz", "adcFrequencyHz", "signedAdcFrequencyHz", "aliased", "spectralInversion", "dcEdge", "nyquistEdge", "phaseDegenerate" ], "properties": { "scope": { "enum": ["source", "ambient"] }, "id": { "type": "string", "minLength": 1 }, "analogFrequencyHz": { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000 }, "adcFrequencyHz": { "type": "number", "minimum": 0 }, "signedAdcFrequencyHz": { "type": "number" }, "aliased": { "type": "boolean" }, "spectralInversion": { "type": "boolean" }, "dcEdge": { "type": "boolean" }, "nyquistEdge": { "type": "boolean" }, "phaseDegenerate": { "type": "boolean" } } } } } }, "frequencyObservation": { "type": "object", "additionalProperties": false, "required": [ "model", "sampleRate", "nyquistHz", "fftSize", "binWidthHz", "requestedMinHz", "requestedMaxHz", "aliased", "crossesFirstNyquist", "localizationInputModel", "selectionModel", "localizationModel", "originalCarrierUsed", "aliasOrderResolution", "foldBoundaryCount", "continuousManyToOne", "gridManyToOne", "foldSegments", "adcBins", "adcBinCenterRanges", "adcBinSetKey", "equivalentBandIds" ], "properties": { "model": { "const": "ideal-real-sampler-no-antialias-filter" }, "sampleRate": { "type": "integer", "minimum": 8000, "maximum": 192000 }, "nyquistHz": { "type": "number", "exclusiveMinimum": 0 }, "fftSize": { "enum": [128, 256, 512, 1024, 2048, 4096] }, "binWidthHz": { "type": "number", "exclusiveMinimum": 0 }, "requestedMinHz": { "type": "number", "minimum": 0, "maximum": 1000000 }, "requestedMaxHz": { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000 }, "aliased": { "type": "boolean" }, "crossesFirstNyquist": { "type": "boolean" }, "localizationInputModel": { "const": "observed-one-sided-real-fft-bins" }, "selectionModel": { "const": "fft-bin-center-membership" }, "localizationModel": { "enum": [ "spherical-steering-at-positive-adc-bin-frequency", "band-limited-gcc-phat-geometric-lag", "near-field-music-at-configured-analog-frequency" ] }, "originalCarrierUsed": { "type": "boolean" }, "aliasOrderResolution": { "enum": [ "not-applicable", "not-attempted", "configured-single-hypothesis" ] }, "configuredAnalogFrequencyHz": { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000 }, "signedAdcFrequencyHz": { "type": "number" }, "spectralInversion": { "type": "boolean" }, "frequencyHypothesisCount": { "const": 1 }, "frequencyHypothesisSource": { "const": "experiment-band-not-scene-truth" }, "foldBoundaryCount": { "type": "integer", "minimum": 0, "maximum": 512 }, "continuousManyToOne": { "type": "boolean" }, "gridManyToOne": { "type": "boolean" }, "foldSegments": { "type": "array", "minItems": 1, "maxItems": 513, "items": { "$ref": "#/$defs/foldSegment" } }, "adcBins": { "type": "array", "minItems": 1, "maxItems": 2049, "uniqueItems": true, "items": { "type": "integer", "minimum": 0, "maximum": 2048 } }, "adcBinCenterRanges": { "type": "array", "minItems": 1, "maxItems": 2049, "items": { "type": "object", "additionalProperties": false, "required": [ "firstBin", "lastBin", "firstBinCenterHz", "lastBinCenterHz" ], "properties": { "firstBin": { "type": "integer", "minimum": 0, "maximum": 2048 }, "lastBin": { "type": "integer", "minimum": 0, "maximum": 2048 }, "firstBinCenterHz": { "type": "number", "minimum": 0 }, "lastBinCenterHz": { "type": "number", "minimum": 0 } } } }, "adcBinSetKey": { "type": "string", "minLength": 1, "maxLength": 16384 }, "equivalentBandIds": { "type": "array", "maxItems": 7, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } } } }, "foldSegment": { "type": "object", "additionalProperties": false, "required": [ "analogMinHz", "analogMaxHz", "signedAdcStartHz", "signedAdcEndHz", "inverted", "aliasOrder", "nyquistZone" ], "properties": { "analogMinHz": { "type": "number", "minimum": 0, "maximum": 1000000 }, "analogMaxHz": { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000 }, "signedAdcStartHz": { "type": "number" }, "signedAdcEndHz": { "type": "number" }, "inverted": { "type": "boolean" }, "aliasOrder": { "type": "integer", "minimum": 0 }, "nyquistZone": { "type": "integer", "minimum": 1 } } }, "map": { "type": "object", "additionalProperties": false, "required": ["rows", "columns", "scale", "values"], "properties": { "rows": { "type": "integer", "minimum": 1, "maximum": 512 }, "columns": { "type": "integer", "minimum": 1, "maximum": 512 }, "scale": { "enum": ["power", "score", "noise-projection", "normalized", "db"] }, "objectiveDirection": { "enum": ["maximum", "minimum"] }, "values": { "type": "array", "minItems": 1, "maxItems": 262144, "items": { "type": "number" } } } }, "peak": { "type": "object", "additionalProperties": false, "required": ["position", "value"], "properties": { "sourceId": { "type": "string", "minLength": 1 }, "position": { "$ref": "#/$defs/position" }, "value": { "type": "number", "minimum": 0 }, "beamSpread": { "$ref": "#/$defs/beamSpread" }, "localizationErrorM": { "type": "number", "minimum": 0 }, "localizationErrorPixels": { "type": "number", "minimum": 0 } } }, "beamSpread": { "type": "object", "additionalProperties": false, "required": [ "calibrated", "method", "halfPowerRatio", "thresholdValue", "pixelCount", "centroid", "covarianceM2", "ellipse" ], "properties": { "calibrated": { "const": false }, "method": { "enum": [ "connected-half-power-power-weighted-covariance", "connected-half-maximum-score-weighted-covariance" ] }, "halfPowerRatio": { "type": "number", "exclusiveMinimum": 0, "maximum": 1 }, "thresholdValue": { "type": "number", "minimum": 0 }, "pixelCount": { "type": "integer", "minimum": 0, "maximum": 262144 }, "centroid": { "$ref": "#/$defs/position" }, "covarianceM2": { "type": "object", "additionalProperties": false, "required": ["xx", "xy", "yy"], "properties": { "xx": { "type": "number", "minimum": 0 }, "xy": { "type": "number" }, "yy": { "type": "number", "minimum": 0 } } }, "ellipse": { "type": "object", "additionalProperties": false, "required": [ "axisScale", "angleReference", "majorRmsRadiusM", "minorRmsRadiusM", "angleDeg" ], "properties": { "axisScale": { "const": "rms" }, "angleReference": { "const": "counterclockwise-from-positive-x" }, "majorRmsRadiusM": { "type": "number", "minimum": 0 }, "minorRmsRadiusM": { "type": "number", "minimum": 0 }, "angleDeg": { "type": "number", "minimum": -180, "maximum": 180 } } } } }, "musicModel": { "type": "object", "additionalProperties": false, "required": [ "publicationFamily", "covariance", "manifold", "propagationPaths", "localizationFrequency", "hypothesisSource", "originalCarrierUsed", "aliasOrderResolution", "multibandFusion", "spatialSmoothing", "diagonalLoading", "eigenvalueFloor", "normalizationApplied", "requestedNormalization", "distanceAmplitude", "minimumDistance", "microphoneCalibration" ], "properties": { "publicationFamily": { "const": "Schmidt narrowband MUSIC" }, "covariance": { "const": "sample-xxh-no-mean" }, "manifold": { "const": "near-field-spherical-direct-path-configured-analog-hypothesis" }, "propagationPaths": { "const": "direct-only" }, "localizationFrequency": { "const": "configured-single-analog-fft-grid-hypothesis-with-adc-inversion" }, "hypothesisSource": { "const": "experiment-band-not-scene-truth" }, "originalCarrierUsed": { "const": true }, "aliasOrderResolution": { "const": "configured-single-hypothesis-no-selection" }, "multibandFusion": { "const": "none-each-band-is-separate-single-analog-hypothesis" }, "spatialSmoothing": { "const": "none" }, "diagonalLoading": { "const": "none" }, "eigenvalueFloor": { "const": "none" }, "normalizationApplied": { "const": "none-raw-noise-projection-preserved" }, "requestedNormalization": { "const": "none" }, "distanceAmplitude": { "const": "inverse-distance-with-explicit-minimum-distance" }, "minimumDistance": { "type": "number", "exclusiveMinimum": 0 }, "microphoneCalibration": { "type": "object", "additionalProperties": false, "required": [ "sensitivity", "phaseOffset", "frequencyResponse", "frequencyResponseEvaluation", "spectralInversion", "compensateFrequencyResponse", "maxCompensationDb" ], "properties": { "sensitivity": { "const": "exact-inverse" }, "phaseOffset": { "const": "exact-inverse" }, "frequencyResponse": { "enum": [ "analog-hypothesis-inverse-phase-capped-inverse-gain-residual-in-manifold", "uncompensated-retained-in-manifold" ] }, "frequencyResponseEvaluation": { "const": "configured-analog-fft-grid-hypothesis" }, "spectralInversion": { "const": "positive-bin-full-complex-conjugation" }, "compensateFrequencyResponse": { "type": "boolean" }, "maxCompensationDb": { "type": "number", "minimum": 0, "maximum": 120 } } } } }, "musicDiagnostics": { "type": "object", "additionalProperties": false, "required": [ "frequencyHypothesis", "snapshotCount", "covariance", "eigenvalues", "auditedEigenvalues", "covarianceAudit", "eigensolver", "partition", "sourceCount", "projectionComplexMacs" ], "properties": { "frequencyHypothesis": { "type": "object", "additionalProperties": false, "required": [ "model", "hypothesisCount", "analogFrequencyHz", "observedFrequencyHz", "signedAdcFrequencyHz", "spectralInversion", "aliasOrder", "sharedObservationKey" ], "properties": { "model": { "const": "configured-single-analog-fft-grid-hypothesis" }, "hypothesisCount": { "const": 1 }, "analogFrequencyHz": { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000 }, "observedFrequencyHz": { "type": "number", "exclusiveMinimum": 0 }, "signedAdcFrequencyHz": { "type": "number" }, "spectralInversion": { "type": "boolean" }, "aliasOrder": { "type": "integer", "minimum": 0 }, "sharedObservationKey": { "type": "string", "minLength": 1 } } }, "snapshotCount": { "type": "integer", "minimum": 1 }, "covariance": { "type": "object", "additionalProperties": false, "required": [ "model", "normalization", "centered", "inputLayout", "matrixScale", "trace", "covarianceRoundoffBound" ], "properties": { "model": { "const": "sample-xxh-no-mean" }, "normalization": { "const": "1/T" }, "centered": { "const": false }, "inputLayout": { "const": "snapshot-major" }, "matrixScale": { "type": "number", "minimum": 0 }, "trace": { "type": "number", "minimum": 0 }, "covarianceRoundoffBound": { "type": "number", "minimum": 0 } } }, "eigenvalues": { "type": "array", "minItems": 2, "maxItems": 1024, "items": { "type": "number" } }, "auditedEigenvalues": { "type": "array", "minItems": 2, "maxItems": 1024, "items": { "type": "number", "minimum": 0 } }, "covarianceAudit": { "type": "object", "additionalProperties": false, "required": [ "roundoffTolerance", "roundoffFactor", "eigenvalueScale", "minimumEigenvalue", "isPositiveSemidefinite", "clampedNegativeCount", "roundoffDerivation", "covarianceRoundoffBound", "eigensolverResidualFrobeniusNorm" ], "properties": { "roundoffTolerance": { "type": "number", "minimum": 0 }, "roundoffFactor": { "type": "number", "exclusiveMinimum": 0 }, "eigenvalueScale": { "type": "number", "minimum": 0 }, "minimumEigenvalue": { "type": "number" }, "isPositiveSemidefinite": { "const": true }, "clampedNegativeCount": { "type": "integer", "minimum": 0 }, "roundoffDerivation": { "enum": [ "explicit", "eigenvalue-scale", "covariance-accumulation-plus-eigensolver-residual" ] }, "covarianceRoundoffBound": { "type": ["number", "null"], "minimum": 0 }, "eigensolverResidualFrobeniusNorm": { "type": "number", "minimum": 0 } } }, "eigensolver": { "type": "object", "additionalProperties": false, "required": [ "solver", "converged", "sweeps", "rotations", "scale", "inputHermitianError", "inputHermitianTolerance", "relativeTolerance", "offDiagonalFrobeniusNorm", "relativeOffDiagonal", "residualFrobeniusNorm", "relativeResidual", "residualTolerance", "orthogonalityError", "orthogonalityTolerance", "numericallyVerified" ], "properties": { "solver": { "const": "full-cyclic-complex-hermitian-jacobi" }, "converged": { "const": true }, "sweeps": { "type": "integer", "minimum": 0, "maximum": 32 }, "rotations": { "type": "integer", "minimum": 0 }, "scale": { "type": "number", "minimum": 0 }, "inputHermitianError": { "type": "number", "minimum": 0 }, "inputHermitianTolerance": { "type": "number", "minimum": 0 }, "relativeTolerance": { "type": "number", "minimum": 0 }, "offDiagonalFrobeniusNorm": { "type": "number", "minimum": 0 }, "relativeOffDiagonal": { "type": "number", "minimum": 0 }, "residualFrobeniusNorm": { "type": "number", "minimum": 0 }, "relativeResidual": { "type": "number", "minimum": 0 }, "residualTolerance": { "type": "number", "minimum": 0 }, "orthogonalityError": { "type": "number", "minimum": 0 }, "orthogonalityTolerance": { "type": "number", "minimum": 0 }, "numericallyVerified": { "const": true } } }, "partition": { "type": "object", "additionalProperties": false, "required": [ "signalEdge", "noiseEdge", "eigenvalueGap", "partitionTolerance" ], "properties": { "signalEdge": { "type": "number", "minimum": 0 }, "noiseEdge": { "type": "number", "minimum": 0 }, "eigenvalueGap": { "type": "number", "exclusiveMinimum": 0 }, "partitionTolerance": { "type": "number", "minimum": 0 } } }, "sourceCount": { "type": "object", "additionalProperties": false, "required": [ "method", "status", "value", "criterion", "score", "scores", "assumptions" ], "properties": { "method": { "enum": ["fixed", "mdl", "aic"] }, "status": { "const": "available" }, "value": { "type": "integer", "minimum": 1, "maximum": 1023 }, "criterion": { "type": ["string", "null"], "enum": ["mdl", "aic", null] }, "score": { "type": ["number", "null"] }, "scores": { "oneOf": [ { "type": "null" }, { "type": "array", "minItems": 1, "maxItems": 1024, "items": { "type": "number" } } ] }, "assumptions": { "type": "object", "additionalProperties": false, "required": ["userSpecified", "independentSnapshotsRequired"], "properties": { "userSpecified": { "type": "boolean" }, "independentSnapshotsRequired": { "type": "boolean" }, "nonOverlappingSnapshots": { "type": "boolean" }, "partialFrames": { "const": "excluded" }, "statisticalSnapshotIndependence": { "type": "object", "additionalProperties": false, "required": ["assumed", "evidence", "modelSelectedByUser"], "properties": { "assumed": { "const": true }, "evidence": { "const": "non-overlapping-frames-only-not-statistical-proof" }, "modelSelectedByUser": { "const": true } } }, "statisticalDataModel": { "type": "object", "additionalProperties": false, "required": [ "assumed", "verified", "assumptions", "interpretation" ], "properties": { "assumed": { "const": true }, "verified": { "const": false }, "assumptions": { "type": "array", "minItems": 3, "maxItems": 3, "prefixItems": [ { "const": "iid-complex-gaussian-snapshots" }, { "const": "spatially-white-noise" }, { "const": "stationary-source-count-over-snapshots" } ], "items": false }, "interpretation": { "const": "wax-kailath-model-order-criterion-not-probability-or-confidence" } } }, "snapshotCount": { "type": "integer", "minimum": 1 }, "sensorCount": { "type": "integer", "minimum": 2, "maximum": 1024 }, "roundoffTolerance": { "type": "number", "minimum": 0 }, "logRatioRoundoffClampCount": { "type": "integer", "minimum": 0 } } } } }, "projectionComplexMacs": { "type": "integer", "minimum": 0 } } }, "evaluation": { "type": "object", "additionalProperties": false, "required": [ "version", "truthRadiusM", "matchToleranceM", "detectionThresholdRatio", "detectionThresholdValue", "minimumPeakDistanceM", "sidelobeExclusionRadiusM", "halfPowerRatio", "dynamicRangeDb", "maximumDetections", "truthSelection" ], "properties": { "version": { "const": "1.0.0" }, "truthRadiusM": { "type": "number", "minimum": 0 }, "matchToleranceM": { "type": "number", "minimum": 0 }, "detectionThresholdRatio": { "type": "number", "minimum": 0, "maximum": 1 }, "detectionThresholdValue": { "type": "number", "minimum": 0 }, "objectiveDirection": { "enum": ["maximum", "minimum"] }, "detectionThresholdDomain": { "enum": ["raw-map-value", "normalized-music-pseudospectrum"] }, "detectionMethod": { "enum": ["local-max", "connected-components", "watershed"] }, "minimumPeakDistanceM": { "type": "number", "minimum": 0 }, "sidelobeExclusionRadiusM": { "type": "number", "minimum": 0 }, "halfPowerRatio": { "type": "number", "exclusiveMinimum": 0, "maximum": 1 }, "dynamicRangeDb": { "type": "number", "minimum": 0 }, "maximumDetections": { "type": "integer", "minimum": 1, "maximum": 128 }, "truthSelection": { "const": "tone-analog-interval-or-nearest-adc-bin-and-all-nontone-sources" } } }, "processedMap": { "type": "object", "additionalProperties": false, "required": ["algorithm", "map"], "properties": { "algorithm": { "enum": ["damas", "clean-sc", "custom"] }, "map": { "$ref": "#/$defs/map" } } }, "bandResult": { "type": "object", "additionalProperties": false, "required": ["id", "color", "rawMap", "frequencyObservation", "peaks", "metrics"], "properties": { "id": { "type": "string", "minLength": 1 }, "color": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "rawMap": { "$ref": "#/$defs/map" }, "displayMap": { "$ref": "#/$defs/map" }, "frequencyObservation": { "$ref": "#/$defs/frequencyObservation" }, "evaluation": { "$ref": "#/$defs/evaluation" }, "musicDiagnostics": { "$ref": "#/$defs/musicDiagnostics" }, "processedMaps": { "type": "array", "maxItems": 8, "items": { "$ref": "#/$defs/processedMap" } }, "peaks": { "type": "array", "maxItems": 128, "items": { "$ref": "#/$defs/peak" } }, "metrics": { "type": "object", "additionalProperties": false, "properties": { "peakToSidelobeDb": { "type": "number" }, "energyInsideTruthRatio": { "type": "number", "minimum": 0, "maximum": 1 }, "precision": { "type": "number", "minimum": 0, "maximum": 1 }, "recall": { "type": "number", "minimum": 0, "maximum": 1 }, "mainLobeWidthM": { "type": "number", "minimum": 0 } } } } } } }