update to 0.26.0. Big chonking update including 0.23, 0.24, and 0.25 as well. #33
@@ -11,7 +11,8 @@ from sfm.shape_metrics import shape_from_h5
|
|||||||
log = logging.getLogger("backfill_event_shape")
|
log = logging.getLogger("backfill_event_shape")
|
||||||
|
|
||||||
def backfill_shape(db: SeismoDb, store: WaveformStore, *, dry_run: bool = False) -> dict:
|
def backfill_shape(db: SeismoDb, store: WaveformStore, *, dry_run: bool = False) -> dict:
|
||||||
counts = {"updated": 0, "skipped_no_h5": 0, "skipped_no_samples": 0}
|
counts = {"updated": 0, "skipped_no_h5": 0, "skipped_no_samples": 0,
|
||||||
|
"cleared_stale": 0}
|
||||||
for row in db.query_events(limit=1_000_000):
|
for row in db.query_events(limit=1_000_000):
|
||||||
serial, filename = row.get("serial"), row.get("blastware_filename")
|
serial, filename = row.get("serial"), row.get("blastware_filename")
|
||||||
if not serial or not filename:
|
if not serial or not filename:
|
||||||
@@ -21,6 +22,20 @@ def backfill_shape(db: SeismoDb, store: WaveformStore, *, dry_run: bool = False)
|
|||||||
counts["skipped_no_h5"] += 1; continue
|
counts["skipped_no_h5"] += 1; continue
|
||||||
shape = shape_from_h5(h5_path)
|
shape = shape_from_h5(h5_path)
|
||||||
if shape is None:
|
if shape is None:
|
||||||
|
# The .h5 can no longer yield a shape (fewer than 2 samples, or a
|
||||||
|
# flat trace). Clear any previously stored value rather than
|
||||||
|
# leaving it behind — a stale shape outlives the decode it came
|
||||||
|
# from and silently feeds the false-trigger detector. Seen after
|
||||||
|
# a decoder fix shrinks an event: 493 rows in the prod snapshot
|
||||||
|
# were carrying metrics from a superseded decode (2026-08-25).
|
||||||
|
if row.get("shape_crest_factor") is not None:
|
||||||
|
if not dry_run:
|
||||||
|
with db._connect() as conn:
|
||||||
|
conn.execute(
|
||||||
|
"UPDATE events SET shape_crest_factor=NULL, "
|
||||||
|
"shape_near_peak_count=NULL, shape_sample_count=NULL, "
|
||||||
|
"shape_axis=NULL WHERE id=?", (row["id"],))
|
||||||
|
counts["cleared_stale"] += 1
|
||||||
counts["skipped_no_samples"] += 1; continue
|
counts["skipped_no_samples"] += 1; continue
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
with db._connect() as conn:
|
with db._connect() as conn:
|
||||||
|
|||||||
Reference in New Issue
Block a user