An experiment in agent-driven scientific data exploration, built around the public DepMap Breadbox API - genome-scale perturbation screens, omics, drug sensitivity, and cell-line metadata for cancer-dependency analysis.
dmx is a curated catalog of marimo notebooks for cancer-dependency analysis, plus a thin skill that lets an agent compose new analyses from them. Each notebook is both a runnable demonstration and a source of pure functions other notebooks can import and reuse directly. Given a new cancer-dependency question, the agent picks relevant notebooks, composes their functions into a new notebook, executes it in a live kernel, and hands back a self-contained, re-runnable result.
Breadbox is the REST API underlying the DepMap Portal: find datasets, search genes and compounds, retrieve matrix values, define model contexts, run two-class comparisons, and inspect precomputed associations.
By default dmx targets https://depmap.org/portal/breadbox, which does not require an API key for these read-only examples.
A non-default User-Agent header is required - the portal nginx rejects the bare python-requests agent with a 403.
Each notebook ships a committed session snapshot under notebooks/__marimo__/session/ so the molab preview renders cell outputs without re-executing.
catalog.toml's [[vignette]] table is the machine-readable version the compose skill reads: each notebook, its reusable helpers, and what it does.
Composed notebooks that answer the Karman melanoma drug-response benchmark - predict CellTiter-Glo % viability for A375 (BRAF-V600E) and LOXIMVI under a MAPK-inhibitor panel. Three submissions, each deleting one layer of hand-tuning and replacing it with measured data; v2 and v3 reuse the v1 engine unchanged and only change how the effect floors are produced. Each notebook is self-contained (it vendors the shared engine rather than importing siblings), so any row opens and re-runs as a standalone molab gist; v3 reads ChEMBL from a local copy when present and falls back to the ChEMBL REST API otherwise.
Each writes its populated output.json + reasoning.md per task under data/processed/nightshift_v*/, with a summary.json envelope the index notebook can pick up.
Some original task endpoints have since been retired, so the notebooks load one tracked v1 template set and regenerate every prediction field.
This catalog follows the vignette-catalog-skills pattern.
The skill stores are gitignored, so a fresh clone has only skills-lock.json; restore the on-disk skill content first.
npx skills update won't create Claude Code's .claude/skills/ on a fresh clone, so add the skills explicitly:
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 -yThis writes .claude/skills/ as well as .agents/skills/ (both gitignored); if a session is already open, run /reload-skills or restart it so the new skills register.
Then open Claude Code or Codex in this repo and ask to get started.
The vignette-catalog-compose-notebook skill launches nb01_orientation in a live marimo kernel and handles later analysis in the same workflow.
To run setup by hand:
uv --version # or: curl -LsSf https://astral.sh/uv/install.sh | sh
uvx marimo edit --sandbox notebooks/nb01_orientation.pyAlways launch notebooks with --sandbox so the PEP 723 inline dependencies are provisioned.
Built on the vignette-catalog-skills pattern: a thin skill plus a catalog of parameterized marimo notebooks an agent composes from in a live kernel. Sibling catalogs of the same pattern: jx for JUMP Cell Painting, fgx for FinnGenie human genetics, and prx for PROSPECT chemical genetics.