Skip to content

Commit 5f21b5e

Browse files
Merge pull request #3 from antoineruzette/ar_20250210
Add 20250210 material
2 parents 699c84a + 2a336b0 commit 5f21b5e

21 files changed

+297
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Introduction to image analysis
2+
====================================
3+
4+
.. raw:: html
5+
6+
<iframe src="_static/01_intro_digital_image_analysis.pdf" width="100%" height="600px"></iframe>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Introduction to QuPath
2+
====================================
3+
4+
5+
.. raw:: html
6+
7+
<iframe src="_static/02_intro_qupath.pdf" width="100%" height="600px"></iframe>
8+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
QuPath projects and user-interface
2+
==================================
3+
4+
.. raw:: html
5+
6+
<iframe src="_static/03_qupath_projects_and_GUI.pdf" width="100%" height="600px"></iframe>
7+
8+
9+
**Practice**
10+
------------
11+
12+
1. QuPath projects and GUI
13+
14+
a. Change LUT colors of the channels (Brightness & Contrast tab)
15+
16+
1. DAPI = blue, FITC = green, TRITC = red, CY5 = yellow
17+
18+
b. LUT, Brightness & Contrast and pixel values
19+
20+
1. Select one of the channels for display
21+
2. Zoom into the image to inspect the value of a single pixel, and note its value
22+
3. Adjust the Brightness & Contrast, and the LUT range (min/max)
23+
24+
- How did the pixel value change?
25+
26+
4. Change the LUT to grayscale or any other color
27+
28+
- How did the pixel value change?
29+
30+
c. Multi-viewer
31+
32+
1. Use the command list (Command/CTRL + L) to find the command to add a second display window to the default window
33+
2. Display one channel in each viewer window
34+
3. Zoom in and out, then export snapshots (make sure to include a scale bar)
35+
36+
2. QuPath manual annotations
37+
38+
a. Recreate the annotations seen in slides
39+
40+
1. Recommended: use the paint brush tool
41+
2. Lock your annotations
42+
43+
b. Create an annotation to circle a region of interest (ROI)
44+
45+
1. Circle a region of high signal intensity in the fibronectin channel
46+
2. Lock your annotation
47+
3. Optional: rename it
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
Cell detection and measurements
2+
===============================
3+
4+
.. raw:: html
5+
6+
<iframe src="_static/04_cell_detection_and_measurements.pdf" width="100%" height="600px"></iframe>
7+
8+
9+
**Practice**
10+
------------
11+
12+
3. QuPath cell detection
13+
14+
a. Threshold-based cell detection
15+
16+
1. Within the ROI created in 2, detect nuclei in the DAPI channel using QuPath’s built-in cell detection method
17+
18+
- Use default parameters: how many nuclei are detected?
19+
- Change sigma used for the Gaussian method: how does the number of detected nuclei change?
20+
- Change the intensity threshold: how does the number of detected nuclei change?
21+
- Change the cell expansion (in microns): do you notice a difference in cell size?
22+
23+
24+
Tip 1: Re-running cell detection will overwrite existing detections.
25+
26+
Tip 2: Start with default, make small changes then larger changes until obtaining a satisfying segmentation.
27+
28+
b. Machine learning-based cell detection
29+
30+
1. Within the ROI created in 2, detect nuclei in the DAPI channel using StarDist’s extension in QuPath
31+
32+
- Use default parameters: how many nuclei are detected?
33+
- Change detection probability: how many nuclei are detected?
34+
- Compare segmentation results between threshold-based and ML-based cell detection (one way to do this is to run threshold-based nuclei detection in another ROI).
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
Cell classification
2+
===================
3+
4+
.. raw:: html
5+
6+
<iframe src="_static/05_cell_classification.pdf" width="100%" height="600px"></iframe>
7+
8+
9+
**Practice**
10+
------------
11+
12+
4. QuPath cell classification
13+
14+
a. Single-measurement classifier
15+
16+
1. Create a class for Ki67 positive cells: Ki67+
17+
2. Create a single measurement classifier on Nucleus: CY5 mean
18+
3. Start with a threshold of 1000
19+
20+
- How many cells are classified as Ki67+?
21+
22+
4. Fine-tune parameters to improve your classification
23+
24+
- How many cells are classified as Ki67+?
25+
26+
5. Do the same for the FITC channel (Keratin).
27+
28+
b. Composite classifiers
29+
30+
1. Combine the two single-measurement classifiers into a composite classifier.
31+
2. Populate classes from objects
32+
33+
- Which classes do you now observe?
34+
- How did the number of Ki67+ cells change?
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Tissue annotation and spatial measurements
2+
==========================================
3+
4+
.. raw:: html
5+
6+
<iframe src="_static/06_tissue_annotation_and_spatial.pdf" width="100%" height="600px"></iframe>
7+
8+
9+
**Practice**
10+
------------
11+
12+
5. Automating tissue annotation
13+
14+
a. Pixel-based classification
15+
16+
1. Create a pixel classifier on the TRITC channel and apply it with default parameters.
17+
18+
- What is the area of the annotated region?
19+
20+
2. Adapt the parameters of the pixel classifier to yield coherent regions.
21+
22+
- How does the area of the annotated region change with smoothing sigma?
23+
- How does the area of the annotated region change with intensity threshold?
24+
25+
b. Machine learning pixel classifier
26+
27+
1. Based on what you have learned by creating a machine learning classifier for cell objects, create training annotations for whole regions (akin to tissues) using the paint brush.
28+
29+
2. Train a pixel classifier on these training data to identify regions of high signal intensity in the TRITC channel.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Scripting, workflows and batch processing
2+
================================================
3+
4+
.. raw:: html
5+
6+
<iframe src="_static/07_scripting_workflow_and_batch_processing.pdf" width="100%" height="600px"></iframe>
7+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Feedback
2+
==========
3+
4+
Every course is shaped by the ones before it.
5+
We ask you to pay it forward by telling us frankly what did and didn't work this time---it will help the next students.
6+
7+
Please take a few minutes to fill out the `feedback form <https://tinyurl.com/iac-qupath-20250210-feeback>`__.
8+
9+
Thank you!
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Minimal makefile for Sphinx documentation
2+
3+
# You can set these variables from the command line, and also
4+
# from the environment for the first two.
5+
# SPHINXOPTS ?=
6+
SPHINXBUILD ?= sphinx-build
7+
SOURCEDIR = .
8+
BUILDDIR = ../../../build/versions/$(shell basename `pwd`)
9+
CONFDIR = ../..
10+
11+
# Include the -c option to specify the conf.py directory
12+
SPHINXOPTS += -c $(CONFDIR)
13+
14+
# Put it first so that "make" without argument is like "make help".
15+
help:
16+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
17+
18+
.PHONY: help Makefile
19+
20+
# Catch-all target: route all unknown targets to Sphinx using the new
21+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
22+
%: Makefile
23+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
1.93 MB
Binary file not shown.

0 commit comments

Comments
 (0)