flowrs-engine/crates/flowrs-viz/PROVENANCE.md
flowRS fd958c0547 flowRS engine, cut from flowRS 3451b065
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 19:04:39 -05:00

40 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# flowrs-viz: where the code and the numbers came from
flowrs-viz is Apache-2.0, like the rest of flowRS. It is new code; where it translates an
algorithm from a permissively licensed library, the file says so and the licence is in
`LICENSES/`. No GPL or AGPL code was read, ported or linked.
| flowRS file | Came from | What was taken | Licence |
|---|---|---|---|
| `src/scale.rs` — `ticks`, `tick_increment`, `tick_step` | d3-array 3 (Mike Bostock) | The tick-step rule (1, 2, 5 × 10^k with the √50, √10, √2 thresholds) and its integer arithmetic | ISC (`LICENSES/d3-array-ISC.txt`) |
| `src/scale.rs` — `nice_linear`, `nice_log`, `log_ticks`, band and point scales, `lerp` | d3-scale 4 (Mike Bostock) | `linear.nice`, `log.nice`/`log.ticks` for base 10, the band/point step and offset arithmetic, d3-interpolate's `a(1-t)+bt` | ISC (`LICENSES/d3-scale-ISC.txt`) |
| `src/scale.rs` — `precision_fixed`, `tick_label` | d3-format 3 (Mike Bostock) | `precisionFixed` and the `,f` format with a true minus sign, as Vega labels linear axes | ISC (`LICENSES/d3-format-ISC.txt`) |
| `src/scale.rs` — `Bins` | vega-statistics `bin` and vega-transforms `Bin` (UW Interactive Data Lab) | The bin-step search (base 10, divide by 5 and 2, `nice`) and the bin assignment with its 1e-14 epsilon | BSD-3-Clause (`LICENSES/Vega-BSD-3-Clause.txt`) |
| `src/spec.rs`, `src/compile.rs` | Vega-Lite 6.5.0 (UW Interactive Data Lab) | The grammar's semantics, written from Vega-Lite's documentation and its compiled output: defaults (300 px continuous size, 20 px step, band paddings 0.1/0.05 for bars, 0/0 for rects, 0.25/0.125 for ticks), `zero` and `nice` rules, `bin_maxbins_N_field` naming, binned-bar spacing, zero-offset stacking ordered by the stacking fields descending, the invalid-value filter, and aggregate ops (Vega's incremental mean and deviation) | BSD-3-Clause (`LICENSES/Vega-Lite-BSD-3-Clause.txt`) |
| `src/color.rs` | Björn Ottosson's OKLab (public domain / MIT); Machado, Oliveira and Fernandes (2009) CVD matrices (published) | The OKLab matrices; the severity-1.0 simulation matrices; the dataviz method's ΔE = OKLab distance × 100 | — |
| `src/colormap.rs` — `validate_categorical` | The dataviz method's `validate_palette.js` (the validator dpb-plot's palette was checked with) | Its five checks and thresholds | — |
| `src/lint.rs` | Draco 2 (CMU Data Interaction Group, MIT) | The ideas of its deterministic hard constraints (aggregating a category, bars off zero, log scales over zero, bars with two continuous axes, colour cardinality), written as plain Rust; no ASP code was ported. flowRS's own rules are new | — |
| `src/faithful.rs`, `src/corpus.rs`, `src/gpu.rs`, `src/svg.rs`, `src/figure.rs` | New | The faithfulness check's second implementation, the corpus and its expectations, the scene builder, the SVG and PNG writers | — |
| `corpus/charts.json` | Written here (`oracle` not involved): neuro and T&M figures over synthetic data | — | Apache-2.0 |
| `src/luts.rs` (generated by `oracle/colormaps.py`) | See below | 256 entries per map | per map |
## The colormaps
| Maps | Source | Licence |
|---|---|---|
| viridis, magma, inferno, plasma | BIDS/colormap (Nathaniel J. Smith, Stéfan van der Walt), as shipped in matplotlib 3.11.2 | CC0 1.0 (BIDS/colormap's licence) |
| RdBu_r, Reds, Blues | ColorBrewer 2.0 (Cynthia A. Brewer, Mark Harrower, Pennsylvania State University), interpolated to 256 entries by matplotlib 3.11.2 | Apache-2.0 (`LICENSES/ColorBrewer-Apache-2.0.txt`) |
| batlow, oslo, lajolla, devon, vik, berlin, broc | cmcrameri 1.10 (Callum Rollo): Fabio Crameri's Scientific colour maps 8.0.1, doi:10.5281/zenodo.1243862 | MIT (`LICENSES/cmcrameri-MIT.txt`) |
| fire, kbc, gouldian, coolwarm | colorcet 3.2.1 (HoloViz), after Peter Kovesi's perceptually uniform maps | CC-BY-4.0 (`LICENSES/colorcet-CC-BY-4.0.txt`); `colormap::attributions()` carries the credit wherever they are offered |
No rainbow map is offered (`colormap::RAINBOWS` names the ones a spec is refused for).
## Test data
| File | Source | Licence |
|---|---|---|
| `fixtures/data/penguins.json` | vega-datasets 3.2.1 (`data/penguins.json`): Palmer Station Antarctica LTER, Allison Horst's palmerpenguins | CC0 1.0 |
| `fixtures/data/anscombe.json` | vega-datasets 3.2.1: F. J. Anscombe (1973), Graphs in Statistical Analysis, The American Statistician 27(1):17-21 | Published data |
| `fixtures/specs/bar.vl.json` | Vega-Lite's `examples/specs/bar.vl.json` | BSD-3-Clause |
| the other `fixtures/specs/*.vl.json` | Written here; the neuro and T&M ones carry synthetic inline values | Apache-2.0 |
| `fixtures/oracle/*.json` | Written by `oracle/vegalite.mjs` from Vega-Lite 6.5.0 and Vega 6.4.0 run on the specs above | — |