Files
resonance-engine/analyze_regime_shake.py
T
2026-06-08 13:34:30 +07:00

35 lines
1.5 KiB
Python

import pandas as pd, numpy as np
RUN = '/mnt/d/Resonance_Engine/traj/regime_20260608T131408'
A = pd.read_parquet(f'{RUN}/arm_A_no_inject.parquet')
T = pd.read_parquet(f'{RUN}/arm_T_3ch.parquet')
print(f'A rows={len(A)} T rows={len(T)}')
print('cols:', list(A.columns))
print()
# z-score column finite-count (in arm T parquet)
print('=== z-score columns in arm T ===')
for c in ['trade_count_z', 'taker_buy_usd_z', 'taker_sell_usd_z']:
v = T[c].astype(float).values
fin = np.isfinite(v).sum()
print(f' {c:20s} fin={fin}/{len(v)} mean={np.nanmean(v):+.4f} std={np.nanstd(v):+.4f}')
# arm A vs T telemetry deltas (skip 100min warmup)
print()
print('=== arm A vs T telemetry channel deltas (last 200 rows, skip warmup) ===')
chans = ['asymmetry', 'coherence', 'stress_xx', 'stress_yy', 'stress_xy',
'vorticity_mean', 'vel_mean', 'vel_max', 'vel_var']
A2 = A.iloc[100:].astype({c: 'float64' for c in chans})
T2 = T.iloc[100:].astype({c: 'float64' for c in chans})
hdr = f'{"channel":<18} {"A mean":>14} {"T mean":>14} {"A std":>14} {"T std":>14} {"delta/A_std":>14}'
print(hdr)
for c in chans:
am, asd = A2[c].mean(), A2[c].std()
tm, tsd = T2[c].mean(), T2[c].std()
d = (tm - am) / asd if asd > 0 else 0
print(f' {c:<16} {am:>14.4g} {tm:>14.4g} {asd:>14.4g} {tsd:>14.4g} {d:>14.2f}')
print()
print('snap_age_ms p50/p95 arm A:', np.percentile(A.snap_age_ms, [50, 95]))
print('snap_age_ms p50/p95 arm T:', np.percentile(T.snap_age_ms, [50, 95]))