GitHub Pages dashboard (methods.nirs4all.org)¶
The project’s public landing page —
https://methods.nirs4all.org/
— is a fully interactive dashboard built from the same canonical
benchmark CSV that drives this documentation’s
per-method tables.
This page is the user manual for that dashboard: what each column means, how to filter, and how to relate a dashboard cell to the documentation page for that algorithm.
What you see at first load¶
A table with one row per (algorithm, n, p, threads) cell and one
column per backend. The first four columns are frozen in this order:
algorithm, size, t, then the synthetic reference column naming
the canonical oracle for that method. Each timed cell should show:
one parity marker: reference parity for C++ and external libraries, or binding parity for internal pls4all bindings;
an adaptive reported time (ms or s), formatted compactly.
Hovering a cell reveals: the binding diff when relevant, the reference RMSE-relative diff when available, the library version that produced it, and the failure reason if any.
Above the table you’ll find:
stats summary — how many algorithms / backends / sizes / threads are represented; how many cells are exact.
host card — the OS, CPU model, RAM, BLAS used to produce the CSV. This is captured at build time and embedded in the JSON payload.
generated-at timestamp — the mtime of the source CSV in UTC.
Columns¶
Backend columns are grouped into language bands and tier groups. The
synthetic reference column is pinned before those backend bands:
Group key |
Display label |
What’s in it |
|---|---|---|
|
canonical reference |
Synthetic provenance column naming the oracle for each method. |
|
pls4all · C++ (libn4m) |
|
|
pls4all · Python |
|
|
pls4all · R |
|
|
pls4all · MATLAB/Octave |
|
|
external · Python |
|
|
external · R |
|
|
external · MATLAB/Octave |
|
The C++ tier suffix (native, blas, omp, blas+omp, cuda) maps
1:1 to the libn4m build flags. Current binding-parity calculations use
the one-thread native baseline selected by the orchestrator, currently
cpp from the blas-omp build when present. cuda only appears when
CUDA was available at build time.
Filters and presets¶
The toolbar exposes the following filters:
Algorithm group — Core, Sparse, Ensemble, Robust / weighted, Nonlinear / local, Multi-block, Calibration transfer, Classification, Missing data, Regularised, Selectors. Driven by the
ALGO_GROUPmap indocs/_extras/build_landing.py.Language — restrict to columns of one host language (C++, Python, R, MATLAB/Octave, …).
Threads — pick a thread count (typically 1, 3, or 10).
Column preset — one of:
headline— the four canonical pls4all columns plus the primary external in each language.api-parity— the C++ native baseline plus the pls4all mimicking bindings (sklearn-style, R formula + S3, Rpls/mdatoolscompatible facades, MATLAB classdef) lined up against the canonical externals users would otherwise reach for (sklearn,ikpls,pls,mixOmics,ropls,plsregress). Raw low-level bindings (ctypes, R dispatcher, MEX) are excluded — this is the apples-to-apples view.pls4all— all pls4all bindings, no externals.cpp-tiers— the five libn4m builds side-by-side.externals— only the reference libraries.thread-sweep— a tight subset suitable for comparing 1 vs 3 vs 10 thread scaling.all— every column present in the current CSV.
Presets resolve at build time against the columns actually present in the data, so an empty preset is dropped automatically.
Cell tooltips¶
Each cell exposes:
parity— legacy alias kept for older renderers.binding_parity— pls4all binding/core consistency verdict, or not applicable for external libraries.reference_parity— method-oracle verdict.ms— adaptive reported wall-clock in milliseconds.fmt— pre-formatted time string (1.97 ms,4.2 s).timing_statistic—single,mean, ormedian.n_runs— number of scored samples, excluding the warmstart unless the warmstart was the only completed run.total_runs— total executions including the warmstart.reason— for non-exactcells, the captured failure / drift reason, trimmed to 200 chars. Examples:ModuleNotFoundError: No module named 'sgPLS'Rpls::cppls 2.8.5is Liland 2009 Canonical Powered PLS, NOT Indahl 2005 Powered-PLS (pls4all's algorithm)parity diff 5.4e-02 vs tolerance 1e-6 — scaling convention drift
The dashboard renders reason in a tooltip so the table itself stays
scannable.
Stabilization Notes¶
ref_*rows are merged into their dashboard columns withok,reason, binding parity, reference parity, reference kind, timing and canonical flags propagated together.Filters use the effective verdict:
reference_parityfor C++ and external library columns,binding_parityfor internal pls4all bindings.--only-pls4allCSVs do not schedule external oracle rows, but Gate 2 is still evaluated from stored.reference_oraclessnapshots. Missing snapshots are setup failures that must be fixed by running the canonical reference backend.The dashboard HTML embeds the payload at Sphinx build time. Running
build_landing.pyalone updatesdocs/_static/bench-data.json, but it does not update an already-builtdocs/_build/html/index.html.
Relationship to this documentation¶
Each algorithm row in the dashboard links to its dedicated page in the methods catalogue. The per-method page shows the same numbers plus:
the algorithm’s bibliographic source,
its math principle,
its parameters (with C ABI / Python / R / MATLAB defaults),
per-binding code examples,
a filtered benchmark table covering only that one method.
The dashboard is best for cross-method comparison; the per-method page is best for understanding one algorithm in depth.
Source layout¶
File |
Role |
|---|---|
|
The HTML / CSS / JS shell. Jinja2 substitutes |
|
Reads |
|
The committed fallback payload — used by CI / Read the Docs builds where the raw CSVs are not present. |
|
Picks between live CSV regeneration and the committed fallback, then injects the JSON into |
Regenerating locally¶
# Build with the live CSV (regenerates docs/_static/bench-data.json):
sphinx-build -b html docs docs/_build/html
# Or just write the JSON without a full Sphinx build:
python docs/_extras/build_landing.py \
--results benchmarks/cross_binding/results \
--out docs/_static/bench-data.json
Deployment paths¶
The same HTML output is published from two locations:
GitHub Pages —
https://methods.nirs4all.org/— built by.github/workflows/docs.ymlon every push tomain. This is the canonical landing page.Read the Docs — see
readthedocs.mdfor the RTD project configuration. The RTD build uses the committeddocs/_static/bench-data.jsonfallback so it does not need to install the benchmark dependencies.