Add interactive GP concrete strength explorer (BOxCrete website) + PartialFixedNoiseLikelihood - #14
Merged
Merged
Conversation
SebastianAment
force-pushed
the
interactive-gp-website
branch
from
May 7, 2026 20:40
d81d66b to
8936ac1
Compare
Introduces PartialFixedNoiseLikelihood, a Gaussian likelihood that learns noise for real observations while applying fixed near-zero noise to a tail of pseudo-observations. This lets GPs be conditioned to pass through pseudo-points (e.g. zero strength at time zero) with high certainty while still learning observation noise on real data via marginal-likelihood optimization. - boxcrete/models.py: new PartialFixedNoiseLikelihood class + integration - boxcrete/__init__.py: export the new class - boxcrete/utils.py: supporting changes - test/test_utils.py: extended utility tests - test/test_partial_fixed_noise_likelihood.py: tests for the new likelihood
GitHub Pages site at docs/ providing an interactive web UI for exploring
concrete mix compressive-strength predictions from the Gaussian process
model. The page runs the GP entirely in the browser via a WASM build of
the BLAS routines and a small JS port (gp.mjs).
Highlights
- Composition sliders with SI/imperial unit toggle
- Performance-tradeoff scatter (GWP, cost, strength) with axis switches,
filters, and Pareto-optimal labelling
- Predicted strength curve with \u00b12\u03c3 uncertainty band and far-from-data
warning
- Per-mix and per-ingredient insight panels (mix_analyses.json)
- About modal, citation copy buttons (BibTeX/APA), references panel
- Light/dark themes with frosted-glass header and animated gradient
- Mobile-first responsive layout: unified scatter/sliders panel with
tab-style toggle, viewport-fit panels, evenly-spaced header items,
iOS background fixes via fixed bg-layer
- Header restructured into h1 + .header-links (centered nav) +
.header-actions wrapper so right-anchored controls survive when
individual children are hidden on mobile
Supporting infrastructure
- scripts/export_model.py: serializes the trained GP to JSON for the web UI
- docs/model/*.json: exported GP parameters, training data, mix analyses
- docs/blas_f64.{wasm,js}: WASM glue for matrix ops in the browser
- test/test_js_gp.mjs: parity test for the JS GP against the Python model
- .github/workflows/js-sync.yml: CI to keep JS GP in sync
SebastianAment
force-pushed
the
interactive-gp-website
branch
from
May 7, 2026 20:47
8936ac1 to
5cb35db
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds two related changes that together ship the public BOxCrete interactive web explorer.
1.
PartialFixedNoiseLikelihoodA new Gaussian likelihood (in
boxcrete/models.py) that learns observation noise on real data while applying a fixed near-zero noise to a tail of pseudo-observations. This lets GPs be conditioned to pass through pseudo-points (e.g. zero strength at time zero) with high certainty while still learning the real-data noise via marginal-likelihood optimization. Exported fromboxcrete.__init__.test/test_partial_fixed_noise_likelihood.py— unit tests for the new class.test/test_utils.py—test_get_day_zero_dataaccounts for non-unique X rows when generating day-zero pseudo-observations.2. Interactive GP concrete strength explorer (BOxCrete website)
A GitHub Pages site at
docs/that runs the trained Gaussian process directly in the browser via a WASM build of the BLAS routines and a small JS port of the GP (gp.mjs). Users can explore mix design tradeoffs interactively without any backend.Features
docs/model/mix_analyses.json).overflow-x: clipto avoid the iOS Safari sticky/overflow bug), and iOS background fixes via a fixedbg-layerelement.Supporting infrastructure
scripts/export_model.py— serializes the trained GP to JSON for the web UI.docs/model/*.json— exported GP parameters, training data, mix analyses.docs/blas_f64.{wasm,js}— WASM glue for matrix ops in the browser.test/test_js_gp.mjs— parity test for the JS GP against the Python model..github/workflows/js-sync.yml— CI to keep the JS GP in sync with the Python model.Testing
Deployment
The site is served from
docs/via GitHub Pages. After merge, the live URL will reflect this commit automatically.