Coffee productivity analysis with statistical modeling
Project description
PKoffee - Coffee Productivity Analysis
A Conda package implemented in python for analyzing the relationship between coffee consumption and productivity through statistical modeling and visualization.
Project inspired by Le Café - Oldelaf for the S3 School 2026.
Features
- Data Analysis: Load and analyze coffee consumption vs productivity datasets
- Multiple Models: Fit various mathematical models (quadratic, Michaelis-Menten, logistic, peak functions)
- Visualization: Beautiful violin plots with model overlays using Seaborn
- Model Comparison: Automatic R² scoring and ranking of models
- Type-Safe: Full type hints for better IDE support and code quality
Installation
pixi install
Quick Start
from pathlib import Path
from pkoffee.data import load_csv
from pkoffee.productivity_analysis import fit_all_models
from pkoffee.visualization import plot_models
# Load your data
data = load_csv(Path("coffee_productivity.csv"))
# Fit models
fitted_models = fit_all_models(data)
# Create visualization
plot_models(data, fitted_models, output_path=Path("results.png"))
Command Line Interface
# Analyze
cd analysis && pixi shell
# fit models and save to toml
pkoffee analyze --data-file coffee_productivity.csv --output fitted_models.toml --show-rankings
# plot models predictions
pkoffee plot --data-file coffee_productivity.csv --models fitted_models.toml --output analysis.png --y-max 7
Project Structure
pkoffee-sol/
├── src/pkoffee/
│ ├── __init__.py # Python package
│ ├── cli.py # Command line interface
│ ├── data.py # Data loading utilities
│ ├── fit_model.py # Model definition and fitting
│ ├── fit_model_io.py # Model writing/reading to file
│ ├── log.py # Logging utilities
│ ├── metrics.py # Model evaluation metrics
│ ├── parametric_function.py # Mathematical models as parametric functions
│ ├── productivity_analysis.py # Coffee analysis
│ └── visualization.py # Plotting functions
├── tests/
│ ├── test_data.py
│ ├── test_fit_model.py
│ ├── test_fit_model_io.py
│ ├── test_metrics.py
│ └── test_parametric_function.py
├── README.md
├── pixi.toml
├── pixi.lock
└── pyproject.toml
Models Implemented
- Quadratic:
f(x) = a₀ + a₁x + a₂x² - Michaelis-Menten (Saturating):
f(x) = y₀ + Vₘₐₓ·x/(K + x) - Logistic:
f(x) = y₀ + L/(1 + e^(-k(x - x₀))) - Peak:
f(x) = a·x·e^(-x/b) - Peak2:
f(x) = a·x²·e^(-x/b)
Development
# Activate the environment
pixi shell
# use development dependencies like jupyter notebooks/ipython
jupyterlab
Tests
# Run tests
pixi run test
Linting
# Linting
pixi run lint
pixi run format
License
MIT 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 Distribution
pkoffee-0.1.0.tar.gz
(18.0 kB
view details)
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
pkoffee-0.1.0-py3-none-any.whl
(23.1 kB
view details)
File details
Details for the file pkoffee-0.1.0.tar.gz.
File metadata
- Download URL: pkoffee-0.1.0.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe55754e651302b4c146625980d295a2520803bc3cb48e4f3f28148681a43d19
|
|
| MD5 |
4cb8fbc03cf1a41a2598e60368ae8ce0
|
|
| BLAKE2b-256 |
e002d800239f7515f84609be2b0e2d29dc6a87dfa1522cd91b2d7a71f5ba6f6f
|
File details
Details for the file pkoffee-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pkoffee-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
367f106e5870934eeb78653c21fe1ac2ae8f4fdfff2a437764bdc27cfcd518e7
|
|
| MD5 |
60b1fb0d2a6132dd4bfcca4012cc14f0
|
|
| BLAKE2b-256 |
640e8052e28bfbf743cec9988d7648cde8adf17162ebefbb895b74079d4efcb5
|