-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdetect_protrusions.py
64 lines (52 loc) · 1.8 KB
/
detect_protrusions.py
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#@ File (label = "Input file", style = "file") srcFile
#@ Integer (label = "Erosions", value = 3) erosions
#@ Integer (label = "Minimum protrusion size", value = 10) min_size
from ij import IJ
from ij.plugin import ImageCalculator
from ij.measure import ResultsTable
import os
from ij import WindowManager
''' setPasteMode("Subtract");
run("Set Slice...", "slice="+nSlices);
run("Select All");
for(i=1; i<nSlices; i++) {
run("Previous Slice [<]");
run("Copy");
run("Next Slice [>]");
run("Paste");
run("Previous Slice [<]");
}
'''
IJ.run("Bio-Formats Importer", "open=" + str(srcFile) + " color_mode=Default view=Hyperstack stack_order=XYCZT")
image = IJ.getImage()
proc = image.getStack()
image_orig = image.createImagePlus()
proc2 = proc.duplicate()
image_orig.setStack("copy", proc2)
image_orig.show()
directory = os.path.dirname(str(srcFile))
#directory = image.getFileInfo()
print(directory)
#IJ.run(image, "Duplicate...", "duplicate")
#image_orig = IJ.getImage()
#IJ.run(image, "Convert to Mask", "method=Default background=Default calculate black");
for i in range(erosions):
IJ.run(image, "Erode", "stack")
for i in range(erosions):
IJ.run(image, "Dilate", "stack")
calc = ImageCalculator()
print(image, image_orig)
result = calc.run("Subtract create stack", image_orig, image)
#IJ.run(result, "Invert", "stack")
result.show()
image.changes = False
image.close()
image_orig.close()
IJ.run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
IJ.run(result,"Analyze Particles...", "size="+str(min_size)+"-Infinity show=Masks display clear add stack")
#result.close()
rt = ResultsTable.getResultsTable()
print("saving to "+str(directory)+"/protrusions.csv")
rt.saveAs(str(directory)+"/protrusions.csv")
image = IJ.getImage()
#image.close()