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¶
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 |