Page tree

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 LaVue - Filter plugins settings


  • No labels