API Reference

Full docstrings

LabwarePlotting.letter_code — Method
letter_code(n::Integer) -> String

Bijective base-26 row label for row index n (1-indexed): 1->"A", ..., 26->"Z", 27->"AA", 28->"AB", ..., 52->"AZ", 53->"BA", .... Matches the classic spreadsheet-column scheme, and generalizes cleanly to arbitrary row counts (unlike a repeated-letter or fixed-length scheme).

source
LabwarePlotting.place_shape! — Method
place_shape!(plt, shape::Function, x, y, size; kwargs...)

Draw shape(x,y,size) (any of rectangle/circle/square/ slas_rectangle, or a caller-supplied function with the same (x,y,size) -> coords contract) onto plt at the given center/size, for cases that place individual markers rather than fill a whole grid (well-highlighting, deck-slot outlines, non-wellplate labware).

source
LabwarePlotting.plot_grid! — Method
plot_grid!(plt::Plots.Plot, active::AbstractMatrix{Bool};
           fillcolors::Union{Nothing,AbstractMatrix}=nothing,
           haloframe::Union{Nothing,AbstractMatrix}=nothing,
           halo_inset::Real=0.6, kwargs...) -> Plots.Plot

Draw the shared "grid of wells" skeleton onto plt: axis limits sized to active's shape, an optional per-cell flat-color fill (fillcolors, same shape as active), black gridlines, and the standard orientation/labeling styling (flipped y-axis, bijective-base-26 lettered rows via letter_code, numbered columns mirrored to the top, no default ticks/legend/grid). Any additional kwargs are forwarded to the final plot! styling call (e.g. title).

haloframe (same shape as active, only meaningful together with fillcolors) overlays a "halo" frame on specific cells: any cell whose haloframe entry is not nothing/missing gets a full-cell square in that color, then a smaller inset square (halo_inset fraction of the cell, default 0.6) drawn back in that cell's own fillcolors color – so the halo color reads as a border/frame around the cell's underlying color rather than replacing it outright. Cells with a nothing/missing haloframe entry are unaffected, reproducing plain fillcolors-only rendering exactly. Useful for distinguishing a fixed, semantically-important category (e.g. positive/negative controls) from an underlying categorical grouping (e.g. which separable group/component a well belongs to) without losing either piece of information in one plot.

This is the one skeleton every plate/grid plot in the CHESS ecosystem shares – only the per-cell color source (a flat lookup, a role-based lookup, or nothing at all) differs between callers.

source
LabwarePlotting.plot_heatmap! — Method
plot_heatmap!(plt, values::AbstractMatrix; colormap=cgrad([:white,:dodgerblue]), kwargs...)

Overlay a continuous-value heatmap of values onto plt (typically called after plot_grid! so the heatmap sits inside the grid/gridline/lettered-row skeleton). Use NaN in values for cells that should render as the colormap's zero/blank end rather than a real measurement.

Redraws the black well-grid lines on top of the heatmap fill afterward, since heatmap!'s opaque per-cell coloring would otherwise paint over and hide any gridlines already drawn by plot_grid!.

source
LabwarePlotting.role_palette — Method
role_palette(keys::AbstractVector; palette::String="Set2", overrides::Dict=Dict())
    -> Dict{eltype(keys),Any}

A consistent category-to-color mapping for any distinct set of keys (relation-type roles, group/component indices, ...), built from a named ColorBrewer palette (clamped to 3-8 colors) and cycled via mod1 for larger key sets. overrides pins specific keys to specific colors, taking precedence over the palette assignment. Shared by every package that colors wells/nodes categorically, so the same key always renders the same color everywhere in the CHESS ecosystem – e.g. palette="Set2" (the default) for relation-type roles, palette="Pastel2" for separable-group coloring.

source