37 lines
1.7 KiB
Python
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 |