Source code for pysatl_cpd.data.generator.providers.np_provider

# -*- coding: ascii -*-
"""Plain provider builders for generated data."""

from __future__ import annotations

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

from pysatl_cpd.data.generator.models import GeneratedSeries
from pysatl_cpd.data.providers.labeled import PlainMultivariateLabeledData, PlainUnivariateLabeledData
from pysatl_cpd.data.providers.plain.np_multivariate import NDArrayMultivariateProvider
from pysatl_cpd.data.providers.plain.np_univariate import NDArrayUnivariateProvider
from pysatl_cpd.data.typedefs import TimeseriesAnnotation, UnlabeledTimeseriesAnnotation


[docs] def build_plain_multivariate_labeled_data( series: GeneratedSeries, *, name: str, annotation: TimeseriesAnnotation | None = None, ) -> PlainMultivariateLabeledData[TimeseriesAnnotation]: """ Build plain multivariate labeled data from generated series. Parameters ---------- series Generated series containing data and metadata. name Name for the timeseries annotation. annotation Optional timeseries annotation. If None, one is created using the series metadata. Returns ------- labeled_data Plain multivariate labeled data instance. """ effective_annotation = annotation or TimeseriesAnnotation(name=name, metadata=series.metadata) return PlainMultivariateLabeledData( NDArrayMultivariateProvider( series.data, UnlabeledTimeseriesAnnotation( name=name, source=effective_annotation.source, metadata=effective_annotation.metadata, ), ), list(series.segments), annotation=effective_annotation, )
[docs] def build_plain_univariate_labeled_data( series: GeneratedSeries, *, feature_name: str, name: str, annotation: TimeseriesAnnotation | None = None, ) -> PlainUnivariateLabeledData[TimeseriesAnnotation]: """ Build plain univariate labeled data from generated series. Parameters ---------- series Generated series containing data and metadata. feature_name Name of the feature to extract as univariate data. name Name for the timeseries annotation. annotation Optional timeseries annotation. If None, one is created using the series metadata. Returns ------- labeled_data Plain univariate labeled data instance. Raises ------ ValueError If the feature name is not found in the series. """ if feature_name not in series.feature_names: raise ValueError(f"Unknown feature name '{feature_name}'") effective_annotation = annotation or TimeseriesAnnotation(name=name, metadata=series.metadata) feature_index = series.feature_names.index(feature_name) return PlainUnivariateLabeledData( NDArrayUnivariateProvider( series.data[:, feature_index], UnlabeledTimeseriesAnnotation( name=name, source=effective_annotation.source, metadata=effective_annotation.metadata, ), ), list(series.segments), annotation=effective_annotation, )