openflexure-microscope-server/openflexure_microscope/plugins/default/scan/api.py
2019-04-09 14:57:28 +01:00

53 lines
1.9 KiB
Python

from openflexure_microscope.api.v1.views import MicroscopeViewPlugin
from openflexure_microscope.api.utilities import JsonPayload
from flask import request, jsonify, abort
class TileScanAPI(MicroscopeViewPlugin):
def post(self):
payload = JsonPayload(request)
# Get params
filename = payload.param('filename')
temporary = payload.param('temporary', default=False, convert=bool)
step_size = payload.param('step_size', default=[2000, 1500, 100], convert=list)
step_size = [int(i) for i in step_size]
grid = payload.param('grid', default=[3, 3, 5], convert=list)
grid = [int(i) for i in grid]
style = payload.param('style', default='raster', convert=str)
autofocus_dz = payload.param('autofocus_dz', default=50, convert=int)
use_video_port = payload.param('use_video_port', default=True, convert=bool)
resize = payload.param('size', default=None)
if resize:
if ('width' in resize) and ('height' in resize):
resize = (int(resize['width']), int(resize['height'])) # Convert dict to tuple
else:
abort(404)
bayer = payload.param('bayer', default=False, convert=bool)
metadata = payload.param('metadata', default={}, convert=dict)
tags = payload.param('tags', default=[], convert=list)
print("Running tile scan...")
task = self.microscope.task.start(
self.plugin.tile,
basename=filename,
temporary=temporary,
step_size=step_size,
grid=grid,
style=style,
autofocus_dz=autofocus_dz,
use_video_port=use_video_port,
resize=resize,
bayer=bayer,
metadata=metadata,
tags=tags
)
# return a handle on the autofocus task
return jsonify(task.state), 202