Tilt homing
This commit is contained in:
17
script/imaging/FOV_table.py
Normal file
17
script/imaging/FOV_table.py
Normal file
@@ -0,0 +1,17 @@
|
||||
FOV_ARROWS = { \
|
||||
"120um[0.0]": [84.0], \
|
||||
"100um[0.0]": [82.0], \
|
||||
"75um[0.0]": [77.0], \
|
||||
"50um[0.0]": [72.0], \
|
||||
"40um[0.0]": [66.0], \
|
||||
"30um[0.0]": [61.0], \
|
||||
"25um[0.0]": [50.0], \
|
||||
"20um[0.0]": [45.0], \
|
||||
"15um[0.0]": [32.0], \
|
||||
"10um[0.0]": [5.0], \
|
||||
"7.5um[0.0]": [15.0], \
|
||||
"5m[0.0]": [10.0], \
|
||||
"2.5m[0.0]": [5.0], \
|
||||
"1.25m[0.0]": [0.0], \
|
||||
"new_entry": [0.0] \
|
||||
}
|
||||
103
script/imaging/fov_arrows.py
Normal file
103
script/imaging/fov_arrows.py
Normal file
@@ -0,0 +1,103 @@
|
||||
arrows_renderer = arrow_x = arrow_y = arrow_a = label_x = label_y = arrow_y =None
|
||||
"""
|
||||
FOV_ARROWS = { \
|
||||
"100um[0.0]": [10.0], \
|
||||
"50um[0.0]": [20.0], \
|
||||
"new_entry": [0.0]
|
||||
}
|
||||
"""
|
||||
run("imaging/FOV_table")
|
||||
|
||||
FOV_ARROWS_SIZE=80
|
||||
FOV_LABEL_POS=FOV_ARROWS_SIZE+15
|
||||
#FOV_ARROWS_ORIGIN=Point(image.getData().width/4, image.getData().height*3/4)
|
||||
#FOV_ARROWS_ORIGIN=Point(image.getData().width*3/4, image.getData().height/4)
|
||||
FOV_ARROWS_ORIGIN=Point(image.getData().width-(FOV_LABEL_POS+5), FOV_LABEL_POS+5)
|
||||
FOV_FUTURE=None
|
||||
FOV_FUTURE=None
|
||||
FOV_LABEL_FONT=java.awt.Font("Verdana", java.awt.Font.PLAIN, 12)
|
||||
FOV_OFFSET=0.0
|
||||
FOV_COLOR_X = Color.GREEN
|
||||
FOV_COLOR_Y = Color(173,216,230) # Light Blue
|
||||
FOV_COLOR_A = Color.YELLOW
|
||||
|
||||
|
||||
AZIMUTH_ROT=0.0
|
||||
def get_azimuth():
|
||||
return AZIMUTH_ROT
|
||||
|
||||
def set_fov_offset(value):
|
||||
global FOV_OFFSET
|
||||
FOV_OFFSET = value
|
||||
update_arrows()
|
||||
|
||||
def update_arrows():
|
||||
global arrows_renderer, arrow_x, arrow_y, arrow_a, label_x, label_y
|
||||
if arrows_renderer is not None:
|
||||
args = FOV_ARROWS.get(fov.take(), None)
|
||||
if args is not None:
|
||||
azimuth=get_azimuth()
|
||||
angle=args[0] + FOV_OFFSET
|
||||
angle=angle+180
|
||||
x,y = FOV_ARROWS_ORIGIN.x, FOV_ARROWS_ORIGIN.y
|
||||
a=math.radians(angle)
|
||||
xa,ya=int(x+FOV_ARROWS_SIZE*math.cos(a)), int(y-FOV_ARROWS_SIZE*math.sin(a))
|
||||
arrow_a.update(FOV_ARROWS_ORIGIN, Point(xa,ya))
|
||||
angle=angle+azimuth
|
||||
a=math.radians(angle)
|
||||
xa,ya=int(x+FOV_ARROWS_SIZE*math.cos(a)), int(y-FOV_ARROWS_SIZE*math.sin(a))
|
||||
arrow_x.update(FOV_ARROWS_ORIGIN, Point(xa,ya))
|
||||
xa,ya=int(x+FOV_LABEL_POS*math.cos(a)), int(y-FOV_LABEL_POS*math.sin(a))
|
||||
label_x.update(Point(xa,ya))
|
||||
angle=angle-90
|
||||
a=math.radians(angle)
|
||||
xa,ya=int(x+FOV_ARROWS_SIZE*math.cos(a)), int(y-FOV_ARROWS_SIZE*math.sin(a))
|
||||
arrow_y.update(FOV_ARROWS_ORIGIN, Point(xa,ya))
|
||||
xa,ya=int(x+FOV_LABEL_POS*math.cos(a)), int(y-FOV_LABEL_POS*math.sin(a))
|
||||
label_y.update(Point(xa,ya))
|
||||
else:
|
||||
log("Cannot draw reference arrows - Invalid microscope preset label: " + fov, False)
|
||||
arrow_x.update(FOV_ARROWS_ORIGIN, FOV_ARROWS_ORIGIN)
|
||||
arrow_y.update(FOV_ARROWS_ORIGIN, FOV_ARROWS_ORIGIN)
|
||||
arrow_a.update(FOV_ARROWS_ORIGIN, FOV_ARROWS_ORIGIN)
|
||||
label_x.update(label_x.UNDEFINED_POINT)
|
||||
label_y.update(label_y.UNDEFINED_POINT)
|
||||
|
||||
def task_update_arrows():
|
||||
global arrows_renderer
|
||||
while arrows_renderer is not None:
|
||||
try:
|
||||
if arrows_renderer.isShowing():
|
||||
update_arrows()
|
||||
time.sleep(5.0)
|
||||
time.sleep(1.0)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def start_arrows(renderer=None):
|
||||
global arrows_renderer, arrow_x, arrow_y, arrow_a, label_x, label_y, FOV_FUTURE
|
||||
if arrows_renderer is None:
|
||||
arrows_renderer = renderer if renderer else show_panel(image)
|
||||
arrow_x = Overlays.Arrow(Pen(FOV_COLOR_X))
|
||||
arrow_y = Overlays.Arrow(Pen(FOV_COLOR_Y))
|
||||
arrow_a = Overlays.Arrow(Pen(FOV_COLOR_A))
|
||||
label_x = Overlays.Text(arrow_x.pen, "X",FOV_LABEL_FONT)
|
||||
label_y = Overlays.Text(arrow_y.pen, "Y",FOV_LABEL_FONT)
|
||||
arrows_renderer.addOverlays([arrow_a, arrow_x,arrow_y,label_x, label_y])
|
||||
#update_arrows()
|
||||
FOV_FUTURE = fork(task_update_arrows,)[0]
|
||||
|
||||
|
||||
def stop_arrows(renderer=None):
|
||||
global arrows_renderer, arrow_x, arrow_y, label_x, label_y, FOV_FUTURE
|
||||
if arrows_renderer is not None:
|
||||
arrows_renderer.removeOverlays([arrow_a, arrow_x,arrow_y, label_x, label_y])
|
||||
arrows_renderer=None
|
||||
if FOV_FUTURE is not None:
|
||||
FOV_FUTURE.cancel(True)
|
||||
try:
|
||||
join(FOV_FUTURE)
|
||||
except:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user