Source code for openeo.udf.udf_signatures
"""
This module defines a number of function signatures that can be implemented by UDF's.
Both the name of the function and the argument types are/can be used by the backend to validate if the provided UDF
is compatible with the calling context of the process graph in which it is used.
"""
# Note: this module was initially developed under the ``openeo-udf`` project (https://github.com/Open-EO/openeo-udf)
from pandas import Series
from openeo.metadata import CollectionMetadata
from openeo.udf.udf_data import UdfData
from openeo.udf.xarraydatacube import XarrayDataCube
[docs]
def apply_timeseries(series: Series, context: dict) -> Series:
"""
Process a timeseries of values, without changing the time instants.
This can for instance be used for smoothing or gap-filling.
:param series: A Pandas Series object with a date-time index.
:param context: A dictionary containing user context.
:return: A Pandas Series object with the same datetime index.
"""
# TODO: do we need geospatial coordinates for the series?
return series
[docs]
def apply_datacube(cube: XarrayDataCube, context: dict) -> XarrayDataCube:
"""
Map a :py:class:`XarrayDataCube` to another :py:class:`XarrayDataCube`.
Depending on the context in which this function is used, the :py:class:`XarrayDataCube` dimensions
have to be retained or can be chained.
For instance, in the context of a reducing operation along a dimension,
that dimension will have to be reduced to a single value.
In the context of a 1 to 1 mapping operation, all dimensions have to be retained.
:param cube: input data cube
:param context: A dictionary containing user context.
:return: output data cube
"""
return cube
[docs]
def apply_udf_data(data: UdfData):
"""
Generic UDF function that directly manipulates a :py:class:`UdfData` object
:param data: :py:class:`UdfData` object to manipulate in-place
"""
pass