Skip to content

Commit b22e814

Browse files
authored
Merge pull request #903 from mvdbeek/tma_l2
2 parents a1925cc + 827f4c0 commit b22e814

File tree

15 files changed

+1386
-1
lines changed

15 files changed

+1386
-1
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
version: 1.2
2+
workflows:
3+
- name: main
4+
subclass: Galaxy
5+
publish: true
6+
primaryDescriptorPath: /multiplex-tma.ga
7+
testParameterFiles:
8+
- /multiplex-tma-tests.yml
9+
authors:
10+
- name: Cameron Watson
11+
orcid: 0000-0002-6942-2469
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Changelog
2+
3+
## [0.1] - 2025-06-21
4+
5+
- Initial release of Multiplex Tissue Microarray Analysis Workflow
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Multiplex tissue image processing and analysis with Galaxy-ME
2+
3+
Use this workflow when you have pre-registered OME-TIFF images that are ready for analysis (no preprocessing needed).
4+
5+
## Overview
6+
7+
This workflow processing and analyzes multiple multiplex tissue imaging datasets by
8+
9+
1. Performing **background subtraction, nuclear segmentation, and feature extraction**
10+
2. Performing hierarchical, GMM-based **cell phenotyping**
11+
3. Analyzing **multi-sample cell type composition**
12+
4. Quantifying the **spatial arrangment of cell types** in the tissues
13+
5. Exploring the original images with all downstream associated data using **interactive dashboards**
14+
15+
## Input datasets
16+
17+
- Collection of registered OME-TIFF images
18+
- Markers file (CSV) for background subtraction
19+
20+
- Example markers file:
21+
22+
```
23+
marker_name,background,exposure,remove
24+
DNA_1,,,
25+
Control_A488,,,TRUE
26+
Control_A555,,,TRUE
27+
Control_A647,,,TRUE
28+
DNA_2,,,TRUE
29+
RNA_Pol_II_CTD,Control_A488,,
30+
pERK,Control_A555,,
31+
p53,Control_A647,,
32+
...
33+
```
34+
35+
36+
- Phenotype workflow and manual gate files (CSV): A comma-separated Scimap phenotyping file that maps hierarchical cell phenotypes to markers, and a manual gates file that maps markers to manually-determined thresholds
37+
38+
- For examples, see our [tutorial](https://training.galaxyproject.org/training-material/topics/imaging/tutorials/multiplex-tissue-imaging-TMA/tutorial.html) and the [Scimap documentation](https://scimap-doc.readthedocs.io/en/latest/tutorials/scimap-tutorial-cell-phenotyping/).
39+
40+
## Inputs values
41+
42+
All input values have been preset in the workflow and are optimized for cyclic immunofluorescence images captured using a Rarecyte slide scanner. Some important assumptions are made:
43+
44+
- Channel used for nuclear segmentation (Mesmer): `0`
45+
- Image resolution (microns per pixel): `0.65`
46+
47+
The workflow should be imported and edited if these values are not suitable for your datasets.
48+
49+
## Processing
50+
51+
For more detailed information, see our [tutorial on the Galaxy Training Network](https://training.galaxyproject.org/training-material/topics/imaging/tutorials/multiplex-tissue-imaging-TMA/tutorial.html)
52+
53+
- Nuclear segmentation is performed using **Mesmer**, producing a nuclear mask in TIFF format for each core image
54+
- Cell/nuclear features (mean marker intensities, spatial coordinates, and morphological measurements) are quantified using **MCQUANT**, producing a CSV table of cells (rows) x features (columns)
55+
- The quantification table is converted to anndata format (h5ad), a common datatype used by most single-cell and spatial analysis packages
56+
- Automated cell phenotyping is performed using **Scimap** (see *Warning* section about GMM-based phenotyping)
57+
- **Scimap** and **Squidpy** are used for spatial analysis
58+
- Finally, **Vitessce** dashboards combine interactive image viewing with linked single-cell analysis components to allow for integrated initial data exploration
59+
60+
## Tool developers' documentation
61+
62+
- [MCMICRO](https://mcmicro.org/)
63+
- Basic Illumination
64+
- ASHLAR
65+
- UNetCoreograph
66+
- MCQuant
67+
- [Mesmer](https://deepcell.readthedocs.io/en/master/)
68+
- [Scimap](https://scimap-doc.readthedocs.io/en/latest/)
69+
- [Vitessce](https://vitessce.io/)
70+
71+
72+
## Tool references
73+
74+
- Greenwald, N. F., G. Miller, E. Moen, A. Kong, A. Kagel et al., 2021 Whole-cell segmentation of tissue images with human-level performance using large-scale data annotation and deep learning. Nature Biotechnology 40: 555–565. 10.1038/s41587-021-01094-0
75+
- Schapiro, D., A. Sokolov, C. Yapp, Y.-A. Chen, J. L. Muhlich et al., 2021 MCMICRO: a scalable, modular image-processing pipeline for multiplexed tissue imaging. Nature Methods 19: 311–315. 10.1038/s41592-021-01308-y
76+
- Virshup, I., S. Rybakov, F. J. Theis, P. Angerer, and F. A. Wolf, 2021 anndata: Annotated data. 10.1101/2021.12.16.473007
77+
- Palla, G., H. Spitzer, M. Klein, D. Fischer, A. C. Schaar et al., 2022 Squidpy: a scalable framework for spatial omics analysis. Nature Methods 19: 171–178. 10.1038/s41592-021-01358-2
78+
- Nirmal, A. J., and P. K. Sorger, 2024 SCIMAP: A Python Toolkit for Integrated Spatial Analysis of Multiplexed Imaging Data. Journal of Open Source Software 9: 6604. 10.21105/joss.06604
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
- doc: Test outline for GBCC-TMA-L2-workflow
2+
job:
3+
Markers File:
4+
class: File
5+
path: test-data/Markers File.csv
6+
filetype: csv
7+
Manual Gates:
8+
class: File
9+
path: test-data/Manual Gates.csv
10+
filetype: csv
11+
Phenotype workflow:
12+
class: File
13+
path: test-data/Phenotype workflow.csv
14+
filetype: csv
15+
Registered Images:
16+
class: Collection
17+
collection_type: list
18+
elements:
19+
- class: File
20+
identifier: image
21+
location: https://zenodo.org/records/15710828/files/Registered%20Images_registered%20image.ome.tiff?download=1
22+
filetype: ome.tiff
23+
outputs:
24+
Spatial Scatterplot Montage:
25+
asserts:
26+
- has_size:
27+
size: 181K
28+
delta: 50K
29+
Spatial Interaction Montage:
30+
asserts:
31+
- has_size:
32+
size: 39K
33+
delta: 20K
34+
Merged anndata:
35+
asserts:
36+
- has_h5_keys:
37+
keys: obs/Area,obs/CellID,obs/Eccentricity,obs/Extent,obs/MajorAxisLength,obs/MinorAxisLength,obs/Orientation,obs/Solidity,obs/X_centroid,obs/Y_centroid,obs/imageid,obs/imageid/categories,obs/imageid/codes
38+
Multisample barplot:
39+
asserts:
40+
- has_size:
41+
size: 60K
42+
delta: 30K
43+
Background subtracted images:
44+
element_tests:
45+
image:
46+
asserts:
47+
- has_image_channels:
48+
channels: 7
49+
Background subtracted markers:
50+
element_tests:
51+
image:
52+
asserts:
53+
- has_line:
54+
line: marker_name,background,exposure
55+
- has_line:
56+
line: DNA_7,,
57+
Primary Mask Quantification:
58+
element_tests:
59+
image:
60+
asserts:
61+
- has_line:
62+
line: CellID,DNA_7,CD11B,SMA,CD16,ECAD,FOXP3,NCAM,X_centroid,Y_centroid,Area,MajorAxisLength,MinorAxisLength,Eccentricity,Solidity,Extent,Orientation
63+
Segmented Multiplexed Mask:
64+
element_tests:
65+
image:
66+
asserts:
67+
- has_image_channels:
68+
channels: 1
69+
phenotyped adata:
70+
element_tests:
71+
image:
72+
asserts:
73+
- has_h5_keys:
74+
keys: obs/Area,obs/CellID,obs/Eccentricity,obs/Extent,obs/MajorAxisLength,obs/MinorAxisLength,obs/Orientation,obs/Solidity,obs/X_centroid,obs/Y_centroid,obs/imageid,obs/imageid/categories,obs/imageid/codes
75+
Interaction Matrix Plot:
76+
element_tests:
77+
image:
78+
asserts:
79+
- has_size:
80+
size: 43K
81+
delta: 20K
82+
Interaction Matrix Anndata:
83+
element_tests:
84+
image:
85+
asserts:
86+
- has_h5_keys:
87+
keys: obs/Area,obs/CellID,obs/Eccentricity,obs/Extent,obs/MajorAxisLength,obs/MinorAxisLength,obs/Orientation,obs/Solidity,obs/X_centroid,obs/Y_centroid,obs/imageid,obs/imageid/categories,obs/imageid/codes
88+
Squidpy Spatial Scatterplots:
89+
element_tests:
90+
image:
91+
asserts:
92+
- has_size:
93+
size: 181K
94+
delta: 50K
95+
Vitessce Dashboard:
96+
element_tests:
97+
image:
98+
asserts:
99+
- has_json_property_with_text:
100+
property: version
101+
text: "1.0.17"

0 commit comments

Comments
 (0)