Source code for pysatl_cpd.data.providers.labeled.implementations.np_multivariate

# -*- coding: ascii -*-
"""Plain multivariate labeled data provider."""

__author__ = "Mikhail Mikhailov"
__copyright__ = "Copyright (c) 2026 PySATL project"
__license__ = "SPDX-License-Identifier: MIT"

from collections.abc import Iterable
from typing import cast

from pysatl_cpd.data.providers.data_provider import DataProvider
from pysatl_cpd.data.providers.labeled.labeled_data import LabeledData
from pysatl_cpd.data.providers.plain.np_multivariate import NDArrayMultivariateProvider
from pysatl_cpd.data.typedefs import SegmentInfo, TimeseriesAnnotation, UnlabeledTimeseriesAnnotation
from pysatl_cpd.typedefs import MultivariateNumericArray, UnivariateNumericArray


[docs] class PlainMultivariateLabeledData[AnnotationT: TimeseriesAnnotation](LabeledData[UnivariateNumericArray, AnnotationT]): """Labeled data implementation for multivariate sequences. Parameters ---------- unlabeled Unlabeled data provider for the multivariate sequence. labeling Iterable of segment information. annotation Annotation instance for labeling. """
[docs] def __init__( self, unlabeled: NDArrayMultivariateProvider[UnlabeledTimeseriesAnnotation], labeling: Iterable[SegmentInfo], annotation: AnnotationT, ) -> None: super().__init__(unlabeled, labeling, annotation)
@property def unlabeled(self) -> NDArrayMultivariateProvider[UnlabeledTimeseriesAnnotation]: """Return the underlying unlabeled data provider. Returns ------- unlabeled The underlying unlabeled data provider. """ return cast(NDArrayMultivariateProvider[UnlabeledTimeseriesAnnotation], self._unlabeled_data)
[docs] @classmethod def from_unlabeled_data[A: TimeseriesAnnotation]( cls, unlabeled: DataProvider[UnivariateNumericArray, UnlabeledTimeseriesAnnotation], segment_info: Iterable[SegmentInfo], annotation: A, ) -> "PlainMultivariateLabeledData[A]": """Create labeled data from an unlabeled multivariate provider. Parameters ---------- unlabeled Unlabeled provider containing the raw series. segment_info Segment labeling for the series. annotation Annotation attached to the labeled series. Returns ------- labeled_data Concrete labeled-data provider built from the inputs. Raises ------ TypeError If unlabeled is not an NDArrayMultivariateProvider. """ if not isinstance(unlabeled, NDArrayMultivariateProvider): raise TypeError("PlainMultivariateLabeledData requires an NDArrayMultivariateProvider") return cast("PlainMultivariateLabeledData[A]", cls(unlabeled, segment_info, cast(AnnotationT, annotation)))
@property def raw_data(self) -> MultivariateNumericArray: """Return a copy of the underlying data array. Returns ------- raw_data The underlying numeric data array. """ return self.unlabeled.raw_data