sgnts.transforms.nary
¶
NAry transforms.
Multiply
dataclass
¶
Bases: NaryTransform
flowchart TD
sgnts.transforms.nary.Multiply[Multiply]
sgnts.transforms.nary.NaryTransform[NaryTransform]
sgnts.base.base.TSTransform[TSTransform]
sgnts.base.base.TimeSeriesMixin[TimeSeriesMixin]
sgnts.transforms.nary.NaryTransform --> sgnts.transforms.nary.Multiply
sgnts.base.base.TSTransform --> sgnts.transforms.nary.NaryTransform
sgnts.base.base.TimeSeriesMixin --> sgnts.base.base.TSTransform
click sgnts.transforms.nary.Multiply href "" "sgnts.transforms.nary.Multiply"
click sgnts.transforms.nary.NaryTransform href "" "sgnts.transforms.nary.NaryTransform"
click sgnts.base.base.TSTransform href "" "sgnts.base.base.TSTransform"
click sgnts.base.base.TimeSeriesMixin href "" "sgnts.base.base.TimeSeriesMixin"
Multiply transform
Source code in src/sgnts/transforms/nary.py
NaryTransform
dataclass
¶
Bases: TSTransform
flowchart TD
sgnts.transforms.nary.NaryTransform[NaryTransform]
sgnts.base.base.TSTransform[TSTransform]
sgnts.base.base.TimeSeriesMixin[TimeSeriesMixin]
sgnts.base.base.TSTransform --> sgnts.transforms.nary.NaryTransform
sgnts.base.base.TimeSeriesMixin --> sgnts.base.base.TSTransform
click sgnts.transforms.nary.NaryTransform href "" "sgnts.transforms.nary.NaryTransform"
click sgnts.base.base.TSTransform href "" "sgnts.base.base.TSTransform"
click sgnts.base.base.TimeSeriesMixin href "" "sgnts.base.base.TimeSeriesMixin"
N-ary transform. Takes N inputs and applies a function to them frame by frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
op
|
Callable | None
|
Callable, the operation to apply to the inputs. Must take N arguments, where N is the number of sink pads, and return a single output. |
None
|
Notes
Thread safety:
Marked thread_safe = True (inherited by Multiply,
Real, and other subclasses). With
Pipeline.run(threaded=N) the pad callbacks for this
element are dispatched onto worker threads.
Pad layout: N sink pads + 1 source pad
(``@validator.many_to_one``). The N sink pads' ``pull``
callbacks CAN run concurrently in the same wave.
``internal`` runs alone.
Where the (potential) GIL-releasing work lives: ``internal()``
→ ``process()`` → ``self.op(*data)``. Speedup depends on
``op``: typical NumPy/Torch ops release the GIL and scale;
pure-Python ops will not.
Per-pad concurrency analysis:
- ``pull`` (inherited ``TimeSeriesMixin.pull``):
per-pad-keyed dict writes; safe across pads.
- ``new`` (inherited): read-only lookup.
- ``process``: zips per-pad input buffers, calls
``self.op`` per buffer-tuple, appends to local output.
No element-level mutation.
**Future editors MUST preserve thread safety**: keep
``apply``/``process`` purely functional on their inputs.
Subclasses that set ``self.op`` from ``configure()`` are
fine; if you set ``self.op`` from ``pull``/``new``/
``process`` you'd race across same-element pulls. ``op``
itself must be reentrant — that's the user's
responsibility.
Source code in src/sgnts/transforms/nary.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
apply(*buffers)
¶
Apply the operator to the given sequence of buffers
Source code in src/sgnts/transforms/nary.py
process(input_frames, output_frame)
¶
Process multiple input frames to single output.
Source code in src/sgnts/transforms/nary.py
Real
dataclass
¶
Bases: NaryTransform
flowchart TD
sgnts.transforms.nary.Real[Real]
sgnts.transforms.nary.NaryTransform[NaryTransform]
sgnts.base.base.TSTransform[TSTransform]
sgnts.base.base.TimeSeriesMixin[TimeSeriesMixin]
sgnts.transforms.nary.NaryTransform --> sgnts.transforms.nary.Real
sgnts.base.base.TSTransform --> sgnts.transforms.nary.NaryTransform
sgnts.base.base.TimeSeriesMixin --> sgnts.base.base.TSTransform
click sgnts.transforms.nary.Real href "" "sgnts.transforms.nary.Real"
click sgnts.transforms.nary.NaryTransform href "" "sgnts.transforms.nary.NaryTransform"
click sgnts.base.base.TSTransform href "" "sgnts.base.base.TSTransform"
click sgnts.base.base.TimeSeriesMixin href "" "sgnts.base.base.TimeSeriesMixin"
Extract Real component of single input