Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## [0.1.2] - 2026-06-01

### Automatic update
- `toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1` was updated to `toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/8.0.0+galaxy0`
- `toolshed.g2.bx.psu.edu/repos/imgteam/split_image/ip_split_image/2.3.5+galaxy0` was updated to `toolshed.g2.bx.psu.edu/repos/imgteam/split_image/ip_split_image/2.3.5+galaxy1`
- `toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2` was updated to `toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.3`

## [0.1.1] - 2026-05-28

### Fixed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@
{
"child_steps": [
2,
4,
12,
25,
4,
6,
7,
9,
Expand Down Expand Up @@ -149,9 +149,8 @@
],
"format-version": "0.1",
"license": "CC-BY-4.0",
"release": "0.1.1",
"name": "Histological Staining Area Quantification",
"readme": "# Histological Staining Area Quantification\n\n## Overview\nThis workflow quantifies stained tissue areas in brightfield histological images \nusing colour deconvolution and automated thresholding. It is designed for \n3-channel stainings compatible with the H-E-DAB (HED) colour space, such as \nMasson's Trichrome (MT) and Immunohistochemistry (IHC).\n\n## What does this workflow do?\n1. **Colour deconvolution** separates the input image into individual stain channels (HED).\n2. **Channel splitting and extraction** isolates the target stain channel (default: Channel 2).\n3. **Automated thresholding** (Li method) generates a binary mask of stained vs. unstained regions.\n4. **Feature extraction** quantifies staining area and intensity per sample.\n5. **Output collation** merges all per-sample results into a single tabular file.\n\n## Input data requirements\n- **Format:** TIFF\n- **Type:** Brightfield microscopy images\n- **Staining:** Compatible with HED colour deconvolution (e.g., Masson's Trichrome, IHC)\n- **Content:** Whole slide images or pre-cropped regions of interest (ROIs)\n- **Structure:** Dataset collection (list) \u2014 one image per sample\n\n> \u26a0\ufe0f Images must be pre-cropped to the region of interest before use.\n> The workflow does not perform ROI selection.\n\n## Output\nA tabular file (TSV) containing one row per sample with the following columns:\n- `sample_id` \u2014 sample identifier\n- `label` \u2014 pixel label (1 = stained region)\n- `mean_intensity` \u2014 mean pixel intensity within the stained region\n- `area` \u2014 total number of stained pixels\n- `area_filled` \u2014 stained area with internal holes filled\n- `total_area` \u2014 total pixel count of the input image (width \u00d7 height)\n- `percent_area` \u2014 staining area as percentage of total image area\n\n## Important notes\n- Verify that **Channel 2** corresponds to your stain of interest before running.\n This can be checked by inspecting the deconvolved image output.\n- The thresholding method is **Li**. If results are suboptimal, adjust the offset \n in the Threshold step.\n- The workflow processes images as a **collection**, enabling batch analysis \n of multiple samples in a single run.\n\n## Compatible stainings\n| Staining | Target channel |\n|----------|---------------|\n| Masson's Trichrome (MT) | Channel 2 (Eosin/collagen) |\n| Immunohistochemistry (IHC) | Channel 2 (DAB) |\n\n## Citation\nIf you use this workflow, please cite it via its WorkflowHub DOI.",
"readme": "# Histological Staining Area Quantification\n\n## Overview\nThis workflow quantifies stained tissue areas in brightfield histological images \nusing colour deconvolution and automated thresholding. It is designed for \n3-channel stainings compatible with the H-E-DAB (HED) colour space, such as \nMasson's Trichrome (MT) and Immunohistochemistry (IHC).\n\n## What does this workflow do?\n1. **Colour deconvolution** separates the input image into individual stain channels (HED).\n2. **Channel splitting and extraction** isolates the target stain channel (default: Channel 2).\n3. **Automated thresholding** (Li method) generates a binary mask of stained vs. unstained regions.\n4. **Feature extraction** quantifies staining area and intensity per sample.\n5. **Output collation** merges all per-sample results into a single tabular file.\n\n## Input data requirements\n- **Format:** TIFF\n- **Type:** Brightfield microscopy images\n- **Staining:** Compatible with HED colour deconvolution (e.g., Masson's Trichrome, IHC)\n- **Content:** Whole slide images or pre-cropped regions of interest (ROIs)\n- **Structure:** Dataset collection (list) — one image per sample\n\n> ⚠️ Images must be pre-cropped to the region of interest before use.\n> The workflow does not perform ROI selection.\n\n## Output\nA tabular file (TSV) containing one row per sample with the following columns:\n- `sample_id` — sample identifier\n- `label` — pixel label (1 = stained region)\n- `mean_intensity` — mean pixel intensity within the stained region\n- `area` — total number of stained pixels\n- `area_filled` — stained area with internal holes filled\n- `total_area` — total pixel count of the input image (width × height)\n- `percent_area` — staining area as percentage of total image area\n\n## Important notes\n- Verify that **Channel 2** corresponds to your stain of interest before running.\n This can be checked by inspecting the deconvolved image output.\n- The thresholding method is **Li**. If results are suboptimal, adjust the offset \n in the Threshold step.\n- The workflow processes images as a **collection**, enabling batch analysis \n of multiple samples in a single run.\n\n## Compatible stainings\n| Staining | Target channel |\n|----------|---------------|\n| Masson's Trichrome (MT) | Channel 2 (Eosin/collagen) |\n| Immunohistochemistry (IHC) | Channel 2 (DAB) |\n\n## Citation\nIf you use this workflow, please cite it via its WorkflowHub DOI.",
"report": {
"markdown": "# Histological Staining Area Quantification\n\n```galaxy\ninvocation_time()\n```\n\n---\n\n## Summary\n\nThis workflow is designed to quantify the area and intensity of a specific stain in brightfield histological images. It takes a collection of input images, applies H-E-DAB colour deconvolution to separate the target stain channel from the haematoxylin counterstain, then uses automated thresholding to segment positive-staining pixels. Per-sample measurements are collated into a single tabular output.\n\nCompatible staining types include immunohistochemistry (IHC) with a DAB chromogen and Masson's Trichrome (MT). The workflow expects RGB TIFF images — one region of interest (ROI) per collection element.\n\n```galaxy\nworkflow_image()\n```\n\n---\n\n## Input Images\n\nThe input to this workflow is a list collection of brightfield microscopy images. Each element should represent one region of interest from a tissue section. The images provided for this run are shown below.\n\n```galaxy\nvisualization(visualization_id=tiffviewer, input=\"ROI image for staining analysis\")\n```\n\n---\n\n## Staining Mask\n\nIf the run completed successfully, each input image will have been converted into a binary mask via colour deconvolution and automated thresholding. In this mask, **white pixels** represent regions classified as positively stained and **black pixels** represent background. This mask is what the quantification measurements are derived from.\n\n```galaxy\nvisualization(visualization_id=tiffviewer, output=\"Selected Stain Channel Thresholded\")\n```\n\n---\n\n## Results\n\nIf the workflow completed successfully, the table below shows per-sample staining measurements — one row per input image. The expected columns are described below.\n\n| Column | Description |\n|--------|-------------|\n| `sample_id` | Identifier derived from the input image filename |\n| `label` | Region label assigned by the thresholding step |\n| `mean_intensity` | Average pixel intensity within the detected region (lower = stronger stain, due to deconvolution inversion) |\n| `area` | Pixel count of the positively stained region |\n| `area_filled` | Stained area with internal holes filled |\n| `total_area` | Total pixel count of the input image (width × height) |\n| `percent_area` | Staining area as a percentage of total image area (`area / total_area × 100`) |\n\n```galaxy\nhistory_dataset_as_table(output=\"Tabular File: Staining Feature Results\", title=\"Staining Feature Results\")\n```\n\n```galaxy\nhistory_dataset_link(output=\"Tabular File: Staining Feature Results\", label=\"Download results (TSV)\")\n```\n\n---\n\n## Reproducibility\n\n```galaxy\nhistory_link()\n```\n\n```galaxy\nworkflow_license()\n```\n"
},
Expand Down Expand Up @@ -317,7 +316,7 @@
},
"4": {
"annotation": "",
"content_id": "toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1",
"content_id": "toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/8.0.0+galaxy0",
"errors": null,
"id": 4,
"input_connections": {
Expand All @@ -340,24 +339,24 @@
"top": 974.2997227256178
},
"post_job_actions": {},
"tool_id": "toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1",
"tool_id": "toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/8.0.0+galaxy0",
"tool_shed_repository": {
"changeset_revision": "f8b4eada923c",
"changeset_revision": "e28851b24032",
"name": "image_info",
"owner": "imgteam",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "5.7.1+galaxy1",
"tool_version": "8.0.0+galaxy0",
"type": "tool",
"uuid": "8ffc6557-6365-46b2-961e-28019975c4b9",
"when": null,
"workflow_outputs": []
},
"5": {
"annotation": "Splits multi-channel image into single-channel images. Extracts the target stain channel from the split image collection. Default index: 1 (Channel 2). Verify this corresponds to your stain of interest before running the workflow. The pixel data type is preserved.",
"content_id": "toolshed.g2.bx.psu.edu/repos/imgteam/split_image/ip_split_image/2.3.5+galaxy0",
"content_id": "toolshed.g2.bx.psu.edu/repos/imgteam/split_image/ip_split_image/2.3.5+galaxy1",
"errors": null,
"id": 5,
"input_connections": {
Expand All @@ -380,16 +379,16 @@
"top": 317.55286708436944
},
"post_job_actions": {},
"tool_id": "toolshed.g2.bx.psu.edu/repos/imgteam/split_image/ip_split_image/2.3.5+galaxy0",
"tool_id": "toolshed.g2.bx.psu.edu/repos/imgteam/split_image/ip_split_image/2.3.5+galaxy1",
"tool_shed_repository": {
"changeset_revision": "390943df8a35",
"changeset_revision": "7191fd16988f",
"name": "split_image",
"owner": "imgteam",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"axis\": \"C\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"squeeze\": false, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_state": "{\"axis\": \"C\", \"count\": null, \"input\": {\"__class__\": \"ConnectedValue\"}, \"offset\": \"0\", \"squeeze\": false, \"step\": \"1\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "2.3.5+galaxy0",
"tool_version": "2.3.5+galaxy1",
"type": "tool",
"uuid": "32f6700c-df06-4bcc-a070-22d77b2d01c7",
"when": null,
Expand Down Expand Up @@ -700,12 +699,7 @@
"output_name": "output"
}
},
"inputs": [
{
"description": "runtime parameter for tool Analyze particles",
"name": "input"
}
],
"inputs": [],
"label": "Generate ROIs of stained region",
"name": "Analyze particles",
"outputs": [
Expand Down Expand Up @@ -922,7 +916,7 @@
},
"18": {
"annotation": "",
"content_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2",
"content_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.3",
"errors": null,
"id": 18,
"input_connections": {
Expand All @@ -945,16 +939,16 @@
"top": 628.6593583390311
},
"post_job_actions": {},
"tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2",
"tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.3",
"tool_shed_repository": {
"changeset_revision": "d3c07d270a50",
"changeset_revision": "3e27acfa4830",
"name": "collection_element_identifiers",
"owner": "iuc",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"input_collection\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "0.0.2",
"tool_version": "0.0.3",
"type": "tool",
"uuid": "d1deeb80-d601-43a7-a6f8-0e8fac4db155",
"when": null,
Expand Down Expand Up @@ -1399,6 +1393,7 @@
"name:BrightfieldMicroscopy",
"name:ColorDeconvolution"
],
"uuid": "68f8ddf9-c6c3-47a8-bb96-0ba8850ab24e",
"version": 43
}
"uuid": "55358da3-746c-445b-aa4e-17980ebd8e47",
"version": 1,
"release": "0.1.2"
}
Loading