reader is a workbench for analyzing experimental data and a library/CLI that provides supporting commands.
-
Place raw data and metadata in an experiment directory.
experiments/ <exp>/ config.yaml # experiment config inputs/ # raw files + metadata (e.g., metadata.xlsx) outputs/ # pipeline outputs, plots, exports, notebooks -
Run config-driven pipelines that process data and produce structured outputs.
outputs/ reader.log # run log manifests/ # inventories what was produced artifacts/ # pipeline outputs (dataframes + metadata) plots/ # rendered figures (optional) exports/ # exported files (optional) notebooks/ # scaffolded marimo notebooks
-
Optionally generate plots and exports data.
-
Use notebooks for exploratory data analysis.
This repo is managed with uv:
pyproject.tomldeclares dependencies (runtime + optional extras).uv.lockis the fully pinned dependency graph..venv/is the project virtual environment.
Two key commands:
uv syncinstalls everything from the lockfile into .venv.uv run <cmd>runs commands inside the project environment without requiringsource .venv/bin/activate.
Install uv. (Below is for macOS/Linux, for other OSs see here.)
curl -LsSf https://astral.sh/uv/install.sh | sh
# ensure your uv bin dir is on PATHClone repo
git clone https://github.com/e-south/reader.git
cd readerCreate/sync the environment from the committed lockfile:
uv sync --lockedSanity checks:
uv run python -c "import reader, pandas, pyarrow; print('ok')"Dev tooling is opt-in via a dependency group.
uv sync --locked --group dev --group notebooks --group cytometry --extra dnadesign
uv run ruff --version
uv run ruff check .
uv run pytest -qThis project defines console scripts, which you can run via:
Option A: no .venv activation — use uv run
uv run reader --help
uv run reader lsOption B: traditional — activate .venv
source .venv/bin/activate
reader --help
reader ls
deactivateTry the guided walkthrough:
uv run reader demoCreate an experiment directory:
# From the reader root
mkdir -p experiments/<year>/my_experiment/{inputs,outputs}Design and run a pipeline via config.yaml:
uv run reader explain experiments/my_experiment/config.yaml
uv run reader run experiments/my_experiment/config.yaml # pipeline (artifacts)Generate plots/exports or scaffold a notebook:
uv run reader plot experiments/my_experiment/config.yaml --list
uv run reader export experiments/my_experiment/config.yaml --list
uv run reader notebook experiments/my_experiment/config.yaml- CLI reference
- Configuring pipelines
- Notebooks
- Plugin development
- Spec / architecture
- End-to-end demo
@e-south