Read-only Shiny app viewer for Seurat v4 and v5 objects.
- Do NOT add analysis functions, data transformations, or object modifications.
- Use
LayerData(obj, layer = "counts")for data access, not direct slot access
SCTAssaydoes NOT have a@layersslot — direct@layers[["..."]]access crashes on it.- Use
get_layer_dim(assay_obj, layer)inseurat_utils.Rto safely get per-layer dimensions; it checksslotNamesfirst and falls back appropriately. Same pattern applies anywhere you need to touch a layer's underlying matrix on an arbitrary assay type. - Seurat uses specialized assay classes: ChromatinAssay (Signac) for ATAC, SCTAssay for SCT
- VisiumV2 is a subclass of FOV; VisiumV1 is NOT (it extends SpatialImage directly) — always check both classes explicitly
AdminLTE has deep CSS specificity — CSS overrides must target actual shinydashboard DOM structure with browser-inspector-level selectors.
ALWAYS use explicit namespace prefixes (SeuratObject::Layers(), shiny::renderUI(), DT::datatable()). The app.R launcher sources R/ files directly, bypassing NAMESPACE.
- Keep
settings.local.jsonin.claude/directory (not project root).