Renamed LabThing plugins to extensions

This commit is contained in:
jtc42 2020-01-05 18:56:46 +00:00
parent d96e188d16
commit 2a245185a6
10 changed files with 89 additions and 89 deletions

View file

@ -11,16 +11,16 @@ from datetime import datetime
from flask_cors import CORS
from openflexure_microscope.api.utilities import list_routes, init_default_plugins
from openflexure_microscope.api.utilities import list_routes, init_default_extensions
from openflexure_microscope.config import (
settings_file_path,
JSONEncoder,
USER_PLUGINS_PATH,
USER_EXTENSIONS_PATH,
)
from openflexure_microscope.common.flask_labthings.labthing import LabThing
from openflexure_microscope.common.flask_labthings.plugins import find_plugins
from openflexure_microscope.common.flask_labthings.extensions import find_extensions
from openflexure_microscope.api.microscope import default_microscope as api_microscope
@ -73,11 +73,11 @@ labthing.title = f"OpenFlexure Microscope {api_microscope.name}"
# Attach lab devices
labthing.register_device(api_microscope, "openflexure_microscope")
# Attach plugins
if not os.path.isfile(USER_PLUGINS_PATH):
init_default_plugins(USER_PLUGINS_PATH)
for plugin in find_plugins(USER_PLUGINS_PATH):
labthing.register_plugin(plugin)
# Attach extensions
if not os.path.isfile(USER_EXTENSIONS_PATH):
init_default_extensions(USER_EXTENSIONS_PATH)
for extension in find_extensions(USER_EXTENSIONS_PATH):
labthing.register_extension(extension)
# Attach captures resources
labthing.add_resource(views.CaptureList, f"/captures")

View file

@ -1,5 +1,5 @@
from openflexure_microscope.common.flask_labthings.find import find_device
from openflexure_microscope.common.flask_labthings.plugins import BasePlugin
from openflexure_microscope.common.flask_labthings.extensions import BaseExtension
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.devel import JsonResponse, request, jsonify, taskify, abort
@ -139,7 +139,7 @@ def sharpness_edge(image):
)
### Autofocus plugin
### Autofocus extension
def measure_sharpness(microscope, metric_fn=sharpness_sum_lap2):
@ -353,15 +353,15 @@ class FastAutofocusAPI(Resource):
abort(503, "No stage connected. Unable to autofocus.")
autofocus_plugin_v2 = BasePlugin("autofocus")
autofocus_extension_v2 = BaseExtension("autofocus")
autofocus_plugin_v2.add_method(fast_autofocus, "fast_autofocus")
autofocus_plugin_v2.add_method(autofocus, "autofocus")
autofocus_extension_v2.add_method(fast_autofocus, "fast_autofocus")
autofocus_extension_v2.add_method(autofocus, "autofocus")
autofocus_plugin_v2.add_view(MeasureSharpnessAPI, "/measure_sharpness")
autofocus_extension_v2.add_view(MeasureSharpnessAPI, "/measure_sharpness")
autofocus_plugin_v2.add_view(AutofocusAPI, "/autofocus")
autofocus_plugin_v2.register_action(AutofocusAPI)
autofocus_extension_v2.add_view(AutofocusAPI, "/autofocus")
autofocus_extension_v2.register_action(AutofocusAPI)
autofocus_plugin_v2.add_view(FastAutofocusAPI, "/fast_autofocus")
autofocus_plugin_v2.register_action(FastAutofocusAPI)
autofocus_extension_v2.add_view(FastAutofocusAPI, "/fast_autofocus")
autofocus_extension_v2.register_action(FastAutofocusAPI)

View file

@ -6,8 +6,8 @@ from typing import Tuple
from functools import reduce
from openflexure_microscope.camera.base import generate_basename
from openflexure_microscope.common.flask_labthings.find import find_device, find_plugin
from openflexure_microscope.common.flask_labthings.plugins import BasePlugin
from openflexure_microscope.common.flask_labthings.find import find_device, find_extension
from openflexure_microscope.common.flask_labthings.extensions import BaseExtension
from openflexure_microscope.devel import (
JsonResponse,
@ -169,10 +169,10 @@ def tile(
)
# Check if autofocus is enabled
autofocus_plugin = find_plugin("autofocus")
autofocus_extension = find_extension("autofocus")
if (
autofocus_dz
and autofocus_plugin
and autofocus_extension
and microscope.has_real_stage()
and microscope.has_real_camera()
):
@ -211,7 +211,7 @@ def tile(
# Refocus
if autofocus_enabled:
if fast_autofocus:
autofocus_plugin.fast_autofocus(
autofocus_extension.fast_autofocus(
dz=autofocus_dz,
target_z=-z_stack_dz / 2.0, # Finish below the focus
initial_move_up=False, # We're already at the top of the scan
@ -219,7 +219,7 @@ def tile(
# TODO: save the focus data for future reference? Use it for diagnostics?
else:
logging.debug("Running autofocus")
autofocus_plugin.autofocus(
autofocus_extension.autofocus(
range(-3 * autofocus_dz, 4 * autofocus_dz, autofocus_dz)
)
logging.debug("Finished autofocus")
@ -398,7 +398,7 @@ class TileScanAPI(Resource):
return jsonify(task.state), 201
scan_plugin_v2 = BasePlugin("scan")
scan_extension_v2 = BaseExtension("scan")
scan_plugin_v2.add_view(TileScanAPI, "/tile")
scan_plugin_v2.register_action(TileScanAPI)
scan_extension_v2.add_view(TileScanAPI, "/tile")
scan_extension_v2.register_action(TileScanAPI)

View file

@ -108,22 +108,22 @@ def create_file(config_path):
raise
def init_default_plugins(plugin_path):
global _DEFAULT_PLUGIN_INIT
os.makedirs(os.path.dirname(plugin_path), exist_ok=True)
def init_default_extensions(extension_path):
global _DEFAULT_extension_INIT
os.makedirs(os.path.dirname(extension_path), exist_ok=True)
if not os.path.exists(plugin_path): # If user plugins file doesn't exist
logging.warning("No plugin file found at {}. Creating...".format(plugin_path))
create_file(plugin_path)
if not os.path.exists(extension_path): # If user extensions file doesn't exist
logging.warning("No extension file found at {}. Creating...".format(extension_path))
create_file(extension_path)
logging.info("Populating {}...".format(plugin_path))
with open(plugin_path, "w") as outfile:
outfile.write(_DEFAULT_PLUGIN_INIT)
logging.info("Populating {}...".format(extension_path))
with open(extension_path, "w") as outfile:
outfile.write(_DEFAULT_extension_INIT)
_DEFAULT_PLUGIN_INIT = """
from openflexure_microscope.api.default_plugins.autofocus import autofocus_plugin_v2
from openflexure_microscope.api.default_plugins.scan import scan_plugin_v2
_DEFAULT_extension_INIT = """
from openflexure_microscope.api.default_extensions.autofocus import autofocus_extension_v2
from openflexure_microscope.api.default_extensions.scan import scan_extension_v2
__plugins__ = [autofocus_plugin_v2, scan_plugin_v2]
__extensions__ = [autofocus_extension_v2, scan_extension_v2]
"""