File size: 1,113 Bytes
4fd79a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
from spectral_world_models.v12_causal_decomposition import summarize_strata,paired_bootstrap_delta,_episode_tags
from spectral_world_models.v9_causal_generalization import INTERP

def test_tags_detect_boundary_and_bins_inputs():
    st=(10.,10.,1.,2.,'circle',2.)
    a=np.array([[2.1,10.],[3.,10.]],np.float32); b=np.array([[20.,10.],[21.,10.]],np.float32)
    t=_episode_tags(st,a,b,INTERP,b-a)
    assert t['boundary_contact'] and t['initial_speed']>2

def test_summary_and_paired_bootstrap():
    rows=[]
    for e in range(8):
      rows.append(dict(regime='interpolation',episode=e,program='left_right',horizon=30,trajectory_cosine=.6,magnitude_ratio=.8,magnitude_ratio_mae=.2,log_gain_error=.25,initial_speed=1.,oracle_effect_path_mag=2.,boundary_contact=False,occlusion_zone_exposure=False,speed_bin='mid',effect_bin='mid'))
    s=summarize_strata(rows); assert any(x['stratum_type']=='program' for x in s)
    ctl=[dict(x,trajectory_cosine=.2) for x in rows]
    z=paired_bootstrap_delta(rows,ctl,n_boot=100,seed=1); assert abs(z['delta_v9_minus_control']-.4)<1e-6 and z['ci95_low']>0