Bayes Linear emulator: New BayesLinear emulator type ('bayes_linear') inspired by the hmer R package. Uses an OLS regression trend plus squared-exponential correlated residuals with ARD correlation lengths. Pure numpy/scipy — no TensorFlow dependency. Good uncertainty quantification comparable to GPR, with faster training for moderate datasets.
Ray-resample NROY sampling: New 4-stage pipeline for finding NROY samples, inspired by hmer's generate_new_design(). Stages: (1) LHS rejection, (2) ray sampling along pairs of distant NROY points, (3) PCA-oriented importance sampling, (4) maximin thinning for space-filling coverage. Much faster than pure rejection at low acceptance rates (<1%). Now the default; pass nroy_method='lhs' for the old behavior. Tune via nroy_options=dict(n_lines=20, points_per_line=50, ...).
Detailed run logging: Engine writes log.txt to the output directory with per-phase timing, per-emulator training progress, and NROY sampling progress at 10% intervals. Hyperparameters (ARD lengthscales, etc.) saved to metrics.json.
Improved diagnostics: Residuals/predictions wrap to 5-column grid for high-dimensional problems. Pred-vs-true split into train/test panels with error bars. Error scatter and histogram also split train/test. Convergence plot uses log y-axis.
v1.1.0 (2025)
New features
Auto-checkpointing: Engine saves emulators, diagnostics, and checkpoint after each wave by default. Configure with the output_dir= and run_name= arguments. Disable with output_dir=None
Resume from checkpoint: engine.run(resume=True) loads the latest checkpoint and continues from where it left off
Parallel rejection sampling: the n_jobs=n argument parallelizes NROY candidate filtering across CPU cores. Workers load emulators from disk — no GPU required. Also available per-call: engine.get_nroy_samples(10000, n_jobs=4)
get_nroy_samples(n): Draw arbitrary number of NROY samples filtered through ALL emulators. Cheap — uses emulator predictions only
drop_emulator_from_pending(feature): Selectively remove a poor emulator before committing a wave
Per-wave diagnostics: Auto-saved figures (predicted vs actual, convergence, NROY samples) in wave{N}/{feature}/ subdirectories
Improvements
GPR emulator: Removed spurious bias column, data-informed initial hyperparameters, plain Softplus on noise variance (no artificial floor), don't abort on optimizer success=False