Files

37 lines
1.7 KiB
Python

# -*- 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