Panoscope
Panoscope is a grounded interpretation layer over jazzPanda's spatial-transcriptomics output.
Core trick
A deterministic engine sets confidence from spatial marker values, and a grounding gate rejects any Claude claim or PubMed citation it cannot trace.
Description
Panoscope is a grounded interpretation layer over jazzPanda's spatial-transcriptomics output. A wet-lab biologist opens a cluster and asks in plain language, for example "why is this still Stromal when COL1A1 is missing?", and Panoscope answers with a cell-type call, a confidence band, the driving markers with their real jazzPanda numbers, and a live-fetched PubMed citation for the biology. It never invents a marker, a number, or a reference.
Two design choices make it trustworthy. A confident floor: a deterministic engine computes every confidence band from jazzPanda's spatial signal and enforces the panel-absence rule, so a canonical marker that was never on the 280-gene panel is not treated as evidence against a cell type. An open ceiling: literature reasoning runs live through Claude behind a grounding gate that rejects any number or citation it cannot trace to source, and a test suite fails the build if the agent states anything it cannot cite. When a biologist overrides a call, Panoscope keeps their decision and cross-checks the literature, saving a versioned, git-tracked lab note with both the agreement and the dissent visible.
The same discipline extends past marker calls. A second workflow interprets gene-set enrichment on the panel, carrying a mandatory panel-coverage caveat (for example, only 8 of a 200-gene program are actually measured) that deterministically weakens the confidence when a "pathway" really rests on a handful of immune genes bleeding in from neighbouring cells. Each analysis method is a self-contained skill file, so supporting a new bioinformatics tool means writing a new grounded interpretation contract, not a new app.
Why it matters: annotation confidence is exactly where biologists get stuck, and LLMs are exactly where fabrication creeps in. Panoscope is a reusable pattern for Claude Science: put Claude on top of any real bioinformatics output and make it structurally unable to state a fact it cannot cite. Every one of the 223 citations it ships resolves to a real paper.
README excerpt
<p align="center">
<img src="assets/panoscope_logo_with_text.png" alt="Panoscope" width="300"/>
</p>
<p align="center">
<a href="https://github.com/MelodyJIN-Y/Panoscope/actions/workflows/ci.yml"><img src="https://github.com/MelodyJIN-Y/Panoscope/actions/workflows/ci.yml/badge.svg" alt="CI"/></a>
</p>
**An annotation-confidence layer for [jazzPanda](https://github.com/phipsonlab/jazzPanda).** A biologist asks about a cluster in plain language; Panoscope answers with a cell-type call, a confidence level, and the evidence behind it. Every number traces back to jazzPanda's spatial marker output, and every literature claim carries a real, live-fetched PubMed citation.
jazzPanda is the engine. This is the interpretation layer.
<p align="center">
<a href="https://youtu.be/djmImgY6RU8">
<img src="assets/demo_thumbnail.jpg" alt="Watch the Panoscope demo" width="640"/>
</a>
<br/>
<em>▶ Watch the 3-minute demo</em>
</p>
## Review this in 60 seconds
- **What it is.** A grounded interpretation layer over jazzPanda spatial markers. Ask about a cluster in plain language; get a cell-type call, a confidence level, and the evidence, with every number traced to jazzPanda and every citation fetched live from PubMed.
- **The one catch to see (cluster c2).** Its textbook stromal markers COL1A1 and VIM are **off-panel**, never measured. A general reader (or a general LLM) counts that as evidence against stroma; Panoscope checks the panel first, marks them "not measured"