-
Notifications
You must be signed in to change notification settings - Fork 0
/
export_specific_1_class_annotations_as_roi.groovy
50 lines (40 loc) · 1.92 KB
/
export_specific_1_class_annotations_as_roi.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
* source : https://forum.image.sc/t/export-qupath-annotations-for-stardist-training/37391/3
* source : https://qupath.readthedocs.io/en/stable/docs/advanced/exporting_annotations.html#imagej-rois
* source : https://groups.google.com/g/qupath-users/c/EOdNLyP7ixc
* source : https://petebankhead.github.io/qupath/2019/08/21/scripting-in-v020.html
*/
/*
* This is to import annotations as ROI directly into the project :
* - without any image name
* - all annotations
*/
import ij.plugin.frame.RoiManager
// get the name of the current image
def image_name = getProjectEntry().getImageName()
print(image_name + " treatment start") // adding some log info in order to know what's done during the process
// get specific classified annotations
def class_name_1 = getPathClass('glom')
def annotations = getAnnotationObjects()
def class_1_annotations = annotations.findAll {it.getPathClass() == class_name_1}
// define a specific folder to save the ROIs with the class name
def pathInput = buildFilePath(PROJECT_BASE_DIR) // for getting the QuPath project folder
def pathModel = pathInput + "/ROIs/" + image_name + "_" + class_name_1 + ".zip" // create the rest of the path : folder_name / image_name.zip
// roi manager creation for exporting annotations into
def roiMan = new RoiManager(false)
double x = 0
double y = 0
double downsample = 1 // Increase if you want to export to work at a lower resolution
// exporting annotations
// I need to put an if condition in case there's no annotations in the image
if (class_1_annotations.size() >0) {
class_1_annotations.each {
def roi = IJTools.convertToIJRoi(it.getROI(), x, y, downsample)
roiMan.addRoi(roi)
}
roiMan.runCommand("Save", pathModel)
print(class_1_annotations.size() + " " + class_name_1 + " annotations saved") // adding some log info in order to know what's done during the process
}
else {
print("No " + class_name_1 + " annotations")
}