Filter pluginsΒΆ

A user Filter plugin can be defined by a class or a function in a python package.

A filter plugin defined by a function is a simple python function with four arguments: numpy_image, image_name, JSON_metadata, ImageWidget.

This function returns new_numpy_image or None or tuple (new_numpy_image, filtermetadata_dict) , e.g.

from scipy import ndimage

def rot45(image, imagename, metadata, imagewg):
    """ rotate image by 45 deg

    :param image: numpy array with an image
    :type image: :class:`numpy.ndarray`
    :param imagename: image name
    :type imagename: :obj:`str`
    :param metadata: JSON dictionary with metadata
    :type metadata: :obj:`str`
    :param imagewg: image wigdet
    :type imagewg: :class:`lavuelib.imageWidget.ImageWidget`
    :returns: numpy array with an image
    :rtype: :class:`numpy.ndarray` or `None`
    """
    return ndimage.rotate(image, 45)

A filter plugin defined by a class it should have defined __call__ method with four arguments: numpy_image, image_name, JSON_metadata, ImageWidget.

This __call__ function returns new_numpy_image or None or tuple (new_numpy_image, filtermetadata_dict) .

Moreover, the class constructor has one configuration string argument initialized by an initialization parameter, e.g.

import numpy as np
import json


class HGap(object):

""" Horizontal gap filter"""

def __init__(self, configuration=None):
    """ converts the configuration string into a list of indexes

    :param configuration: JSON list with horizontal gap pixels to add
    :type configuration: :obj:`str`
    """
    #: (:obj:`list` <:obj: `str`>) list of indexes for gap
    self.__indexes = [int(idx) for idx in json.loads(configuration)]

def __call__(self, image, imagename, metadata, imagewg):
    """ inserts rows into the image

    :param image: numpy array with an image
    :type image: :class:`numpy.ndarray`
    :param imagename: image name
    :type imagename: :obj:`str`
    :param metadata: JSON dictionary with metadata
    :type metadata: :obj:`str`
    :param imagewg: image wigdet
    :type imagewg: :class:`lavuelib.imageWidget.ImageWidget`
    :returns: numpy array with an image
    :rtype: :class:`numpy.ndarray` or `None`
    """
    return np.insert(image, self.__indexes, 0, axis=1)

Moreover, it can have an initialize() or terminate() method to perform an action of switching on or off filters respectively.

More sophisticated examples can be found at lavuefilters:

  • lavuefilters.memoplugins.HistoryDump contains a filter which collects distinct images displayed by lavue in memory

  • lavuefilters.h5pyplugins.H5PYdumpdiff contains a filter which dumps distict images displayed by lavue to an hdf5 file

  • lavuefilters.h5pyplugins.H5PYdump contains a filter which dumps images displayed by lavue to an hdf5 file

To configure filters see Filter plugins settings.