UC5_IHC_issue

UC5 / Per-object IHC morphometric cohort (CD11b, control vs drug) — interview input

Pulled-down GitHub issue used as the effective result of the INTERVIEW → GALAXY interview (the live interview mechanics are harness-owned and precede pipeline phase 1). Source: https://github.com/jmchilton/galaxy-brain/issues/28 Paired aspirational target: none yet — workflow not yet extracted from a Galaxy history.


Plain-language science (why this is interesting)

A heart attack kills tissue; immune cells (macrophages/microglia) flood the damaged “infarct zone” to clean up. A marker protein, CD11b, sits on those immune cells, and an IHC stain makes CD11b show up as brown deposits — more brown = more immune infiltration. The shipped data compares an untreated (vehicle/DMSO) group against a group given an anti-inflammatory drug candidate (4-oxo-RA). The scientific question: does the drug reduce immune-cell infiltration?

The tools: color deconvolution un-mixes the brown CD11b signal from the blue counterstain; Otsu thresholding decides which pixels are truly stained, producing a black-and-white mask. The thin version stops here and reports one ”% stained area” number per image — a t-test on 6 numbers.

The richer move: label each connected stained region as a separate object (one immune-cell cluster = one object), then measure each object’s size (area), shape (eccentricity, solidity, perimeter), and staining intensity. Now each image yields dozens-to-hundreds of objects, each with ~8 numbers — a distribution, not a single percent. This can reveal that the drug doesn’t just reduce total staining but shifts the character of the infiltrate (fewer large dense clusters, rounder vs more ramified cells) — a biologically richer claim. It’s the imaging analogue of the move single-cell genomics made: stop reporting one bulk number, report the distribution of individual objects and how its shape changes between conditions.

Purpose

Add an imaging vignette to the Galaxy Notebooks paper that is domain-novel (the existing three are bacterial AMR, differential ATAC-seq, differential ChIP) and analytically substantial. Instead of mapping a single ”% stained area” over 6 images and t-testing it, we treat each stained region as an individual object, extract per-object morphology + intensity features, and compare the distributions between an untreated and a drug-treated cohort — producing a multi-figure notebook that embeds real on-graph segmentation-mask images alongside per-object tables, distribution plots, and a per-sample feature heatmap, then extracts to a reusable collection-map-over workflow via provenance.

Objective (MVP + stretch)

MVP

Stretch

Why this is a useful demo deviation

Existing analysis anchors (real tool IDs / paths)

Anchor: iwc/workflows/imaging/histological-staining-area-quantification/histological-staining-area-quantification.ga

Object lever, borrowed from iwc/workflows/imaging/fluorescence-nuclei-segmentation-and-counting/:

Feature menu confirmed in the 2d_feature_extraction tool XML: area, area_convex, area_filled, axis_major_length, axis_minor_length, centroid, eccentricity, equivalent_diameter_area, extent, orientation, perimeter, solidity + (with intensities) mean/min/max_intensity, one row per label.

Plot/heatmap tools: confirm exact on-graph IDs on the target server (the ChIP vignette used ggplot2_heatmap2; need a box/violin plotter for object distributions) — see tasks.

Public data candidates (real shipped data)

From histological-staining-area-quantification-tests.yml (one list collection, 6 elements, 600×600 px ROIs, total_area=360000):

CD11b IHC ROIs, cardiac infarct zone; control = Vehicle/DMSO (Zenodo 20271100), treatment = 4-oxo-RA (Zenodo 20157596; 20158418 is a border-zone companion record). Stretch TMA: shipped exemplar dearrays to a single core — not a cohort; a multi-core TMA dataset must be sourced.

Notebook workflow plan (numbered, on-graph, map-over)

Input: one list collection IHC ROIs (identifiers control_1..3, treatment_1..3).

  1. Color deconvolution (ip_color_deconvolution) map-over → HED image per sample.
  2. Split channels (ip_split_image) → DAB/CD11b channel per sample.
  3. Otsu threshold (ip_threshold) map-over → binary stain mask per sample (on-graph image, embeddable).
  4. Connected-components label (ip_binary_to_labelimage) map-over → label map per sample (one object per stained region) — replaces the single-merged-ROI step.
  5. Per-object feature extraction (ip_2d_feature_extraction, with-intensities, intensity = deconvolved DAB channel, expanded features) map-over → per-object table per sample.
  6. Count objects (ip_count_objects) map-over → objects-per-sample.
  7. Labeled overlay / colorized label image (ip_overlay_images / colorize_labels) map-over → embeddable segmentation image per sample.
  8. Concatenate per-object tables with a sample/condition tag (column_maker to add sample_id/condition, collapse) → one tidy long table (object × features × condition), on-graph.
  9. Distribution plots (on-graph plot tool): box/violin of object area, eccentricity, mean_intensity by condition.
  10. Per-sample summary (collapse_dataset + column_maker): retained % area and median object features per sample.
  11. (Stretch) Per-sample × feature heatmap (ggplot2_heatmap2 or equivalent) → cohort view.

Then workflow_extraction_summary (expect 0 warnings) → extract workflow.

Expected paper/demo artifacts

Scope and risks

Tasks