38 lines
1.7 KiB
Python
38 lines
1.7 KiB
Python
import pandas as pd, numpy as np
|
|
RUN = '/mnt/d/Resonance_Engine/traj/tension_20260608T061636'
|
|
A = pd.read_parquet(f'{RUN}/arm_A_no_inject.parquet')
|
|
T = pd.read_parquet(f'{RUN}/arm_T_tension.parquet')
|
|
|
|
print('cols A:', list(A.columns))
|
|
print(f'A rows={len(A)} T rows={len(T)}')
|
|
print()
|
|
|
|
print('=== tension columns finite-count in arm T ===')
|
|
for c in ['funding_bps', 'bs_ratio_signed', 'activity_excess', 'cvd_divergence',
|
|
'funding_bps_level', 'bs_ratio_signed_level', 'activity_excess_level', 'cvd_divergence_level',
|
|
'funding_bps_vel', 'bs_ratio_signed_vel', 'activity_excess_vel', 'cvd_divergence_vel']:
|
|
if c in T.columns:
|
|
v = T[c].values
|
|
fin = np.isfinite(v).sum()
|
|
print(f' {c:32s} fin={fin}/{len(v)} mean={np.nanmean(v):+.4g} std={np.nanstd(v):+.4g}')
|
|
else:
|
|
print(f' {c:32s} MISSING')
|
|
|
|
print()
|
|
print('=== arm A vs T telemetry channel deltas (last 500 rows, skip warmup) ===')
|
|
chans = ['asymmetry', 'coherence', 'stress_xx', 'stress_yy', 'stress_xy', 'vorticity_mean', 'vel_mean', 'vel_max', 'vel_var']
|
|
A2 = A.iloc[300:]
|
|
T2 = T.iloc[300:]
|
|
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/p99 arm A:', np.percentile(A.snap_age_ms, [50, 95, 99]))
|
|
print('snap_age_ms p50/p95/p99 arm T:', np.percentile(T.snap_age_ms, [50, 95, 99]))
|
|
print('snap_age_ms max arm A:', A.snap_age_ms.max(), ' arm T:', T.snap_age_ms.max())
|