5-minute researcher orientation
Before you read anything else: see the “unitless signal index · not serum concentration” badge in the topbar. That chip is the canonical reminder that every number on this canvas is a relative model index — not a serum concentration, not a clinical endpoint. Keep it in mind as you read.
What Atlas does (and doesn't do)
Atlas is a computational signaling workbench. You build a compound stack, dial doses with sliders, and watch mechanistic pathway models update live across a bento canvas. The purpose is to explore how a stack of compounds distributes mechanistic signal across modeled pathways — not to predict what a patient will experience.
What it is:
- A relative accumulation and receptor-competition explorer
- A coefficient provenance viewer (every modeled number has a source: PMID, evidence state, mapping support)
What it is not:
- A clinical decision support tool
- A pharmacokinetic simulator producing serum concentrations
- A model of individual variation, metabolism, or route bioavailability beyond what the registry encodes
The BoundaryNote at the canvas footer is the canonical statement of interpretive limits. Read it once. The “unitless signal index · not serum concentration” badge in the topbar is a persistent reminder every time you glance up.
Getting in
Atlas is invite-only. Sign in at /login with the credentials your maintainer provisioned — there is no public signup flow. Once authenticated, your session is tied to your account across devices.
Your work persists automatically. The working compound stack auto-saves to your account and follows you when you switch devices or browsers. Beyond the live working state, two named persistence features are available from the canvas:
- Protocols (Protocols tab): save a named, versioned snapshot of a full compound stack + dose configuration to return to later or share with collaborators.
- Snapshots (Snapshots tab): capture a point-in-time record of the current evaluate response — useful when you want to compare two scenarios side by side or archive a result.
Account settings (display name, password change, sign out) are at /console/settings.
The five tile types you'll touch most
1. Compound slider (left column, row 1) — CompoundSliderTile
Each compound in your stack has a slider. Drag it; the entire canvas updates live. The × button at the right of each row removes that compound from the stack. “Add compound” opens a search dialog over the registry's calibrated compounds.
Sliders are the primary input. Everything downstream — PK traces, AR shares, sweep tiles, pathway bars — reflects whatever doses you set here.
2. PK accumulation (center, row 1, hero tile) — PKAccumulationTile
A 56-day time series of relative accumulation per compound. The tile has four scale modes: Shape for own-peak timing inspection, Raw size for one unitless signal-index axis, Per-compound for panels with their own raw max labels, and Aggregate envelope for layered own-peak timing. None of these modes is a serum concentration, stack-total line, or bioequivalent cross-compound load.
The vertical white cursor line is day-linked: drag it or use the snap buttons below the chart. Snap labels read “start · day 0”, “peak · day N”, “steady · day N” — N is computed from the compound's half-life. Clicking a trace dot opens the Inspector for that data point.
The day cursor on the DayBar is global — moving it drives the vertical cursor line on the PK accumulation chart AND the active-day snapshot in the AR competition tile. Scrub it to see how shares evolve over 56 days.
3. AR competition share (right, row 1) — ARCompetitionTile
A stacked-area chart showing affinity-adjusted competition share among source-linked androgen-receptor ligands each day. Areas are relative competition fractions among the modeled ligands — not clinical occupancy estimates. The hatched band at the top is the unmodeled gap: compounds without PMID-backed AR affinity data.
GR and ER receptor slots are structurally present in the model but have no calibrated affinity data for v0.6. The chips in the tile header label them accordingly.
4. PK/PD bridge — AcvDoseTile
A dose-axis explorer for one compound. The upper stage shows the PK input proxy across swept doses. The lower Emax stage renders only when explicit parameters are present: source-backed fits label themselves as fitted, class-default first-pass envelopes label themselves as not source-backed, and user-entered parameters label themselves as user-supplied.
If the sweep returns no value for a dose point, that point is outside the current model support. Click “Out of model” points for details in the Inspector.
5. Pathway breadth (bottom right) — PathwayBreadthTile + StatStrip + ModelGapStrip
PathwayBreadthTile: Compact bar chart of modeled pathway axes. Hatched bars are “not mapped” — the registry has no coefficients for that compound on that axis. The ghost segment behind each bar is the pre-drag baseline, showing what the slider change just did.
StatStrip: Four summary cells below the chart: Dose ledger (per-compound, no potency-equivalent total), Model support (support tier plus affinity and registry gaps), Material overlaps (flagged compound pairs), and Sensitivity driver (hold-out projection for the compound that changes the legacy load index most if removed). Values update as you drag sliders. The badge in the topbar collapses to icon-only below 1280 px viewport width — the label text is hidden by a CSS media query, but the icon and tooltip remain.
ModelGapStrip: Roadmap chips for known model gaps. Current entries include the proposed full ADR 0001 mitochondrial/ribosomal infrastructure layer (deep slow-state with latent damage contracts; not the three live heuristic cost-proxy axes), reserved cardiovascular/hepatic/neuroendocrine/tissue cost axes, etc. Note: mitochondrial_signaling, ribosomal_translation, hpta_suppression are live first-class heuristic cost proxies in the 10-axis model. These chips are not errors — they are honest placeholders for future calibration work.
Inspector (slide-over, right panel)
Click any tile element — a pathway bar, a PK trace dot, an AR band segment, a sweep point — and the Inspector opens. It shows the underlying coefficient path, evidence state, PMID where available, and model support reasoning. If you are skeptical of a number, the Inspector is where you go first.
How to do common things
Export a scenario
Click the Download icon in the topbar. A JSON file downloads containing the current scenario stack and the latest evaluate response from the model service. This is a complete, reproducible snapshot.
Drill into a value you're skeptical of
Click whatever surface displayed it. The Inspector opens with provenance (PMID where available), evidence state, and model support. If the chip says “not mapped” or the cell value is “—”, the model genuinely has no data for it — this is not a bug, it is the honest state of the registry.
When something looks wrong
A trace flatlines at the top of the PK chart
The Σ aggregate line hit the right-axis ceiling. This is not a model crash — it means the sum of accumulation values exceeds the chart's display scale. Individual compound traces (left axis) are unaffected.
The sweep tile shows “Out of model” for a dose point
That compound has no AR affinity data in the registry at that dose. The Inspector will confirm this. It is not a frontend error.
A tile is blank or shows a spinner indefinitely
The Rust model service (atlas-model-service, port 8003) may be down. A service-down banner will appear at the top of the canvas if the service is unreachable. To restart: cargo run -p atlas-model-service in a terminal from the repo root.
A StatStrip cell shows “—” or zero unexpectedly
The compound you added may not have coefficients for that pathway axis. Check the PathwayBreadthTile — hatched bars indicate unmapped axes for that compound.
What Atlas v0.6 does NOT model
Be explicit with yourself and your collaborators about these gaps:
- Mitochondrial signaling: The pathway slot exists in the model architecture, but coefficients are pending. The backend serializes the reserved row as
nullplusNot estimated, not as a true zero. - Ribosomal translation: Same situation — reserved pathway slot, coefficients pending, serialized as unavailable rather than as modeled data.
- Sigmoidal dose-response parameters: EC50, Hill coefficient, and Emax may come from source-backed fits, class-default first-pass envelopes, or user-supplied inputs. Class-default and user-supplied curves are explicitly labeled as not source-backed.
- GR and ER receptor affinities: Structurally present in the AR competition tile but not calibrated. All GR/ER values are placeholder zeros.
- Serum concentrations: The PK accumulation tile is a relative index normalized to each compound's own peak. There is no pharmacokinetic unit conversion, no volume of distribution, no route bioavailability modeling beyond what the half-life parameter encodes.
- Clinical endpoints: Atlas does not predict outcomes, lab values, or side-effect likelihood. The boundary between mechanistic signal exploration and clinical interpretation is strict and intentional.
- Individual variation: Every result is a population-level model mean. No inter-individual variability, no CYP polymorphism modeling, no weight/age adjustment.
When you see a number that looks authoritative, check the Inspector. Evidence state will tell you whether it is “calibrated from PMID”, “estimated”, or “not calibrated”. The model's honesty about its own gaps is a feature.
For developer setup, architecture, and API contract: see docs/getting-started.md and docs/architecture.md.