/
Align_Sift_Multichannel.py
91 lines (69 loc) · 2.35 KB
/
Align_Sift_Multichannel.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from register_virtual_stack import Register_Virtual_Stack_MT
from register_virtual_stack import Transform_Virtual_Stack_MT
import os
from ij import IJ, ImagePlus, WindowManager
temp_dir =IJ.getDirectory("temp")
IJ.log(temp_dir)
imp = WindowManager.getCurrentImage()
cslice = imp.getFrame()
channel = imp.getChannel()
print(type(cslice))
IJ.log(str(cslice))
# source directory
source_dir = temp_dir + '/Source/'
# output directory
target_dir = temp_dir + '/Target/'
# transforms directory
transf_dir = temp_dir + '/Transforms/'
# reference image
reference_name = "Tiffs"+str(cslice).zfill(4)+".tif"
# shrinkage option (false)
use_shrinking_constraint = 0
if not os.path.exists(source_dir):
os.makedirs(source_dir)
if not os.path.exists(target_dir):
os.makedirs(target_dir)
if not os.path.exists(transf_dir):
os.makedirs(transf_dir)
lst = os.listdir(source_dir)
for f in lst:
os.remove(source_dir+'/'+f)
lst = os.listdir(transf_dir)
for f in lst:
os.remove(transf_dir+'/'+f)
lst = os.listdir(target_dir)
for f in lst:
os.remove(target_dir+'/'+f)
IJ.run("Duplicate...", "duplicate channels="+str(channel));
IJ.run("Image Sequence... ", "dir="+source_dir+" format=TIFF, name=Tiffs");
lst = os.listdir(source_dir)
for f in lst:
os.rename(source_dir+'/'+f, source_dir+'/'+f[0:-6])
p = Register_Virtual_Stack_MT.Param()
#p.registrationModelIndex=5
Register_Virtual_Stack_MT.exec(source_dir, target_dir, transf_dir,
reference_name, p, use_shrinking_constraint)
WindowManager.getCurrentImage().setTitle("Orig")
lst = os.listdir(source_dir)
for f in lst:
os.remove(source_dir+'/'+f)
IJ.log(imp.getTitle())
IJ.selectWindow(imp.getTitle())
nchannels = imp.getNChannels()
merge_string = ""
for i in range(1,nchannels+1):
IJ.selectWindow(imp.getTitle())
IJ.run("Duplicate...", "duplicate channels="+str(i));
IJ.run("Image Sequence... ", "dir="+source_dir+" format=TIFF, name=Tiffs");
lst = os.listdir(source_dir)
for f in lst:
os.rename(source_dir+'/'+f, source_dir+'/'+f[0:-6])
Transform_Virtual_Stack_MT.exec(source_dir, target_dir, transf_dir, True)
WindowManager.getCurrentImage().setTitle("Ch"+str(i))
IJ.run("Duplicate...", "title=CH"+str(i)+" duplicate");
lst = os.listdir(source_dir)
for f in lst:
os.remove(source_dir+'/'+f)
merge_string = merge_string+"c"+str(i)+"=CH"+str(i)+" "
IJ.log(merge_string)
IJ.run("Merge Channels...", merge_string+"create")