Function Plugins
What Function Plugins Do
Function plugins transform one selected table column into another table column. In the main window, the user selects:
an input column,
an output column,
a function from the Functions dropdown,
an optional multiplier and offset.
PhysPlot reads the input column as a one-dimensional numeric array, calls the
plugin’s transform(values) function, then writes the returned values into
the output column.
Where Functions Appear in the UI
Discovered function plugins are available in:
The top-bar Functions menu
The transform dropdown in the data-manipulation controls
PhysPlot discovers function files at startup.
Layman Example
If column 1 contains time and column 2 contains voltage, a function plugin can
create a new column containing voltage squared or baseline removed
voltage. The plugin only needs to know how to transform one list of numbers.
Required File Location
Put new function files in:
functions/
Use a clear filename, for example:
functions/15_normalize.py
Required Structure
Every function plugin should define:
DISPLAY_NAMEText shown in the PhysPlot Functions dropdown.
DEFAULT_LABELDefault label used by the app when a label is needed.
transform(values)Function that receives a one-dimensional numeric sequence and returns a sequence of the same length.
Minimal Template
"""Normalize transform for PhysPlot."""
import numpy as np
DISPLAY_NAME = "Normalize"
DEFAULT_LABEL = "Normalized"
def transform(values):
"""transform(values) -> numpy.ndarray
Normalize the selected table column between 0 and 1.
Parameters:
values (Sequence[float]): One-dimensional selected table column.
Returns:
numpy.ndarray: Normalized values with the same length as input.
"""
values = np.asarray(values, dtype=float)
minimum = np.nanmin(values)
maximum = np.nanmax(values)
if maximum == minimum:
return np.zeros_like(values)
return (values - minimum) / (maximum - minimum)
Step-by-Step: Build a New Function
Create a new file in
functions/(for examplefunctions/15_normalize.py).Define
DISPLAY_NAMEfor the GUI entry.Define
DEFAULT_LABELfor generated labels.Implement
transform(values)and return one value per input row.Restart PhysPlot so the function appears in the menu and dropdown.
Function Categories
Common categories used by PhysPlot plugins include:
Identity/basic: pass-through operations.
Power/reciprocal:
x^2,x^3,1/x.Log/exp:
log10,ln,e^x.Trigonometric:
sin,cos,tan, inverse trig.Domain-specific: custom transforms such as baseline correction.
Practical Rules
Return the same number of values that you received.
Use
numpy.asarray(values, dtype=float)if you need NumPy operations.Avoid changing files, opening windows, or modifying the table directly.
Handle edge cases such as blank columns, zeros, or repeated values.
Existing Examples
See:
functions/01_identity.pyfunctions/05_log10.pyfunctions/14_xrd_baseline_remove.py