AssayPlot

Statistics and publication figures for the lab

Free and open source, for people who would rather not write code. Runs on your machine — no account, no cloud, no subscription.

Latest release Build status 256 tests passing 63 procedures checked against R AGPL-3.0 licence
Download for your machine Read the source
A bar chart with individual points, error bars and significance brackets, beside the panel that controls it

Everything an experiment needs, in one place

Get the data in, run a test that states what it assumes, build the figure, and export something a journal will take.

43analyses
37plot types
63procedures checked against R
0bytes sent anywhere

Reads what you already have

CSV, TSV, TXT, XLSX, XLS and ODS, several files at once, or pasted straight from Excel. The delimiter and the decimal separator are detected, so 1,5 written in Italy stays one and a half.

Explains, never chooses

A method that cannot run on your table is greyed out with the reason. Every one states what it assumes before you commit to it. It will not pick a test for you.

Figures you edit by clicking

Click the title and type over it. Click a bar to recolour that series. Drag the corner to resize. Gridlines, log axes, error bars and significance brackets are all yours.

Exports a journal accepts

SVG with live text, PNG at the resolution you choose, or PDF — saved wherever you point it, not into Downloads.

Shows its working

Every analysis writes a methods sentence for the manuscript. The report carries a SHA-256 of each data table, so a reviewer can confirm the numbers analysed were the numbers supplied.

Your data stays put

No account, no telemetry, no upload. Projects are a ZIP of readable JSON — unzip one and read your numbers without AssayPlot installed.

The analyses

Post-hoc comparisons are done properly: Tukey HSD with real family-wise confidence intervals, Dunn's test after Kruskal–Wallis, each group against a control, or Holm and Benjamini–Hochberg on plain pairwise tests.

Comparing groupsWelch, Student and paired t-tests · Mann–Whitney · Wilcoxon signed-rank · one-way ANOVA · Kruskal–Wallis · Friedman · two-way ANOVA with replication
X versus YPearson · Spearman · linear regression · dose–response with confidence intervals on every parameter and a test of whether the Hill slope was worth estimating
SurvivalKaplan–Meier with log-rank · Cox proportional hazards
CountsChi-square with Yates · Fisher's exact · McNemar · Mantel–Haenszel
ModellingLogistic · Poisson · ANCOVA · mixed-effects models · generalised estimating equations
MultivariatePrincipal components · hierarchical clustering with bootstrap support · ANOSIM · PLS-DA
AgreementCohen's kappa · Bland–Altman · TOST equivalence
Meta-analysisCochran's Q and I²
GeneticsTransmission disequilibrium · Mendelian randomisation
Study designSimon's two-stage design · the resource equation
AssumptionsShapiro–Wilk · D'Agostino–Pearson · Levene · Bartlett · Grubbs · ROUT

Are the numbers right?

Every procedure is checked against R on every test run. A script computes each one in R at full precision and writes the results to JSON; those fixtures are committed, so the suite runs anywhere Node runs. A second job regenerates them with R and fails if anything has drifted — which makes editing a fixture to force a pass impossible to hide.

The analysis view: methods on the left grouped by question, the result on the right with what the test assumes
Building that harness found sixteen real defects, none of which a self-consistent test suite would have caught. A Mann–Whitney tie correction wrong by six per cent. Tail p-values that underflowed to zero. A dose–response model with Top and Bottom the wrong way round, which fitted the data perfectly and so looked right in every number except the labels. The full list.
AssayPlot is not validated for clinical or regulatory use. Agreement with R on a test suite is not the same thing. For anything consequential, check the result with a statistician.

Download

Open it and start. Nothing else to install. After that it tells you when a new version is out and offers to fetch it.

Your machineFile
Mac, Apple Silicon (M1 and later)AssayPlot_x.y.z_aarch64.dmg
Mac, IntelAssayPlot_x.y.z_x64.dmg
WindowsAssayPlot_x.y.z_x64-setup.exe
Linux, Debian or UbuntuAssayPlot_x.y.z_amd64.deb
Linux, anything elseAssayPlot_x.y.z_amd64.AppImage
Builds are not signed yet, so your system objects the first time. On macOS go to System Settings → Privacy & Security and press Open Anyway next to the message about AssayPlot; the old right-click-then-Open trick stopped working in macOS 15. On Windows choose More info, then Run anyway. Signing is a release blocker and needs a developer certificate.

For developers

Nothing below the interface touches the DOM, which is why 256 tests run in Node in a few seconds.

Build it

npm install, then npm run dev for the browser or npm run desktop:dev for the window. npm test runs the suite.

Two rules for a change

A statistical change needs a fixture proving it against R. A bug fix needs a test that fails without it.

Licence

AGPL-3.0-or-later. Use it, study it, change it, share it. Run a modified copy as a network service and you publish your changes.