Skip to content

explain_silence

Science

The negative-evidence check. For every station that was delivering but has no pick on the referenced origin, the PMC model asks whether a detection was expected. Stations fall into unexplained (verdict should_have_detected) or explained with a reason.

below_noise means detection_probability < 0.5 — the fitted model puts the odds against a detection — not a statement that the instantaneous signal sits below the noise floor. has_pick, silent, absent, out_of_range, no_waveform and no_data_in_window are the other reasons. A station marked delivering in the daily table but with no archive bytes in the predicted window is no_waveform or no_data_in_window, not silent, and is not negative detection evidence.

log_likelihood is the combined detected/silent term of the PMC model, comparable across events, so thresholds can be fitted rather than guessed. When n_trials is 0 it is 0.0 — no trials, not perfect consistency.

One unexplained silence can be a local noise burst. Several unexplained silences at stations closer than those that detected is the strongest single piece of evidence this set of tools can give that the solution is wrong. A value origin is accepted and then the result is not catalogue-bearing.

References

  • Schorlemmer, D. and Woessner, J. (2008). Probability of detecting an earthquake. Bulletin of the Seismological Society of America. doi:10.1785/0120070133

Contract

Generated from the live registry (ToolSpec). Field names, types and defaults come from the input and payload models; they are not hand-typed.

Group forward
Class 3
Tool version 1.2.0
Highest declared tier F
Timeout 30 s
Budget key none
readOnlyHint true
idempotentHint true

Input

Field Type Required Notes
origin_ref object (kind catalog | solution | value) yes discriminated on kind
stations array[string] | null no default null

Payload

Field Type Required Notes
checked integer yes
unexplained array[object] yes
unexplained[].station_id string yes
unexplained[].distance_km number yes
unexplained[].r_hyp_km number | null no default null
unexplained[].predicted_p_time_utc string | null yes
unexplained[].detection_probability number yes
unexplained[].expected_snr_db number yes
unexplained[].measured_noise_db number yes
unexplained[].verdict const should_have_detected yes
explained array[object] yes
explained[].station_id string yes
explained[].reason string ∈ {has_pick, below_noise, silent, absent, out_of_range, no_waveform, no_data_in_window} yes
explained[].detection_probability number | null no default null
explained[].r_hyp_km number | null no default null
log_likelihood number yes
n_trials integer | null no default null
model_version string yes

Example request

{
  "origin_ref": {
    "kind": "catalog",
    "event_id": 1001
  }
}

Example payload

{
  "checked": 28,
  "unexplained": [
    {
      "station_id": "YY.STA3",
      "distance_km": 55.0,
      "r_hyp_km": 56.1,
      "predicted_p_time_utc": "2024-06-15T08:12:12.100Z",
      "detection_probability": 0.91,
      "expected_snr_db": 11.2,
      "measured_noise_db": -147.0,
      "verdict": "should_have_detected"
    }
  ],
  "explained": [
    {
      "station_id": "ZZ.STA9",
      "reason": "below_noise",
      "detection_probability": 0.12,
      "r_hyp_km": 312.4
    },
    {
      "station_id": "XX.STA1",
      "reason": "has_pick",
      "detection_probability": null,
      "r_hyp_km": 43.0
    }
  ],
  "log_likelihood": -3.42,
  "n_trials": 22,
  "model_version": "pmc-2024-06"
}

What this tool does not tell you

What this tool does not tell you: that one unexplained silence means a wrong solution — one can be a local noise burst. Several unexplained silences at stations closer than those that detected is the strongest single piece of evidence available that the solution is wrong.

Warnings named for this tool

Code When
partial_result a requested station was not scored
availability_stale the availability table has no row for the origin's UTC day