Skip to content

kgdunn/ScorePilot

Repository files navigation

ScorePilot

CI License: MIT Python 3.12+

Build, compare, and interrogate PCA and PLS models in your browser. ScorePilot is a point-and-click workbench for multivariate data analysis and chemometrics: load a table, clean it up, fit a model, and explore the scores, loadings, and diagnostics that explain your process - no code required.

It runs as a single, self-contained app you launch with one command. Standard chemometrics terms keep their established names throughout: scores (T), loadings (P), Hotelling's T², SPE/DModX, contributions, VIP, R²X / R²Y, Q².


See it in action

Explore your data - a fast spreadsheet-style grid with a live inspector for every column (distribution, sequence, summary, transform preview), data-quality flags, and one-click roles and exclusions:

The data explorer: grid, column inspector, and data-quality panel

Fit a model and read it - scores with the Hotelling's T² confidence ellipse, loadings, T² and SPE with control limits, and VIP, all interactive:

Model diagnostics: scores, loadings, T-squared, SPE, and VIP


What you can do

  • Bring in data your way - upload a CSV or Excel file, paste a public URL, or start from one of the bundled example datasets (LDPE, food consumption, solvents, NIR tablet spectra, and more).
  • Understand each variable - click any column to see its histogram, run-order sequence, and summary statistics, and preview a transform (log, logit, ...) before you commit to it. Toggle the whole grid between raw and autoscaled values.
  • Clean and shape the workset - set the primary identifier (auto-detected, with a synthetic row id when needed), mark X / Y variables, and exclude outlying samples or unwanted variables - all without altering your original data.
  • Catch problems early - duplicate identifiers, non-numeric values in numeric columns, and missing data are flagged as you go.
  • Fit PCA and PLS - choose the number of components and fit. For one-component models the plots collapse to a single, readable axis automatically.
  • Interrogate the model - plot any pair of components (or sequence order), hover a score to read its SPE and T², and double-click or long-press any point to open its contribution plot and see which variables drive it. Long-press a loadings point to jump straight to that variable's raw data.
  • Select and link across every plot - switch a plot into arrow or lasso mode and pick out points; the selection lights up the same rows (or variables) in every other plot - scores, loadings, T², SPE, VIP, and contributions - so a cluster you spot in one view is instantly visible everywhere. The lasso is forgiving on touch: a partial ring closes itself.
  • Colour and size by what matters - shade or scale the score points by SPE or Hotelling's T² to make outliers jump out.
  • Act on a selection - fork a new model variant straight from a brushed set: exclude the selected samples (or keep only them) and refit in one click, with the lineage recorded automatically.
  • Keep a history - every model variant lands in the Hangar, and each one carries a Logbook recording its preprocessing, exclusions, and lineage, so you can branch a new variant from an existing one and compare. The running version is always shown, faint, in the top-right corner so you know exactly what you are looking at.

Your datasets and models are saved, so they survive a restart and are there when you come back.


Quick start

You need Python 3.12+ and uv. Then:

uv run scorepilot

That boots the app and opens your browser at http://127.0.0.1:8000. Load a sample dataset from the home page and start exploring.

Handy flags:

uv run scorepilot --host 0.0.0.0 --port 8080 --no-browser

The packaged app is a single process with no Node required at runtime: the Python server hosts both the API and the web UI.


The assistant (optional)

ScorePilot has an optional in-app assistant, T²-D2, for help interpreting a model. It is off by default, bring-your-own-key, and the analysis never depends on it - the tool is fully usable without it.


For developers

ScorePilot is a FastAPI + SQLAlchemy backend with a SvelteKit (Svelte 5) + ECharts frontend, wrapping the process-improve chemometrics library for the numerics. The numerical core/ is pure and has no web or database imports.

The frontend ships two standalone, domain-agnostic libraries that know nothing about chemometrics and can be reused elsewhere: frontend/src/lib/grid/ (a dependency-free data grid) and frontend/src/lib/plots/ (a linked-plots collection with brushing-and-linking; see frontend/src/lib/plots/README.md).

Common tasks:

uv sync                 # set up the environment
uv run scorepilot       # run the app
uv run pytest           # tests
uv run ruff check .     # lint
uv run pyright          # type check

cd frontend && npm install && npm run dev   # frontend dev server (proxies /api)

License

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors