Skip to content

Conversation

@Jiaqi-Lv
Copy link
Collaborator

@Jiaqi-Lv Jiaqi-Lv commented Oct 25, 2025

This PR adds GrandQC tissue detection (Unet++) model to TIAToolBox models. GrandQC Original Github.

Tasks

  • Re-host GrandQC model weights on TIA Hugging Face
  • Update pretrained_model.yaml
  • Update requirements.txt
  • Define GrandQC model architecture
  • Add tests
  • Add example usage
  • Remove segmentation-models-pytorch dependency
  • Wait for response from GrandQC authors

@Jiaqi-Lv Jiaqi-Lv self-assigned this Oct 25, 2025
@Jiaqi-Lv Jiaqi-Lv added the enhancement New feature or request label Oct 25, 2025
@codecov
Copy link

codecov bot commented Oct 25, 2025

Codecov Report

❌ Patch coverage is 79.06977% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 94.65%. Comparing base (b542c9a) to head (5c5bfc4).

Files with missing lines Patch % Lines
tiatoolbox/models/architecture/grandqc.py 79.06% 8 Missing and 1 partial ⚠️
Additional details and impacted files
@@                    Coverage Diff                     @@
##           dev-define-engines-abc     #965      +/-   ##
==========================================================
- Coverage                   94.72%   94.65%   -0.08%     
==========================================================
  Files                          73       74       +1     
  Lines                        9235     9278      +43     
  Branches                     1208     1209       +1     
==========================================================
+ Hits                         8748     8782      +34     
- Misses                        452      460       +8     
- Partials                       35       36       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Jiaqi-Lv Jiaqi-Lv requested a review from Copilot October 25, 2025 20:22
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR integrates the GrandQC tissue detection model into TIAToolBox, adding a UNet++ based tissue segmentation capability trained at 10 microns per pixel resolution. The implementation leverages the segmentation-models-pytorch library to avoid reimplementing the UNet++ architecture.

  • Adds GrandQC tissue detection model architecture and pretrained weights
  • Integrates model with existing tissue masking functionality
  • Adds comprehensive test coverage and example usage

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tiatoolbox/models/architecture/grandqc.py Defines the TissueDetectionModel class with UNet++ architecture and custom preprocessing/postprocessing
tiatoolbox/data/pretrained_model.yaml Adds GrandQC model configuration and fixes IOConfig class references across multiple models
tests/models/test_arch_grandqc.py Implements unit tests for model creation, weight loading, and inference
requirements/requirements.txt Adds segmentation-models-pytorch dependency
tiatoolbox/wsicore/wsireader.py Integrates GrandQC masker into tissue_mask method with 10mpp resolution handling

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Jiaqi-Lv Jiaqi-Lv requested a review from Copilot October 25, 2025 20:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Jiaqi-Lv Jiaqi-Lv requested a review from Copilot October 31, 2025 10:05
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


@staticmethod
def preproc(image: np.ndarray) -> np.ndarray:
"""Apply jpg compression then ImageNet normalise."""
Copy link

Copilot AI Oct 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'normalise' to 'normalize' for consistency with American English spelling used elsewhere in the codebase.

Suggested change
"""Apply jpg compression then ImageNet normalise."""
"""Apply jpg compression then ImageNet normalize."""

Copilot uses AI. Check for mistakes.

@staticmethod
def preproc(image: np.ndarray) -> np.ndarray:
"""Apply jpg compression then ImageNet normalise."""
Copy link

Copilot AI Oct 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The preproc docstring lacks parameter and return type documentation. Consider adding a complete docstring with Args and Returns sections following the pattern used in other models like HoVerNet and MicroNet.

Suggested change
"""Apply jpg compression then ImageNet normalise."""
"""Apply JPEG compression and ImageNet normalization to the input image.
Args:
image (np.ndarray):
Input image as a NumPy array (H, W, C) in uint8 format.
Returns:
np.ndarray:
The preprocessed image as a float32 NumPy array, normalized using ImageNet mean and std.
"""

Copilot uses AI. Check for mistakes.
@Jiaqi-Lv Jiaqi-Lv marked this pull request as draft October 31, 2025 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants