Open-source statistics & graphing for teaching — a Python/Voilà alternative to GraphPad Prism.
Built for teachers and students at the Pharma School (University of Copenhagen) who need a simple, GUI-driven tool for everyday scientific plotting and statistics: load a table, draw a clean plot, run a standard test, fit a dose–response curve, export the result.
PrismLike is not GraphPad Prism. It is independent open-source software inspired by Prism's workflow. No Prism code, branding, or assets are used. Released under the MIT License.
| Tab | What it's for |
|---|---|
| Data | Upload your CSV or Excel file (or load one of the included examples). Preview the data. Handle missing values. |
| Plotting | Draw interactive scatter, line, bar (mean ± SD/SEM), box, violin, histogram, and grouped plots. Log axes, titles, color-by-group, trendlines. |
| Statistics | Descriptive stats, t-tests (paired / unpaired / Welch), Mann–Whitney, Wilcoxon, one-way ANOVA + Tukey HSD, Kruskal–Wallis, Pearson / Spearman correlation, linear regression. |
| Dose–response | Fit a 4-parameter logistic curve to dose–response data. Get EC50 / IC50 with 95% CI, Hill slope, and an overlay plot — agonist or inhibition is detected automatically. |
| Export | Save plots as PNG or interactive HTML. Save analysis results as CSV. Keep a session log of every analysis you ran. |
You need Python 3.10 or newer. On macOS, install it with Homebrew:
brew install python@3.12On Windows, install from python.org and tick "Add Python to PATH" during install.
Then, in a terminal:
# 1. Get the code
git clone https://github.com/jacobfh1/PrismLike.git
cd PrismLike
# 2. Create an isolated environment (so the dependencies don't touch your system Python)
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows PowerShell
# 3. Install everything
pip install --upgrade pip
pip install -r requirements.txt
# 4. Launch the app
voila app.ipynbA browser tab should open at http://localhost:8866 showing the PrismLike interface. If it doesn't, the URL is printed in the terminal.
To stop the app, go back to the terminal and press Ctrl+C. To leave the virtual environment again, type deactivate.
- Open the app (
voila app.ipynb). You'll see a header and a row of dataset controls (Upload · Examples · Active dataset). - Load data. Either click Upload and pick a CSV/Excel file, or pick one of the bundled examples from the Examples dropdown.
- Look at the data in the Data tab to make sure it loaded correctly.
- Make a plot in the Plotting tab — pick the plot type, the X and Y columns, optionally a "color by" column, then click Draw plot.
- Run a test in the Statistics tab — pick a test from the dropdown, fill in the boxes that appear (the app shows a short hint about which columns it needs), and click Run analysis.
- Fit a dose–response curve in the Dose–response tab — pick the dose column and the response column, click Fit 4PL curve. Doses must be positive concentrations (the curve is fit on log10 dose).
- Export anything you want from the Export tab. Files go into the
exports/folder next to the notebook.
Located in examples/. Use them to try every part of the app without having your own data ready.
| File | Layout | Try this |
|---|---|---|
column_data_example.csv |
One column per group (Control / DrugA / DrugB) | Descriptive stats; paired t-test between two columns |
grouped_data_example.csv |
Long format (Treatment, Response) | Bar plot colored by Treatment; one-way ANOVA + Tukey |
xy_data_example.csv |
XY data (Time, Signal) | Scatter plot; linear regression; Pearson correlation |
dose_response_example.csv |
Dose (M) and response (%) | Dose–response tab → 4PL fit → IC50 readout |
PrismLike/
├── README.md
├── LICENSE
├── requirements.txt
├── app.ipynb # The notebook Voilà runs
├── prismlike/ # All the application logic
│ ├── data_io.py # Upload, parsing, dataset registry
│ ├── plotting.py # Plotly plotting helpers
│ ├── statistics.py # Descriptive + inferential stats
│ ├── dose_response.py # 4PL fit + EC50/IC50
│ ├── export.py # PNG/HTML/CSV/log export
│ └── ui.py # The ipywidgets tabbed interface
├── examples/ # Bundled example datasets
└── exports/ # Default location for exported files
The package is small enough to read in one sitting. Adding a new statistical test or plot type is a one-file change in statistics.py or plotting.py plus a dropdown entry in ui.py.
zsh: command not found: python — On macOS, the executable is python3, not python. Use python3 -m venv .venv to create the environment. Once you've activated it (source .venv/bin/activate), python works inside it.
Nothing opens in the browser — Look at the terminal output. Voilà prints something like Voilà is listening on: http://localhost:8866/. Open that URL manually.
ModuleNotFoundError: No module named 'plotly' (or similar) — You forgot to activate the virtual environment, or you skipped pip install -r requirements.txt. Re-activate, re-install.
PNG export fails — PNG export uses Kaleido. It's already in requirements.txt. If it still fails, fall back to HTML export (the button right next to it).
Python 3.9 or older — Some dependencies need Python 3.10+. Install a newer Python with brew install python@3.12 (macOS) or from python.org (Windows/Linux).
Included: CSV / Excel upload, dataset manager, missing-value handling, 7 plot types with error bars and log axes, 11 statistical tests, 4PL dose–response fitting with EC50/IC50 + 95% CI, PNG/HTML/CSV export, session analysis log.
Not yet included (open an issue or PR if you'd like one prioritised): two-way ANOVA, repeated-measures ANOVA, mixed-effects models, survival analysis, contingency tables, additional nonlinear regression models (Michaelis–Menten, exponential decay, one-site binding), in-app data editing, multi-curve global fits, full PDF reports.
Pull requests welcome. The code is intentionally small and modular — each module has a clear responsibility, so contributions can stay focused.
For local development:
jupyter lab app.ipynbThen Cell → Run All and interact with the widgets directly inside JupyterLab — easier to iterate on than under Voilà.
Built for teaching at the Pharma School, University of Copenhagen. Uses Plotly, SciPy, statsmodels, pandas, and Voilà — thanks to the maintainers of all of them.
MIT — free for teaching, research, and modification.
PrismLike is independent software. It is not affiliated with, endorsed by, or derived from GraphPad Software, LLC.