Skip to content

sgnts.transforms.matmul

Matmul dataclass

Bases: TSTransform


              flowchart TD
              sgnts.transforms.matmul.Matmul[Matmul]
              sgnts.base.base.TSTransform[TSTransform]
              sgnts.base.base.TimeSeriesMixin[TimeSeriesMixin]

                              sgnts.base.base.TSTransform --> sgnts.transforms.matmul.Matmul
                                sgnts.base.base.TimeSeriesMixin --> sgnts.base.base.TSTransform
                



              click sgnts.transforms.matmul.Matmul href "" "sgnts.transforms.matmul.Matmul"
              click sgnts.base.base.TSTransform href "" "sgnts.base.base.TSTransform"
              click sgnts.base.base.TimeSeriesMixin href "" "sgnts.base.base.TimeSeriesMixin"
            

Performs matrix multiplication with provided matrix.

Parameters:

Name Type Description Default
matrix Array

Array, the matrix to multiply the data with, out = matrix x data

required
backend type[ArrayBackend]

type[ArrayBackend], the array backend for array operations

NumpyBackend
Source code in sgnts/transforms/matmul.py
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
@dataclass(kw_only=True)
class Matmul(TSTransform):
    """Performs matrix multiplication with provided matrix.

    Args:
        matrix:
            Array, the matrix to multiply the data with, out = matrix x data
        backend:
            type[ArrayBackend], the array backend for array operations
    """

    matrix: Array
    backend: type[ArrayBackend] = NumpyBackend

    def configure(self) -> None:
        self.shape = self.matrix.shape

    @validator.one_to_one
    def validate(self) -> None:
        pass

    @transform.one_to_one
    def process(self, input_frame: TSFrame, output_frame: TSCollectFrame) -> None:
        """Perform matrix multiplication on non-gap data."""
        for buf in input_frame:
            if buf.is_gap:
                data = None
                shape = self.shape[:-1] + (buf.samples,)
            else:
                data = self.backend.matmul(self.matrix, buf.data)
                shape = data.shape

            buf = buf.copy(data=data, shape=shape)
            output_frame.append(buf)

process(input_frame, output_frame)

Perform matrix multiplication on non-gap data.

Source code in sgnts/transforms/matmul.py
39
40
41
42
43
44
45
46
47
48
49
50
51
@transform.one_to_one
def process(self, input_frame: TSFrame, output_frame: TSCollectFrame) -> None:
    """Perform matrix multiplication on non-gap data."""
    for buf in input_frame:
        if buf.is_gap:
            data = None
            shape = self.shape[:-1] + (buf.samples,)
        else:
            data = self.backend.matmul(self.matrix, buf.data)
            shape = data.shape

        buf = buf.copy(data=data, shape=shape)
        output_frame.append(buf)