An experiment in agent-driven scientific data exploration, built around JUMP Cell Painting — the largest public morphological profiling dataset (~116K compounds, ~8K CRISPR knockouts, ~15K gene overexpressions, 1.6 billion cells).
jx is a curated catalog of marimo vignettes for JUMP analysis, plus a thin skill that lets an agent compose new analyses from them. Each vignette is both a runnable demonstration and a source of pure functions other notebooks can import and reuse directly. Given a new biological question, the agent picks relevant vignettes, composes their functions into a new notebook, executes it in a live kernel, and hands back a self-contained, re-runnable result.
For the hypothesis, the catalog walkthrough, and the project roadmap, see PLAN.md.
Each notebook ships with a committed session snapshot under notebooks/__marimo__/session/ so the molab preview renders cell outputs without re-executing.
| Notebook | Role | Preview |
|---|---|---|
nb01_retrieve_profiles.py |
Pull JUMP morphological profiles by perturbation | |
nb02_add_metadata.py |
Annotate profiles with plate, well, and perturbation metadata | |
nb03_calculate_activity.py |
Score morphological activity via mAP (copairs) | |
nb04_display_images.py |
Fetch and display Cell Painting site images | |
nb05_explore_similarity.py |
Cosine-similarity search over JUMP profiles | |
nb06_query_genes.py |
Translate gene / compound identifiers via broad-babel |
|
nb07_compound_neighborhood.py |
Composition demo: compound -> similar perturbations -> annotated neighborhood with images | |
nb08_panel_similarity.py |
Resolve mixed perturbation panels, annotate activity, and compare morphology across modalities |
Related public catalogs of the same pattern: fgx for FinnGenie human genetics, prx for PROSPECT chemical genetics, and dmx for DepMap Breadbox.
This catalog follows the vignette-catalog-skills pattern.
The installed skill stores are gitignored, so a fresh clone has skills-lock.json plus the repo-local compose-query skill (see below); restore the installed skill content first:
uv --version # or: curl -LsSf https://astral.sh/uv/install.sh | sh
npx skills@1.5.20 add carpenter-singh-lab/vignette-catalog-skills -s vignette-catalog-compose-notebook -s vignette-catalog-scaffold -a claude-code -a codex -y
npx skills@1.5.20 add marimo-team/skills -s marimo-notebook -a claude-code -a codex -y
npx skills@1.5.20 add marimo-team/marimo-pair -s marimo-pair -a claude-code -a codex -yThen open Claude Code or Codex in this repo and ask to get started.
The vignette-catalog-compose-notebook skill launches nb07_compound_neighborhood in a live marimo kernel and handles later analysis in the same workflow.
jx also ships a repo-local compose-query skill (tracked under .claude/skills/compose-query/) for the parallel ggsql catalog under queries/ - pure SQL + chart questions against the JUMP metadata DuckDB that don't need a marimo notebook.
BSD 3-Clause — see LICENSE.