Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.11.0 #324

Merged
merged 5 commits into from
Dec 25, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
options for not storing focus series but take a final image
  • Loading branch information
thusser committed Dec 25, 2023
commit bb4a7b86b4d4bd2c84bea3459b3768415394ed96
24 changes: 19 additions & 5 deletions pyobs/modules/focus/focusseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ def __init__(
filters: Optional[Union[str, IFilters]] = None,
filter_name: Optional[str] = None,
binning: Optional[int] = None,
broadcast: bool = False,
final_image: bool = True,
**kwargs: Any,
):
"""Initialize a new auto focus system.
Expand All @@ -51,6 +53,8 @@ def __init__(
self._offset = offset
self._abort = threading.Event()
self._running = False
self._broadcast = broadcast
self._final_image = final_image

# create focus series
self._series: FocusSeries = get_object(series, FocusSeries)
Expand Down Expand Up @@ -122,6 +126,8 @@ async def _auto_focus(self, count: int, step: float, exposure_time: float, **kwa

# do camera settings
await self._do_camera_settings(camera)
if isinstance(camera, IImageType):
await camera.set_image_type(ImageType.FOCUS)

# get filter wheel and current filter
filter_name = "unknown"
Expand Down Expand Up @@ -173,11 +179,7 @@ async def _auto_focus(self, count: int, step: float, exposure_time: float, **kwa
if self._abort.is_set():
raise exceptions.AbortedError()
try:
if isinstance(camera, IExposureTime):
await camera.set_exposure_time(exposure_time)
if isinstance(camera, IImageType):
await camera.set_image_type(ImageType.FOCUS)
filename = await camera.grab_data()
filename = await self._take_image(camera, exposure_time)
except exc.RemoteError:
log.error("Could not take image.")
continue
Expand Down Expand Up @@ -231,9 +233,21 @@ async def _auto_focus(self, count: int, step: float, exposure_time: float, **kwa
# send event
await self.comm.send_event(FocusFoundEvent(absolute, focus[1], filter_name))

# take final image?
if self._final_image:
await self._take_image(camera, exposure_time)

# return result
return focus[0], focus[1]

async def _take_image(self, camera, exposure_time):
if isinstance(camera, IExposureTime):
await camera.set_exposure_time(exposure_time)
if isinstance(camera, IData):
return await camera.grab_data(broadcast=self._broadcast)
else:
raise exc.GeneralError("Cannot grab data from camera.")

async def auto_focus_status(self, **kwargs: Any) -> Dict[str, Any]:
"""Returns current status of auto focus.

Expand Down