Files
resonance-engine/__pycache__/_analyze_varisol.cpython-312.pyc
T

116 lines
17 KiB
Plaintext
Raw Normal View History

2026-06-06 21:34:30 +07:00
Ë
é($j³1ãóœdZddlmZddlZddlZddlmZddlmZddl Z
ddl Z ed«Z
d
dZddZdd „Zdd
Zd Zed k(re«yy)ud_analyze_varisol.py — analyse inject_variable_isolation output.
Reads /mnt/d/Resonance_Engine/traj/varisol_<RUN_ID>/injections.jsonl
Outputs the four tests Claude Desktop specified:
1. S/N test — peak_delta_asym / pre_std_asym per (var, quantile)
2. Directionality — does sign(response) flip with sign(strength)?
3. Stress symmetry — stress_xx vs yy isotropic vs anisotropic
4. Control test — mid_price near-zero check
Plus per-variable signature table aggregated over reps.
Plus the new test enabled by adding calibration runs:
5. Calibration regression — is each variable response explained by
amplitude alone (does it fall on the raw-strength response curve)?
If yes → variable is "just amplitude". If no → variable has structure.
Usage:
python3 _analyze_varisol.py latest
python3 _analyze_varisol.py <RUN_ID>
é)Ú annotationsN)Ú defaultdict)ÚPathz/mnt/d/Resonance_Engine/trajcóz|dk(rittjd«Dcgc]}|j«sŒ|Œc}«}|s%t j
dt
t«z«|dSt|jd«r|nd|z }|j«st j
d|«|Scc}w)latestz varisol_*zno varisol_* runs in éÿÿÿÿÚvarisol_z missing: ) ÚsortedÚROOTÚglobÚis_dirÚsysÚexitÚstrÚ
startswithÚexists)ÚargÚrunss ú+/mnt/d/Resonance_Engine/_analyze_varisol.pyÚfind_runrs•Ø
ˆhܤ$§)¡)¨KÓ"8ÖG˜Q¸A¿H¹H½JÙÜ H‰HÐ,¬s´4«yÑ B‰xˆÜ s—~‘~ jÔ1‘¸À#ÀÐ7GÑH€AØ 8‰8Œ:Ü 9˜Q˜CÔ €HùòHs
¢B8¸B8có.|dz }|j«stjd|«g}|j«5}|D]9}|j «}|sŒ|j t
j|««Œ; ddd«|S#1swY|SxYw)Nzinjections.jsonlzno injections.jsonl in )rrrÚopenÚstripÚappendÚjsonÚloads)Úrun_dirÚjpÚoutÚlines rÚ load_recordsr#+Ø Ð%Ñ %€BØ
9‰9Œ;Ü Ð*¨7¨)Ð
€CØ ð-ò -ˆDØ—::“<ˆØ
œ4Ÿ:™: 
€J÷ 
€JúsÁB
Á&B
Â
BcóŒ|dd|dS |r|d|dn|d|d}|d|dS#t$rt|«d|dcYSwxYw)Nz--úz+.r!ú.)Ú Exceptionr)ÚwrÚplusÚss rÚfmtr-8szØ€yؘ˜0eÐð Ù!ˆqA3a‰j¨!¨A¨a¨S°¨6¨ˆð!@ˆuˆXÐøô ò Üa“&˜˜1˜#˜P˜Òð úsŒ&¦AÁAc óêg}|D]W}|d}|jd«|jdd«|jdd«|jd«|d|jdi«jd «|jdi«jd
«|jdi«jd «d œ}|jd
i«}dD]j}|j|d«||d<|j|d«||d<|j|d«||d<|j|d«||d<Œl|jd«|d<|j|«ŒZtj|«S)labelÚkindÚvaru—Úquantile_labelÚrepÚstrengthÚ pre_statsÚasymmetry_meanÚ
asymmetry_stdÚcoherence_mean)r0r1Úquantiler3r4Ú
pre_asym_meanÚ pre_asym_stdÚ pre_coh_meanÚ signature)Ú asymmetryÚ coherenceÚ stress_xxÚ stress_yyÚ stress_xyÚvel_meanÚvorticity_meanÚ _peak_deltaÚ_snÚ _halflife_sÚ _peak_time_sÚstress_iso_ratio)ÚgetrÚpdÚ DataFrame)ÚrecsÚrowsÚlblÚrowÚsigÚchs rÚ aggregaterTBs‡Ø
€DØ
óˆØ‰jˆàŸ ØŸ  uÓŸÐ 0°%ÓŸ Ø˜*™
Ø Ÿu™u [°"Ó5×9Ð:JÓ Ÿu™u [°"Ó5×9¸ Ÿu™u [°"Ó5×9Ð:JÓ 
ˆðe‰eK Ó$ˆð DˆBà'*§w¡w°"°°[Ð/AÓ'BˆC2$ #Ø'*§w¡w°"°°S¨zÓ':ˆC2$c
‰OØ'*§w¡w°"°°[Ð/AÓ'BˆC2$ #Ø'*§w¡w°"°°\Ð/BÓ'CˆC2$  Dð #&§'¡'Ð*<Ó"=ˆÐ ÑØ ð)ô* <‰<˜Ó Ðóc
ó:ttj«dkDrtjdnd}t|«}t d|j
d«t
j|dz j««}t d|dd|jd ««t d
|d «t d |d
d|d«t d|d«t d|dd|d«t «|dz }|j«r7t
j|j««}t d«t d|jd«d«t d|jd«dd|jd«d«t d |jd!«dd|jd"«d«t d#|jd$«d%d|jd&«d%«t d'|jd(«dd|jd)«d«t d*|jd+««t «t|«}t|«}t d,t|«d-|d.d/k(j«d0|d.d1k(j«d2«||d.d/k(j«}||d.d1k(j«}t d3«t d/d4d5d6d7d8d9d:d;d<d=d>«|jgd?¢«j!d@dAdB¬C«j#«j%dDd5g«} | j'«D]H\}
} | dE
| dEdFkrdGndH} t | dDd4| d5d6| d7dI| dEdJ| dKdL| dMd>dN| «ŒJt dO«t dP«t d/d4dQd<dRd<dSd<dTd<dUdV«|d D]"}
||dD|
k(}||d5dWk(}||d5dXk(}|j(s |j(rŒ>t+|d7j,dY«}t+|d7j,dY«}t+|dZj/««}t+|dZj/««}t1j2|«t1j2|«k7r-t1j2|«t1j2|«k7rd[nd\}t |
d4|dL|dL|dL|dL|dV«Œ%t «t d]«t d/d4d5d6d^d_d`d:dUd_«|d D]}
||dD|
k(}daD]~}||d5|k(}|j(rŒt+|dbj/««}t+|dcj/««}|ddkDrde}n
|dfkrdg}ndh}t |
d4|d6|di|dj|d_«Œ€Œ’t «t dk«||dDdlk(}|j(s—daD]‡}||d5|k(}|j(rŒt+|d7j,dY«}t+|dmj/««}t+|dZj/««}t dn|do|dpdq|ddr|ds«Œ‰t dt«t du«|j(s‡|jd7«j!dAd@dvdB¬w«j#«j%d7«}t d7d8dxd<dyd8dzd<d=d>«|j'«D].\}
} t | d7d{| d|dL| dyd}| d~d| d€d>«Œ0|d7j4}|d|j4}t|«dk\r¦t1j6||d«} t1j|| dY|z| dzz
dz«}!t1j||j/«z
dz«}"|"dYkDrd|!|"z z
ndY}#t dƒ| dYdsd„| ddsd…|#d«t d†| dYdsd‡«t «t|«dk\r  \}$}%t dˆ«t dNd/d4d5d6d7d8d‰d8dŠd8dd8dŒd>«|d D}
||dD|
k(}daD}||d5|k(}|j(rŒt+|d7j,dY«}&|$|&z|%z}'t+|dZj/««}(|(|'z
})t9|'«dkDr|)t9|'«z dŽzn
t+d«}*t dN|
d4|d6|&dI|'d{|(d{|)d{|*d«Œ«Œ½t d‘«n t d’«t d“«t d/d4dSd<dTd8d”d6dQd<dRd8d•d6d[d>«g}+|d D]z}
||dD|
k(}||d5dWk(}||d5dXk(}|j(s |j(rŒ>t+|d7j,dY«t+|d7j,dY«}}t+|dZj/««t+|dZj/««}}t+|dmj/««t+|dmj/««}-},t1j2|«t1j2|«k7r-t1j2|«t1j2|«k7rdnd—}.t |
d4|d˜›|d{|-d™›|d˜›|d{|,d™›|.d>«|+j;|
|||-|||,|.dšœ«Œ}t «|j=|dz dœ¬«t dž|dz «t dŸ«y) rz=== analyzing z ===
z meta.jsonzrun_id=Úrun_idz
started=Úwall_iso_startz
variables=Ú variablesz
quantiles=Ú quantilesz
str_cap=Ústr_capzcalibration_strengths=Úcalibration_strengthsz
n_repeats=Ú n_repeatsz total=Ún_total_injectionszbaseline_clean_stats.jsonz === verified-stable baseline ===z baseline_anchor_asym = Úbaseline_anchor_asymz.3fz asymmetry: mean=r6z std=r7z.4fz coherence: mean=r8Ú
coherence_stdz stress_xy: mean=Ústress_xy_meanz.6fÚ
stress_xy_stdz vel_mean : mean=Ú
vel_mean_meanÚ vel_mean_stdz n=Únzloaded z injection records (r0Úvariablez variable, Ú calibrationz calibration)
z==== TEST 1: SIGNAL/NOISE (peak_asym_delta / pre_asym_std) ===z<18r9z>10r4z>12z
sn(mean3reps)z>17u peak_Δasymz>14Ú
halflife_sz>13)r1r9r4)Ú asymmetry_snÚmean)Úasymmetry_peak_deltark)Úasymmetry_halflife_srk)Úsn_meanÚ peak_meanÚ
halflife_meanr1rng@z BELOW NOISEr&z>+12.5fz>17.3froz>+14.4frpz zQ (S/N < 2.0 = below the noise floor; that variable at that quantile is poison.)
zL=== TEST 2: DIRECTIONALITY (does response sign flip with strength sign?) ===Ú q01_strengthu
q01_peakÎ”Ú q99_strengthu
q99_peakΔÚverdictz>20Úq01Úq99rrlÚ directionalz scalar/nulluJ=== TEST 3: STRESS SYMMETRY (xx vs yy peak — isotropic if ratio→1) ===ziso_ratio(mean)z>18Ústress_xy_peak)rtÚq50rurIÚstress_xy_peak_deltagš™™™™™é?Ú isotropicgà?Ú anisotropicÚmixedz>18.3fz>+17.6fzE=== TEST 4: CONTROL (mid_price should produce near-zero response) ===Ú mid_pricerjz mid_price z : strength=z+.5fz sn=u peakΔ=z+.4fu Interpretation: SN should track strength (small strength → small SN). If mid_price q50 has SN>>2.0, the encoding is wrong.
zN=== TEST 5: CALIBRATION REGRESSION (lattice impulse response vs amplitude) ===)ryrk)Ú asym_peakÚasym_snÚxy_peakÚhalfu asym_peakΔru xy_peakΔz>+12.4fr~z>12.3fr€z>+14.6frééz
asym_peak = z * strength + u R²=u → calibration slope: z (asym units per unit strength)zG PER-VARIABLE EXCESS RESPONSE (observed_peak - calibration_predicted):Ú predictedÚobservedÚresidualz rel_excess%gíµ ÷ư>édÚnanz>+13.1fuÕ
Interpretation: |relative excess| < 20% → variable response is explained by amplitude alone (no special structure). |excess| > 50% → variable has a signature beyond pure amplitude (interesting/worth using).z no calibration records found
z8
=== PER-VARIABLE SUMMARY (q99 vs q01, mean of reps) ===Úq99_snÚq01_snÚyesÚnoz>+14.5fz>10.2f)r1Ús99Úp99Úsn99Ús01Úp01Úsn01rvz_aggregated.csvF)Úindexzaggregated CSV: z
=== DONE ===)ÚlenrÚargvrÚprintÚnamerrÚ read_textrJrr#rTÚsumÚcopyÚgroupbyÚaggÚ reset_indexÚ sort_valuesÚiterrowsÚemptyÚfloatÚilocrkÚnpÚsignÚvaluesÚpolyfitÚabsrÚto_csv)/rÚrunÚmetaÚbase_pÚbrMÚdfÚvar_dfÚcal_dfÚgrpÚ_rOÚsn_strr)ÚsubrtrurrrrsÚssÚisoÚxyr4ÚsnÚpeakÚcal_grpr,rÚcoefÚr2_numÚr2_denÚr2ÚslopeÚ interceptÚstÚpredÚobsÚresidÚrelÚ summary_rowsrrÚdirecs/ rÚmainrÈ\ ÜœSŸX™X›¨Ò*Œ#(‰(1Š+°€CÜ
3-€CÜ ˆN˜3Ÿ8™8˜* 
 :‰:s˜(× 6€DÜ ˆGD˜# :¨d¯h©hÐ7GÓ.HÐ-IÐ
 ˆJt˜
 ˆJt˜KѰD¸±OÐ3DÐ
 Ð " 4Ð(?Ñ#@Ð"AÐ
 ˆJt˜°$Ð7KÑ2LÐ1MÐ
 „Gà
Ð
.€FØ
‡}}…Ü J‰Jv× *ˆÜ
Ð
Ð)¨!¯%©%Ð0FÓ*GÈÐ)LÐ
Ð" 1§5¡5Ð)9Ó#:¸3Ð"?¸uÀQÇUÁUÈ?ÓE[Ð\_ÐD`Ð
Ð" 1§5¡5Ð)9Ó#:¸3Ð"?¸uÀQÇUÁUÈ?ÓE[Ð\_ÐD`Ð
Ð" 1§5¡5Ð)9Ó#:¸3Ð"?¸uÀQÇUÁUÈ?ÓE[Ð\_ÐD`Ð
Ð" 1§5¡5¨Ó#9¸#Ð">¸eÀAÇEÁEÈ.ÓDYÐZ]ÐC^Ð
Q—UU˜3“Z