-
Notifications
You must be signed in to change notification settings - Fork 0
/
focus.py
36 lines (27 loc) · 1.03 KB
/
focus.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
"""# *focus* session manual
## Usage
await main()
## Notes
"""
import asyncio
import logging
from inspect import iscoroutinefunction
import concert
concert.require("0.31")
from concert.devices.motors.dummy import LinearMotor
from concert.ext.viewers import PyplotImageViewer, PyplotViewer
from concert.processes.common import focus
from concert.tests.util.focus import BlurringCamera, FOCUS_POSITION
from concert.quantities import q
from concert.session.utils import ddoc, dstate, pdoc, code_of
LOG = logging.getLogger(__name__)
motor = await LinearMotor()
await motor.set_position(0 * q.mm)
await motor.set_motion_velocity(5 * q.mm / q.s)
camera = await BlurringCamera(motor)
viewer = await PyplotImageViewer(limits='auto', fast=False)
line = await PyplotViewer('-o')
async def main():
await focus(camera, motor, frame_callback=viewer.show, plot_callback=line.show,
opt_kwargs={'initial_step': 5 * q.mm, 'epsilon': 1e-2 * q.mm})
print(f'Motor position: {await motor.get_position()}, should be: {FOCUS_POSITION}')