QuPath Atölye Extension
The Turkish QuPath workshop’s teaching modules packaged as a one-click Extensions → Atölye menu — 85 Groovy scripts spanning IHC scoring, mitosis detection, stain QC, foundation models and anonymisation, with a live Zenodo DOI and a licence file that is not the Apache text it claims.
Purpose
Packages the modules of the Turkish-language QuPath workshop (QuPath Atölye, site at atolye.patoloji.dev) as installable menu entries, so participants get the scripts as buttons rather than as files to copy into a script editor. The repository description frames it as “Patologlar için QuPath workshop’unun … scriptleri” — for pathologists rather than for developers, which is the design constraint that explains the wizard-heavy style.
Public, unlike the workshop repository it was extracted from.
Data used
None. It ships scripts, a settings dialog, and one bundled trained model — classifiers/tumor-stroma-RF.json.gz, a random-forest tumour/stroma classifier packaged inside the JAR so the tumour–stroma module works without a separate download.
Methods
Four Java classes (WorkshopExtension, WorkshopPrefs, WorkshopResources, WorkshopSettingsDialog) plus 85 Groovy scripts as resources, 92 source files in total, built for QuPath 0.6+. Scripts are named in Turkish; yardimci- prefixes the helper modules. All counts re-verified 2026-07-30.
What the 85 modules actually cover
Grouped by what they bear on, because the breadth is the finding:
| Family | Modules | Bears on |
|---|---|---|
| Mitosis | eight detectors — PHH3, FCOS, RetinaNet, KongNet, EfficientNet-atypical, Sanofi-atypical, tiatoolbox — plus yardimci-mitoz-karsilastir to compare them |
Mitotic Count |
| IHC scoring | ER/PR H-score, intratumoural Ki-67, Ki-67 heterogeneity, membrane / nuclear / cytoplasmic stain, area positivity, immune density | Ki-67 Proliferation Index, Biomarker Cut Points, Intratumoral Heterogeneity |
| Stain handling | stain-vector wizard, stain-quality QC, cohort-wide stain QC, integrated OD | Stain Normalisation, Scanner and Stain Variability |
| QC | GrandQC wizard, annotation QC, tissue detection, image-imprint (künye) reader, calibration |
WSI Quality Control |
| Segmentation back-ends | StarDist, Cellpose, InstanSeg, SPIDER, Kaiko, generic foundation-model wizard | Foundation Models in Pathology |
| Spatial statistics | Delaunay neighbourhood, nearest-neighbour and cross-NN distance, centre-vs-periphery, peritumoural band, convex hull, structure distance, density map | — |
| Established scores | stromal TILs, tumour budding, hotspot ordering | Nottingham Grading |
| Data movement | tile export, OME-Zarr export, Sectra import, mask import, prediction import, cluster-label import, TMA core transfer, run manifest | QuPath Annotation Workflow |
| Governance | WSI anonymisation wizard, ICC auditor wizard, F1 validation | De-identification, Interobserver Agreement |
Two modules connect directly to other projects here: yardimci-hepatosit-sihirbaz drives hepatocyte-app, and yardimci-sectra-iceaktar is the Sectra import path already indexed on QuPath Tooling.
The anonymisation wizard, which is exemplary and should be read as such
yardimci-anonim-sihirbaz.groovy writes anonymised copies of project slides into a new folder — sequential or UUID names — and optionally shells out to embedded Python (tifffile) to redact PHI keys inside the SVS/TIFF ImageDescription. Its header is the most careful piece of governance writing in the estate, and three things in it matter:
- It states its own ceiling under a heading titled “KAPSAM / SINIRLAR (dürüst)” — scope and limits, honest. Copy-plus-rename is Level I (filename). Metadata redaction covers
ImageDescriptiononly and explicitly does not remove the label or macro image, pointing the reader at wsi-anon, tifftools and ImageDePHI for a full clean. It cites Bisson 2023’s five-level anonymisation framework. - It names the mapping key as PHI. “The generated CSV/JSON key contains original identifiers → it is personal data. Keep it somewhere secure and access-restricted; NEVER share it with the anonymised slides.” That is exactly the rule broken in PembeBobrek — so the knowledge is documented and taught inside the group’s own material, and the lapse there was operational rather than conceptual.
- It never modifies originals in place, which is the direct contrast with ScanTools’s destructive in-place
deidentifyand with the fail-open anonymisation on Pathology Atlas Pipeline.
One consequence worth extracting, because it settles a standing question elsewhere. The redaction list is filename, title, patient, patientname, name, case, barcode, id, slideid, date, time, scanscope id, user, label. MPP and AppMag are not on it, so pixel size and magnification survive — but date and time do not. So this tool preserves exactly the calibration metadata Mitotic Count needs and destroys exactly the scan-date metadata ScanTools exists to extract. The extract-before-redact ordering that De-identification could previously only hypothesise is now demonstrable on a local tool.
The wizard’s menu entry is marked as arriving in a later session, so it ships in the JAR but is not yet wired into the menu.
Current state / open questions
Unchanged since the last review. HEAD is still ac0784f (2026-07-19, “Modify FUNDING.yml”), 159 commits, verified 2026-07-30 against a full-depth clone. Everything recorded on 2026-07-26 therefore still describes the current tree byte for byte — the substance above was re-verified, not carried forward on trust.
Thirteen tags, read from the clone rather than from a rendered page:
v0.1.0 (2026-05-25) · v0.1.1-alpha2 · v0.2.0-alpha3 · v0.2.0-alpha4 · v0.2.0-alpha5 · v0.2.0 (2026-06-05) · v0.2.0-alpha1 · v0.2.0-alpha2 · v0.2.1 (2026-06-16) · v0.2.2-rc1 · v0.2.2-rc2 · v0.2.2-rc3 · v0.2.2-rc4 (2026-06-27)
CITATION.cff declares 0.2.2-rc4 and Zenodo DOI 10.5281/zenodo.20375397. catalog.json offers rc4 first. This is a functioning release pipeline, not an aspiration.
Two things follow. The newest published version is still a release candidate, so anyone installing from the catalog gets an rc — unchanged from a month ago. And four commits of work now sit after the newest tag: the July additions of mitotic classification support, TIA Toolbox workflow scripts, and automated workflow helpers are in main and in no release.
A methodological note worth keeping. A rendered fetch of the GitHub project page reported “Latest release v0.1.0, total releases 1” and a licence of “Apache 2.0 — matches QuPath itself”. Both are README prose, not repository metadata; the tags say thirteen and the GitHub API says NOASSERTION. Rendered-page summaries are not a primary source for release or licence state — read the tags.
The licence file is the same defective template as the hepatocyte extension
CITATION.cff declares Apache-2.0 and the README badge agrees, but the GitHub API reports license: NOASSERTION, exactly as it does for QuPath Hepatocyte Extension. The two LICENSE files are byte-identical, md5 f4ce3d08f26e7b19c13bdd5c5d849052 — re-confirmed unchanged on 2026-07-30. It is a defective template propagated to two repositories, so the fix is to replace the template and re-check rather than to patch one file. The intent is not in doubt, the instrument is defective, and which text governs is a question to route rather than settle here.
Open questions:
- Will
v0.2.2be cut as a stable release so the catalog stops offering a release candidate? Now with four commits of unreleased work behind it, including the mitosis classification support, so the cut would ship something rather than just relabel. - Where did the licence template come from? Narrowed, not answered: it arrived complete in the extension’s initial commit (
23db4b6, 2026-05-16, “extract … to standalone repo”), and the workshop repository it was extracted from has no top-levelLICENSEat all. So the template came from somewhere else again — a scaffold or starter repo — and that source is still unidentified. - Are the eight mitosis detectors benchmarked against one another anywhere? Still no result recorded in this repository. Sharpened, though: QuPath Atölye does carry tiatoolbox mitosis output JSON for two pseudonymised slides, so raw output exists for one detector. That is a start on the comparison rather than the comparison — and
yardimci-mitoz-karsilastirexists to do the rest. It would be a genuine contribution and it is most of the way built.
Related: QuPath Atölye — the course this packages; the scripts here are the modules there.
Related: QuPath Hepatocyte Extension — same defective licence file, byte for byte, and the one whose release was never cut.
Related: QuPath Patoloji Atlası Extension — the third QuPath extension, and the one whose licence and release engineering are clean; use it as the template.
Related: De-identification — the anonymisation wizard here is the most careful statement of scope the group has written, and it answers part of that page’s standing metadata question.
Related: Mitotic Count — eight detector modules plus a comparison script answer that page’s open question about whether automated mitosis detection is in scope anywhere.
Derived from: full-depth clone read 2026-07-30 at commit ac0784f (2026-07-19), the same commit reviewed on 2026-07-26 — the D:/ working tree was unreachable on this machine, so the repository was cloned to scratch. Re-verified this session: git log/rev-list/tag for history and releases, git ls-files for the script and class counts, CITATION.cff, catalog.json, LICENSE md5 against the hepatocyte extension’s, and git log --diff-filter=A -- LICENSE for the template’s first appearance. The 2026-07-26 reading of yardimci-anonim-sihirbaz.groovy and yardimci-goruntu-kunye.groovy in full stands unaltered because the tree has not moved.