Function

class audonnx.Function(func, *, func_args=None)[source]

Turn function into an audobject.Object.

Parameters
  • func (Callable) – function to apply

  • func_args (Optional[dict[str, object]]) – default values for arguments that will be passed to the function

Examples

>>> object = Function(lambda x, sr: float(x.mean()))
>>> object
{'$audonnx.core.function.Function': {'func': 'lambda x, sr: float(x.mean())', 'func_args': {}}}
>>> object(np.array([1, 2, 3]), 10)
2.0
>>> def feature_addition(x, offset=1):
...     return float(x.mean() + offset)
>>> object = Function(feature_addition)
>>> object
{'$audonnx.core.function.Function': {'func': 'def feature_addition(x, offset=1):\n    return float(x.mean() + offset)\n', 'func_args': {}}}
>>> object({"x": np.array([1, 2, 3]), "offset": 1})
3.0

__call__()

Function.__call__(inputs, sampling_rate=None)[source]

Apply function on inputs.

All required arguments of the function that are not already set in the func_args must be provided.

If inputs is a numpy.ndarray, it is passed as a positional argument to the function, and the sampling_rate, if provided, is passed as the second positional argument.

If inputs is a dictionary, the dictionary entries are matched to the function arguments and passed as keyword arguments. Keys that don’t occur in the function arguments are ignored.

Parameters
  • inputs (ndarray | dict[str, object]) – input signal or dictionary with multiple inputs

  • sampling_rate (Optional[int]) – sampling rate in Hz

Return type

ndarray

Returns

transformed inputs

Raises

ValueError – if the passed input could not be matched to the function arguments

arguments

Function.arguments

Returns arguments that are serialized.

Returns

Dictionary of arguments and their values.

Raises

RuntimeError – if arguments are found that are not assigned to attributes of the same name

Examples

>>> import audobject.testing
>>> o = audobject.testing.TestObject("test", point=(1, 1))
>>> o.arguments
{'name': 'test', 'point': (1, 1)}

borrowed_arguments

Function.borrowed_arguments

Returns borrowed arguments.

Returns

Dictionary with borrowed arguments.

from_dict()

static Function.from_dict(d, root=None, **kwargs)
Return type

Object

from_yaml()

static Function.from_yaml(path_or_stream, **kwargs)
Return type

Object

from_yaml_s()

static Function.from_yaml_s(yaml_string, **kwargs)
Return type

Object

func

Function.func

Function

func_args

Function.func_args

Default set function arguments

hidden_arguments

Function.hidden_arguments

Returns hidden arguments.

Returns

List with names of hidden arguments.

id

Function.id

Object identifier.

The ID of an object ID is created from its non-hidden arguments.

Returns

object identifier

Examples

>>> class Foo(Object):
...     def __init__(self, bar: str):
...         self.bar = bar
>>> foo1 = Foo("I am unique!")
>>> foo1.id
'893df240-babe-d796-cdf1-c436171b7a96'
>>> foo2 = Foo("I am different!")
>>> foo2.id
'9303f2a5-bfc9-e5ff-0ffa-a9846e2d2190'
>>> foo3 = Foo("I am unique!")
>>> foo1.id == foo3.id
True

is_loaded_from_dict

Function.is_loaded_from_dict

Check if object was loaded from a dictionary.

Returns True if object was initialized from a dictionary, e.g. after loading it from a YAML file.

Returns

True if object was loaded from a dictionary,

otherwise False

parameters

Function.parameters

Function parameters

resolvers

Function.resolvers

Return resolvers.

Returns

Dictionary with resolvers.

short_id

Function.short_id

Short object identifier.

The short ID consists of eight characters and is created from its non-hidden arguments.

Returns

short object identifier

Examples

>>> class Foo(Object):
...     def __init__(self, bar: str):
...         self.bar = bar
>>> foo1 = Foo("I am unique!")
>>> foo1.id
'893df240-babe-d796-cdf1-c436171b7a96'
>>> foo1.short_id
'171b7a96'
>>> foo2 = Foo("I am different!")
>>> foo2.short_id
'6e2d2190'
>>> foo3 = Foo("I am unique!")
>>> foo1.short_id == foo3.short_id
True

to_dict()

Function.to_dict(*, include_version=True, flatten=False, root=None)

Converts object to a dictionary.

Includes items from audobject.Object.arguments. If an argument has a resolver, its value is encoded. Usually, the object can be re-instantiated using audobject.Object.from_dict(). However, if flatten=True, this is not possible.

Parameters
  • include_version (bool) – add version to class name

  • flatten (bool) – flatten the dictionary

  • root (Optional[str]) – if file is written to disk, set to target directory

Return type

Mapping[str, Union[bool, datetime, dict, float, int, list, None, str]]

Returns

dictionary that represent the object

Examples

>>> import audobject.testing
>>> o = audobject.testing.TestObject("test", point=(1, 1))
>>> o.to_dict(include_version=False)
{'$audobject.core.testing.TestObject': {'name': 'test', 'point': [1, 1]}}
>>> o.to_dict(flatten=True)
{'name': 'test', 'point.0': 1, 'point.1': 1}

to_yaml()

Function.to_yaml(path_or_stream, *, include_version=True)

Save object to YAML file.

Parameters
  • path_or_stream (str | IOBase) – file path or stream

  • include_version (bool) – add version to class name

to_yaml_s()

Function.to_yaml_s(*, include_version=True)

Convert object to YAML string.

Parameters

include_version (bool) – add version to class name

Return type

str

Returns

YAML string

Examples

>>> import audobject.testing
>>> o = audobject.testing.TestObject("test", point=(1, 1))
>>> print(o.to_yaml_s(include_version=False))
$audobject.core.testing.TestObject:
  name: test
  point:
  - 1
  - 1