# -*- coding: utf-8 -*- # diag_x0.py — characterize the spurious X~0 points in the 14/09 captures from datetime import datetime import numpy as np import plot_logs as pl A = pl.LOGS[1][1] # log(3) B = pl.LOGS[2][1] # gyuggyhoy print('log(3) window: 10:03:36 -> 14:15:37 | gyuggyhoy window: 10:28:12 -> 14:57:34') print('common/overlap window: 10:28:12 -> 14:15:37') g_lo = datetime(2025, 9, 14, 10, 28, 12) g_hi = datetime(2025, 9, 14, 14, 57, 34) for name, path in [('21aug', pl.LOGS[0][1]), ('log(3)', A), ('gyuggyhoy', B)]: L = pl.parse_log(path) X, Y = L['X'], L['Y'] print('\n== %s (n=%d) ==' % (name, len(X))) print(' X==0: %d X<1000: %d X<5000: %d min X=%d' % ((X == 0).sum(), (X < 1000).sum(), (X < 5000).sum(), int(X.min()))) print(' Y==0: %d Y<1000: %d min Y=%d' % ((Y == 0).sum(), (Y < 1000).sum(), int(Y.min()))) print('\n--- detail: log(3) samples with X<1000 (max 30 shown) ---') L = pl.parse_log(A) X, Y, C, er, t = L['X'], L['Y'], L['C'], L['er'], L['t'] z = np.where(X < 1000)[0] print('total X<1000 :', len(z)) print('inside gyuggyhoy overlap [10:28:12..14:57:34]:', int(sum(1 for i in z if g_lo <= t[i] <= g_hi))) print('in pre-overlap tail [10:03:36..10:28:12] :', int(sum(1 for i in z if t[i] < g_lo))) shown = 0 for i in z: if shown >= 30: break win = 'OVERLAP' if (g_lo <= t[i] <= g_hi) else ('pre-10:28' if t[i] < g_lo else 'post-14:15') pv = '(X=%d,Y=%d)' % (X[i - 1], Y[i - 1]) if i > 0 else '-' nx = '(X=%d,Y=%d)' % (X[i + 1], Y[i + 1]) if i + 1 < len(X) else '-' print(' %s X=%-6d Y=%-6d C=%-7d er=%-4d [%-10s] prev %s next %s' % ( t[i].strftime('%H:%M:%S'), X[i], Y[i], C[i], er[i], win, pv, nx)) shown += 1