Skip to content

Plugin configuration

The configuration of each plugin is provided as a yaml file in the config/smartscope/plugins/ directory. The configuration will depend widely upon the integration method (class or function).

The fastest way to build a plugin is by writing a function. In this case more information will be required in the configuration.

Plugins can also be provided as a class. In this case, more information can be built directly into the classe, which makes the configuration file shorter.

Here is a list of all the fields that can be used in a configuration.yaml file:

  • name: string (required)

    This is the name of the plugin. This will be used in the database entries to refer to a specific plugin. The name should not be changed after use as it may break the references and would require a database migration of all the entries.

  • importPaths: list

    If any paths need to be added to the PYTHONPATH to import the modules for the plugin. i.e. importPaths: ['/opt/smartscope/external_plugins/ptolemy/']

  • description: string

    This is used to provide a description of the plugin on the web interface for the users to see

  • reference: string

    Reference to the publication for the given algorithm. This is currently not rendered on the web interface but will be added soon.

  • kwargs: dict

    A list of default arguments to provide to the run function. Values can be set directly in the wrapper function but this provides an easy place to change defaults.

Specific to class-based plugin

  • pluginClass: string

If providing the plugin as a class, this value should be set.

Specific to function-based plugin

  • module: string

The module from where the function will be imported i.e. module: Smartscope.lib.Finders.AIFinder.wrapper

  • method: string

The function name i.e. find_holes

  • targetClass: list

The type of plugin that should be initialized. For algorithm that provide multiple outputs such as a Finder/Classifier combo, then 2 values can be provided.

  • Finder
  • Classifiers
  • Selector

Specific to Classifiers

  • classes: dict

    Description and colors scheme for all the possible classes in a classifier. Each possible class is a key that contains a dict of 3 entries:

    • classLabel: dict

      • name: string

        Name of the class that will be displayed on the web interface

      • value: int

        Usually 1 or -1 whether the class should be included or excluded from the selection pool.

      • color: str

        CSS color name or hex value for the display of the class on the web page.

Specific to Selectors

  • clusters: dict

    How to display the different clusters of values.

    • values: acsending|descending

      How to sort the clusters

    • colors:

      A list of CSS color name or hex value the display different clusters. ['blue', 'lightblue', 'CornflowerBlue', 'blueviolet', 'purple', 'white']

  • exclude: list

    A list of clusters to exclude by default from the target selection.

Examples

Finder and classifier combination

name: AI square finder
method: find_squares
module: Smartscope.lib.Finders.AIFinder.wrapper
kwargs: 
  device: '0'
  imgsz: 2048
  thresh: 0.2
  iou: 0.3
  weights: square_weights/model_new_weights_env.pth
targetClass:
  - Finder
  - Classifier
description: |
  Square finder using RCNN identification and classification.
classes:
  square:
    value: 1
    name: Good
    color: blue
  small:
    value: -1
    name: Small
    color: red
  fraction:
    value: -1
    name: Partial
    color: MediumAquaMarine        
  dry:
    value: -1
    name: Dry
    color: blueviolet
  cracked:
    value: -1
    name: Cracked
    color: purple
  contaminated:
    value: -1
    name: Contaminated
    color: CornflowerBlue

External plugin

name: Ptolemy hole finder
pluginClass: smartscope_plugin.plugin.PtolemyHoleFinder