38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
import re, statistics
|
|
|
|
path = r'logs_nuevos/log_2026-10-14.txt'
|
|
lines = open(path, encoding='utf-8', errors='ignore').read().splitlines()
|
|
|
|
pat = re.compile(r'\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] X:(-?\d+),Y:(-?\d+),C:(\d+),V:(\d+)')
|
|
rows = [] # (time, x, y, c, v)
|
|
for l in lines:
|
|
m = pat.search(l)
|
|
if m:
|
|
rows.append((m.group(1), int(m.group(2)), int(m.group(3)), int(m.group(4)), int(m.group(5))))
|
|
|
|
# Ventana donde X casi no se mueve pero C cae lentamente -> evidencia deriva termica
|
|
# buscar tramo donde X dentro de +/-500 pasos durante muchos samples
|
|
print('--- ventana con poca variacion en X pero caida de C ---')
|
|
best_start = None; best_len = 0
|
|
i = 0
|
|
n = len(rows)
|
|
while i < n - 60:
|
|
window = rows[i:i+60]
|
|
xs = [r[1] for r in window]; cs = [r[3] for r in window]
|
|
x_spread = max(xs)-min(xs)
|
|
c_drop = statistics.mean(cs[:15]) - statistics.mean(cs[-15:])
|
|
if x_spread < 1500 and c_drop > 3000:
|
|
if best_len < 60:
|
|
best_len = 60; best_start = i
|
|
i += 1
|
|
else:
|
|
i += 60
|
|
if best_start is not None:
|
|
w = rows[best_start:best_start+60]
|
|
print('inicio:', w[0][0], 'X rango:', min(r[1] for r in w), max(r[1] for r in w))
|
|
print('C primero/ultimo:', w[0][3], w[-1][3])
|
|
for j, r in enumerate(w):
|
|
if j % 6 == 0:
|
|
print('%s X:%7d Y:%7d C:%8d V:%8d' % (r[0][11:], r[1], r[2], r[3], r[4]))
|
|
|