Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PrismLike

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.


What you can do with it

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.

Quick start (5 minutes)

You need Python 3.10 or newer. On macOS, install it with Homebrew:

brew install python@3.12

On 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.ipynb

A 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.


How to use it (a 2-minute tour)

  1. Open the app (voila app.ipynb). You'll see a header and a row of dataset controls (Upload · Examples · Active dataset).
  2. Load data. Either click Upload and pick a CSV/Excel file, or pick one of the bundled examples from the Examples dropdown.
  3. Look at the data in the Data tab to make sure it loaded correctly.
  4. 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.
  5. 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.
  6. 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).
  7. Export anything you want from the Export tab. Files go into the exports/ folder next to the notebook.

Bundled example datasets

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

Project layout (for the curious)

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.


Troubleshooting

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).


What is and isn't in this version

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.


Contributing

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.ipynb

Then Cell → Run All and interact with the widgets directly inside JupyterLab — easier to iterate on than under Voilà.


Credits

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.

License

MIT — free for teaching, research, and modification.

Disclaimer

PrismLike is independent software. It is not affiliated with, endorsed by, or derived from GraphPad Software, LLC.

About

Open-source statistics & graphing tool for teaching — a Python/Voilà alternative to GraphPad Prism. Built for the Pharma School, University of Copenhagen.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages