Gerrrr opened a new pull request, #4:
URL: https://github.com/apache/otava-playground/pull/4
Adds a third top-level mode to the web visualizer ("Dataset", alongside
"Single Pattern" and "Mix Patterns") for loading real performance data and
seeing where each Otava algorithm variant places change points on the same
series. The TigerBeetle dataset bundled in apache/otava's perf/perf_test.py
ships as the default preset; a "Custom (paste below)" option accepts JSON-array
or whitespace/comma-separated numbers.
The Otava analysis panel now offers a checkbox per algorithm variant. In
addition to split-edivisive and orig-edivisive, I have also added
deterministic-edivisive to facilitate review of
https://github.com/apache/otava/pull/154.
Backend additions:
- otava_test_data.datasets package + TIGERBEETLE preset.
- GET /api/datasets — bundled-preset metadata.
- GET /api/datasets/{name} — one preset's series + metadata.
- GET /api/algorithms — which algorithm functions are available.
- POST /api/compare — run multiple algorithms on a series, return all
results.
- /api/generate and /api/analyze accept
otava_algorithm=split|orig|deterministic to pick which variant runs in
single/mix mode.
Algorithm names are validated as Literal["split","orig","deterministic"], so
unknown values fail with 422 at the request boundary instead of returning 200
with an embedded error string.
Dataset mode reuses the existing chart container with a single chart that
overlays each enabled algorithm's change points as colour-coded vertical lines.
The new "Show All Graphs" / "Analyse" buttons and the ground-truth sections
(accuracy table, comparison tables, chart legend) are hidden in Dataset mode.
Compare requests are guarded by an AbortController so a slow earlier request
can't race a newer one. The results table is built with DOM nodes (not string
concatenation) so server-supplied strings can't inject HTML. Custom-paste input
filters out non-numeric tokens and tells the user how many were dropped.
Also fixes an existing latent bug: Starlette 1.x changed TemplateResponse's
positional argument order. The pre-existing `/` route was using the old
signature, which crashed with "unhashable type: dict" once Jinja2's cache saw
the context dict as the template name. Both routes updated.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]