Transformation PluginsΒΆ
Data transformation plugins provide functionality to transform input data from one scale/space to another. The most basic example is a logarithmic transform which converts linear data to a logarithmic scale. The registration method for these plugins looks like the following:
def transform_register():
return (transformMethod, MethodTransformScaleClass)
The transformMethod
reference performs the actual transformation of
user data. The MethodTransformScaleClass
is an instance of the
ScaleBase
class found in the matplotlib.scale
module. It
is not required, so the register method can simply place None
in the
second slot of the tuple. However, if you wish to provide a plugin
that is also automatically applicable to graphs/plots, then you will
need to provide a subclass of ScaleBase
. An
example
of creating your own scale for plots is available at the matplotlib website.
If you provide this class, FIND will automatically register your scale with
the matplotlib engine, and it will be available to specify for any matplotlib
plot that accepts scale requests.
The transformMethod
method signature and doc string should look like
the following:
def transformMethod(data, **kwargs):
"""
string-ID; transformMethod name; Method description string
"""
...
...
return transformed_data
The data
parameter is (as with other plugins) an m x n
array
(numpy ndarray
) with m
data points (events), and n
dimensions
(channels). The **kwargs
parameter is a dictionary containing options
for use by the transform method. For example, FIND’s built-in log transform
accepts base
and min_clip
parameters indicating, respectively, the
base of the log transform (2, 10, e
) and the lower end the data should
be clipped to when negative values are encountered (default: 10e-5).
Finally, as mentioned in the section on Graphing Plugins, the internal
transforms package provides within its methods
module, the means
for any FIND code to use registered transforms. Specifically, the module
provides a getMethod(strID)
method that returns the method
specified by the string identifier of the transformation method/plugin.
So to apply a log transform to your data with the built-in log method
you might use the following lines:
import transforms.methods as tm
logData = tm.getMethod('log')(data, base=10, min_clip=10e-8)