Web-based tool for PCA/PLS model analysis in chemometrics.
Project description
ScorePilot
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:
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:
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).
- Architecture, the dataset / preprocessing-spec model, and the reusable data grid:
docs/ARCHITECTURE.md - A from-scratch local setup walkthrough:
docs/DEVELOPMENT.md - Deployment and publishing:
docs/DEPLOYMENT.md,docs/PUBLISHING.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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scorepilot-0.22.36-py3-none-any.whl.
File metadata
- Download URL: scorepilot-0.22.36-py3-none-any.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f52fc426d71b5cbcd9284ccfbce6754427fe12176aa9566cba96c0ff227eef8d
|
|
| MD5 |
bf21c289979c9e287f545caa4c47f246
|
|
| BLAKE2b-256 |
fcc49023bcc102a504405f2174c6605294d9ff71d5750a6d9b3c39c1e55fab94
|
Provenance
The following attestation bundles were made for scorepilot-0.22.36-py3-none-any.whl:
Publisher:
publish.yml on kgdunn/ScorePilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scorepilot-0.22.36-py3-none-any.whl -
Subject digest:
f52fc426d71b5cbcd9284ccfbce6754427fe12176aa9566cba96c0ff227eef8d - Sigstore transparency entry: 1752208674
- Sigstore integration time:
-
Permalink:
kgdunn/ScorePilot@603f45249c915f27a1e58d830cb8589188d5490a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kgdunn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@603f45249c915f27a1e58d830cb8589188d5490a -
Trigger Event:
push
-
Statement type: