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
|