Filter plugins — LaVue 2.76.0 documentation

# 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.