Commit 2a245185 authored by jtc42's avatar jtc42
Browse files

Renamed LabThing plugins to extensions

parent d96e188d
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -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")
+10 −10
Original line number Diff line number Diff line
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)
+9 −9
Original line number Diff line number Diff line
@@ -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)
+13 −13
Original line number Diff line number Diff line
@@ -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]
"""
Loading