Skip to content

Bump kuva from 0.1.4 to 0.1.6#326

Merged
JSorngard merged 1 commit into
mainfrom
dependabot/cargo/kuva-0.1.6
Apr 7, 2026
Merged

Bump kuva from 0.1.4 to 0.1.6#326
JSorngard merged 1 commit into
mainfrom
dependabot/cargo/kuva-0.1.6

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Apr 6, 2026

Bumps kuva from 0.1.4 to 0.1.6.

Release notes

Sourced from kuva's releases.

kuva v0.1.6

[0.1.6] — 2026-04-01

A quick fix for rustdocs to build properly

Fixed

  • docs.rs builddoom feature build script no longer attempts to write to the source directory or access the network when building on docs.rs. Empty placeholder files are written to OUT_DIR instead so include_bytes! compiles cleanly.

Full Changelog: Psy-Fer/kuva@v0.1.5...v0.1.6

kuva v0.1.5

[0.1.5] — 2026-04-01

Added

  • SVG interactivity v1 (--interactive / Layout::with_interactive()) — opt-in, self-contained browser interactivity embedded directly in the SVG output with no external dependencies. Degrades silently to a static SVG in PNG/PDF/terminal/Inkscape contexts. Features: hover tooltips, click-to-pin (sticky highlight; Escape to clear), search + dim (text input dims non-matching elements), coordinate readout (cursor x/y in data space shown on hover), and legend toggle (click a legend entry to show/hide the corresponding series). Wired for scatter, line, bar, strip, and volcano plots in this release; remaining renderers deferred to v0.2.
  • kuva doom (--features cli,doom) — generates a fully self-contained, offline-playable DOOM SVG (~15 MB). Open in any browser and play with keyboard controls. The Chocolate Doom engine (GPL v2) and shareware WAD are base64-encoded directly into the SVG at build time; no server, no network requests, no external files needed. Easter egg feature, separate from the plotting library.
  • kuva bar --color-by <COL> — grouped bar chart mode. Groups rows by the specified column and creates one colored series per unique value using the active palette, with an automatic legend. When each x-label maps to exactly one series (e.g. --color-by equals --label-col), falls back to simple per-bar coloring instead of a grouped layout.
  • kuva strip --legend — assigns palette colors per group and shows a legend. Combines with --interactive for legend toggle.
  • PolarPlot negative radius / r_min support (--r-min) — PolarPlot::with_r_min(f64) sets the value mapped to the plot centre (default: 0). Points below r_min clamp to centre; ring labels show actual r values. CLI: kuva polar --r-min <F>. Closes #54.
  • Custom X/Theta-Tick-Labels for PolarPlotwith_x_tick_format() now applies to the theta axis on polar plots. New TickFormat::Degree default keeps existing behaviour unchanged.
  • Layout::with_polar_r_label_angle(deg) — override the angle at which r-axis ring labels are drawn (default: midpoint between spokes).
  • ForestPlot — forest plot for meta-analysis: point estimates with confidence intervals on a categorical Y-axis, vertical dashed null-effect reference line, optional weight-scaled markers. CLI: kuva forest data.tsv --label-col study --estimate-col estimate --ci-lower-col lower --ci-upper-col upper.
  • Figure::with_twin_y_plots(cell, primary, secondary) — twin-Y panels now work inside multi-panel Figure grid layouts. Auto-layout via Layout::auto_from_twin_y_plots; shared legend collection includes both primary and secondary plots.
  • Fine-grained axis and grid line controls — new Layout builder methods: with_axis_line_width(f), with_tick_width(f), with_tick_length(f), with_grid_line_width(f). All propagate through ComputedLayout; grid lines now drawn before axis borders (z-order fix). CLI: --tick-length, --tick-width, --grid-stroke.
  • SVG clip-path support — data elements are now clipped to the plot area, preventing points and lines from rendering outside the axis borders. Implemented via Primitive::ClipStart/ClipEnd; ignored by terminal and raster backends. Closes #53.
  • Histogram2D::with_log_count() — log₁₀-scaled colour axis for 2D histograms. Colorbar tick marks are placed at actual count values (0, 1, 10, 100 …) and labelled accordingly. CLI: kuva hist2d --log-count. Also adds Layout::with_colorbar_tick_format(TickFormat) / CLI --colorbar-tick-format.
  • SankeyPlot flow labelswith_flow_labels() annotates each ribbon with its flow value; with_flow_label_units(s) adds a unit string; with_flow_label_decimals(n) controls precision; with_flow_label_percents() shows percentages of total flow. CLI: kuva sankey --flow-labels [--flow-label-percents].
  • kuva heatmap long-format input — accepts a value column (--value-col) from long-format data (row, column, value triples) with optional per-cell aggregation (--agg-fn mean|sum|min|max|count). Wide-format matrix input unchanged.
  • kuva bar --agg <FUNC> — aggregate a numeric value column by a label column using mean, median, sum, min, or max before plotting. Complements --count-by for summarising long-format data.
  • kuva volcano and kuva manhattan--pvalue-col-is-log — accept a pre-computed −log₁₀(p) column directly; internally un-transforms via 10^(−v) before passing raw p-values to the plot struct.
  • Colorbar title moved to side — colorbar titles now render rotated on the left side of the colorbar rather than above it, matching common convention and preventing overlap with axis labels.
  • Per-subcommand CLI documentation — all CLI subcommands now have dedicated documentation pages at docs/src/cli/<subcommand>.md. Closes #36.
  • BrickPlot bladerunner stitched STRIGAR formatwith_strigars now handles bladerunner's multi-candidate stitched format: | separates candidates, each with its own local letter namespace. Inter-candidate gaps appear as N@ (large gap, N nucleotides wide, no motif entry) or @:seq / 1@ (small gap, rendered at len(seq) nt). Gap bricks render as light grey. Canonical-rotation normalisation operates across all candidates, so ACCCTA / TAACCC / CCCTAA in different candidates are automatically assigned the same global letter and colour.
  • BrickPlot::with_start_positions(iter) — per-read genomic start coordinates. Pass the reference position where each read begins; kuva shifts rows on the shared x-axis so repeat regions align visually. Equivalent to with_x_offsets with negated values but expresses intent clearly.
  • BrickPlot::with_x_origin(f) — sets the reference coordinate that maps to x = 0 on the axis. Applied on top of (and independently from) any per-row offsets; use alongside with_start_positions to anchor a biologically meaningful position such as a repeat start to the axis origin.
  • BrickPlot per-read offsets in strigar modewith_x_offsets and with_start_positions now apply in strigar mode (previously forced to zero).
  • BrickPlot bounds fix with offsets — x-axis range is now computed per-row using actual row widths and offsets in both DNA and strigar modes, preventing reads from being clipped at the right edge when start positions push them beyond the widest unshifted row.

Fixed

  • Manhattan chromosome labels not visible — labels were previously emitted inside the SVG clip-path group, placing them below the clip boundary (the data area) and making them invisible. Labels are now drawn after ClipEnd so they render outside the clip region.
  • Multi-panel figure axis ranges — manually set with_x_axis_min/max / with_y_axis_min/max values were silently dropped when used inside Figure panels. Now correctly forwarded through clone_layout. Closes #43.
  • Terminal y-axis label--y-label text is now rendered vertically (one character per row) in --terminal mode instead of horizontally, preventing overlap with the plot area.
  • Terminal legend swatches — circle-based legend swatches (scatter, density, volcano, manhattan, etc.) now show their actual series color instead of being masked by the legend background in --terminal mode.
  • Polar r-label / theta-label overlap — r-axis ring labels are now positioned at the midpoint angle between spokes instead of directly on the 0° spoke.
  • Histogram zero-height bins — zero-count bins are now skipped before emitting a Rect primitive, eliminating SVG zero-height rect warnings. Closes #51.
  • Density plot boundary leakage — replaced post-hoc KDE clipping with boundary reflection (ggplot2-style): ghost points mirrored at user-specified bounds restore lost kernel mass so the curve terminates smoothly. with_x_lo(f) / with_x_hi(f) allow one-sided bounds; with_x_range(lo, hi) is kept as a shorthand. Closes #47.
  • Density plot normalizationbounds() sample count now matches the renderer; --x-min / --x-max CLI flags correctly restrict the KDE evaluation range. Closes #37.
  • Histogram2D with real data — CLI now accepts --x-min/--x-max/--y-min/--y-max to control the binning range; off-by-one at the upper edge clamped to the last bin. Closes #39.

... (truncated)

Changelog

Sourced from kuva's changelog.

[0.1.6] — 2026-04-01

Fixed

  • docs.rs builddoom feature build script no longer attempts to write to the source directory or access the network when building on docs.rs. Empty placeholder files are written to OUT_DIR instead so include_bytes! compiles cleanly.

[0.1.5] — 2026-04-01

Added

  • SVG interactivity v1 (--interactive / Layout::with_interactive()) — opt-in, self-contained browser interactivity embedded directly in the SVG output with no external dependencies. Degrades silently to a static SVG in PNG/PDF/terminal/Inkscape contexts. Features: hover tooltips, click-to-pin (sticky highlight; Escape to clear), search + dim (text input dims non-matching elements), coordinate readout (cursor x/y in data space shown on hover), and legend toggle (click a legend entry to show/hide the corresponding series). Wired for scatter, line, bar, strip, and volcano plots in this release; remaining renderers deferred to v0.2.
  • kuva doom (--features cli,doom) — generates a fully self-contained, offline-playable DOOM SVG (~15 MB). Open in any browser and play with keyboard controls. The Chocolate Doom engine (GPL v2) and shareware WAD are base64-encoded directly into the SVG at build time; no server, no network requests, no external files needed. Easter egg feature, separate from the plotting library.
  • kuva bar --color-by <COL> — grouped bar chart mode. Groups rows by the specified column and creates one colored series per unique value using the active palette, with an automatic legend. When each x-label maps to exactly one series (e.g. --color-by equals --label-col), falls back to simple per-bar coloring instead of a grouped layout.
  • kuva strip --legend — assigns palette colors per group and shows a legend. Combines with --interactive for legend toggle.
  • PolarPlot negative radius / r_min support (--r-min) — PolarPlot::with_r_min(f64) sets the value mapped to the plot centre (default: 0). Points below r_min clamp to centre; ring labels show actual r values. CLI: kuva polar --r-min <F>. Closes #54.
  • Custom X/Theta-Tick-Labels for PolarPlotwith_x_tick_format() now applies to the theta axis on polar plots. New TickFormat::Degree default keeps existing behaviour unchanged.
  • Layout::with_polar_r_label_angle(deg) — override the angle at which r-axis ring labels are drawn (default: midpoint between spokes).
  • ForestPlot — forest plot for meta-analysis: point estimates with confidence intervals on a categorical Y-axis, vertical dashed null-effect reference line, optional weight-scaled markers. CLI: kuva forest data.tsv --label-col study --estimate-col estimate --ci-lower-col lower --ci-upper-col upper.
  • Figure::with_twin_y_plots(cell, primary, secondary) — twin-Y panels now work inside multi-panel Figure grid layouts. Auto-layout via Layout::auto_from_twin_y_plots; shared legend collection includes both primary and secondary plots.
  • Fine-grained axis and grid line controls — new Layout builder methods: with_axis_line_width(f), with_tick_width(f), with_tick_length(f), with_grid_line_width(f). All propagate through ComputedLayout; grid lines now drawn before axis borders (z-order fix). CLI: --tick-length, --tick-width, --grid-stroke.
  • SVG clip-path support — data elements are now clipped to the plot area, preventing points and lines from rendering outside the axis borders. Implemented via Primitive::ClipStart/ClipEnd; ignored by terminal and raster backends. Closes #53.
  • Histogram2D::with_log_count() — log₁₀-scaled colour axis for 2D histograms. Colorbar tick marks are placed at actual count values (0, 1, 10, 100 …) and labelled accordingly. CLI: kuva hist2d --log-count. Also adds Layout::with_colorbar_tick_format(TickFormat) / CLI --colorbar-tick-format.
  • SankeyPlot flow labelswith_flow_labels() annotates each ribbon with its flow value; with_flow_label_units(s) adds a unit string; with_flow_label_decimals(n) controls precision; with_flow_label_percents() shows percentages of total flow. CLI: kuva sankey --flow-labels [--flow-label-percents].
  • kuva heatmap long-format input — accepts a value column (--value-col) from long-format data (row, column, value triples) with optional per-cell aggregation (--agg-fn mean|sum|min|max|count). Wide-format matrix input unchanged.
  • kuva bar --agg <FUNC> — aggregate a numeric value column by a label column using mean, median, sum, min, or max before plotting. Complements --count-by for summarising long-format data.
  • kuva volcano and kuva manhattan--pvalue-col-is-log — accept a pre-computed −log₁₀(p) column directly; internally un-transforms via 10^(−v) before passing raw p-values to the plot struct.
  • Colorbar title moved to side — colorbar titles now render rotated on the left side of the colorbar rather than above it, matching common convention and preventing overlap with axis labels.
  • Per-subcommand CLI documentation — all CLI subcommands now have dedicated documentation pages at docs/src/cli/<subcommand>.md. Closes #36.
  • BrickPlot bladerunner stitched STRIGAR formatwith_strigars now handles bladerunner's multi-candidate stitched format: | separates candidates, each with its own local letter namespace. Inter-candidate gaps appear as N@ (large gap, N nucleotides wide, no motif entry) or @:seq / 1@ (small gap, rendered at len(seq) nt). Gap bricks render as light grey. Canonical-rotation normalisation operates across all candidates, so ACCCTA / TAACCC / CCCTAA in different candidates are automatically assigned the same global letter and colour.
  • BrickPlot::with_start_positions(iter) — per-read genomic start coordinates. Pass the reference position where each read begins; kuva shifts rows on the shared x-axis so repeat regions align visually. Equivalent to with_x_offsets with negated values but expresses intent clearly.
  • BrickPlot::with_x_origin(f) — sets the reference coordinate that maps to x = 0 on the axis. Applied on top of (and independently from) any per-row offsets; use alongside with_start_positions to anchor a biologically meaningful position such as a repeat start to the axis origin.
  • BrickPlot per-read offsets in strigar modewith_x_offsets and with_start_positions now apply in strigar mode (previously forced to zero).
  • BrickPlot bounds fix with offsets — x-axis range is now computed per-row using actual row widths and offsets in both DNA and strigar modes, preventing reads from being clipped at the right edge when start positions push them beyond the widest unshifted row.

Fixed

  • Manhattan chromosome labels not visible — labels were previously emitted inside the SVG clip-path group, placing them below the clip boundary (the data area) and making them invisible. Labels are now drawn after ClipEnd so they render outside the clip region.
  • Multi-panel figure axis ranges — manually set with_x_axis_min/max / with_y_axis_min/max values were silently dropped when used inside Figure panels. Now correctly forwarded through clone_layout. Closes #43.
  • Terminal y-axis label--y-label text is now rendered vertically (one character per row) in --terminal mode instead of horizontally, preventing overlap with the plot area.
  • Terminal legend swatches — circle-based legend swatches (scatter, density, volcano, manhattan, etc.) now show their actual series color instead of being masked by the legend background in --terminal mode.
  • Polar r-label / theta-label overlap — r-axis ring labels are now positioned at the midpoint angle between spokes instead of directly on the 0° spoke.
  • Histogram zero-height bins — zero-count bins are now skipped before emitting a Rect primitive, eliminating SVG zero-height rect warnings. Closes #51.
  • Density plot boundary leakage — replaced post-hoc KDE clipping with boundary reflection (ggplot2-style): ghost points mirrored at user-specified bounds restore lost kernel mass so the curve terminates smoothly. with_x_lo(f) / with_x_hi(f) allow one-sided bounds; with_x_range(lo, hi) is kept as a shorthand. Closes #47.
  • Density plot normalizationbounds() sample count now matches the renderer; --x-min / --x-max CLI flags correctly restrict the KDE evaluation range. Closes #37.
  • Histogram2D with real data — CLI now accepts --x-min/--x-max/--y-min/--y-max to control the binning range; off-by-one at the upper edge clamped to the last bin. Closes #39.
  • Histogram x-axis label truncation — right margin now accounts for the last tick label's half-width so labels are never clipped. Closes #46.
  • Heatmap / PDF cell limit — a hard 1 M cell limit in kuva heatmap now emits a clear error with the cell count and concrete aggregation suggestions instead of silently producing a broken PDF. Closes #38.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [kuva](https://github.com/Psy-Fer/kuva) from 0.1.4 to 0.1.6.
- [Release notes](https://github.com/Psy-Fer/kuva/releases)
- [Changelog](https://github.com/Psy-Fer/kuva/blob/main/CHANGELOG.md)
- [Commits](Psy-Fer/kuva@v0.1.4...v0.1.6)

---
updated-dependencies:
- dependency-name: kuva
  dependency-version: 0.1.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Apr 6, 2026
@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (d80b2a0) to head (50851ae).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #326   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            8         8           
  Lines         1506      1506           
=========================================
  Hits          1506      1506           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@JSorngard JSorngard merged commit bb68f70 into main Apr 7, 2026
42 of 43 checks passed
@dependabot dependabot Bot deleted the dependabot/cargo/kuva-0.1.6 branch April 7, 2026 05:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants