TMA analysis
Break a tissue microarray (TMA) slide into its individual cores — detected, laid out on a labeled grid, and flagged for missing positions — before running per-core quantification.
Research question
Where is each tissue core on this TMA slide, what row/column position does it occupy, and are any expected cores missing or lost?
Who this is for
- Pathology research groups running large cohorts on tissue microarrays
- Core facilities processing TMA slides at scale, migrating from QuPath's TMA dearrayer
- Translational teams that need per-core identifiers before linking cores to patient/sample metadata
Data requirements
| Data | Required | Purpose |
|---|---|---|
TMA slide (modality tma) | Yes | Source image for core detection |
| Expected grid dimensions | Recommended | Improves grid-fit accuracy and missing-core detection |
Workflow
Upload TMA slide → Tiles → TMA dearray
→ Review core grid, labels, and missing positions
→ Per-core segmentation / quantification
Step 1 — Upload and tile
Create a slide with modality TMA, upload the scanned array, and generate tiles.
Step 2 — Run TMA dearray
Run TMA dearray on the slide. The pipeline detects tissue cores, quantizes their centroids onto a regular grid using nearest-neighbor pitch estimation, assigns row/column labels (A1, B2, …), and flags empty grid positions as missing cores.
Step 3 — Review the core grid
Inspect the detected core geometry and grid labels, and check flagged missing positions against your expected array layout before proceeding to per-core analysis.
Step 4 — Per-core segmentation and quantification
Run Tissue detect, Segment cells, and Spatial quantification as usual — dearraying provides the grid and per-core geometry that per-core batch processing and patient/cohort aggregation build on next.
Expected outputs
- Detected core centroids and geometry
- Grid row/column labels (A1, B2, …) per core
- Missing-core flags for empty expected grid positions
Important caveats
Per-core batch segmentation/quantification and patient/cohort aggregation across cores are not yet automated — dearraying establishes the grid and core geometry that the rest of the workflow is built on, but downstream per-core batching is a manual follow-up today.