Skip to content

hydra

PlotCallback(trace, dims=None, *, trace_index=0, ax=None, show=True, pause=0.001)

Bases: HyDRACallback

Live matplotlib visualization for HyDRA trace analysis progress.

Source code in src/flowcean/hydra/callbacks.py
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
def __init__(
    self,
    trace: Trace,
    dims: Sequence[int] | None = None,
    *,
    trace_index: int = 0,
    ax: Axes | None = None,
    show: bool = True,
    pause: float = 0.001,
) -> None:
    self.trace = trace
    self.dims = list(dims) if dims is not None else [0]
    self.trace_index = trace_index
    self.ax = ax
    self.show = show
    self.pause = pause
    self._finalized_segments: list[tuple[TraceSegment, int]] = []
    self._grouping_segments: list[tuple[TraceSegment, int]] = []
    self._active_segment: TraceSegment | None = None
    self._overlay_artists: list[Artist] = []
    self._base_plotted = False
    self._mode_colors: dict[int, str] = {}

    self._validate_trace()

HyDRALearner(regressor_factory, threshold, start_width=10, step_width=5, selector_learner=None, callback=None, trace_schema=None)

Bases: SupervisedLearner

Identify hybrid-system modes from trace inputs and derivatives.

regressor_factory must create fresh incremental supervised learners. The current learner supports single-output derivative training. When a selector learner is provided, HyDRA labels accurate trace segments and trains a selector to route future rows to learned modes.

Source code in src/flowcean/hydra/learner.py
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
def __init__(
    self,
    regressor_factory: Callable[[], SupervisedIncrementalLearner],
    threshold: float,
    start_width: int = 10,
    step_width: int = 5,
    selector_learner: HybridDecisionTreeLearner | None = None,
    callback: HyDRACallback | None = None,
    trace_schema: HyDRATraceSchema | None = None,
) -> None:
    super().__init__()
    if threshold < 0:
        message = "threshold must be non-negative."
        raise ValueError(message)
    if start_width <= 0:
        message = "start_width must be positive."
        raise ValueError(message)
    if step_width <= 0:
        message = "step_width must be positive."
        raise ValueError(message)
    self.regressor_factory = regressor_factory
    self.threshold = threshold
    self.start_width = start_width
    self.step_width = step_width
    self.selector_learner = selector_learner
    self.callback = callback or NoOpCallback()
    self.trace_schema = trace_schema

HyDRAModel(modes, *, input_features, output_features, selector=None, trace_schema=None)

Bases: Model

Model composed of learned continuous modes and an optional selector.

A single-mode model predicts directly with that mode. A multi-mode model needs a selector for batch prediction. Model persistence uses Flowcean's trusted-only pickle-based model serialization.

Source code in src/flowcean/hydra/model.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def __init__(
    self,
    modes: list[Model],
    *,
    input_features: list[str],
    output_features: list[str],
    selector: HybridDecisionTreeModel | None = None,
    trace_schema: HyDRATraceSchema | None = None,
) -> None:
    super().__init__()
    self.modes = modes
    self.input_features = input_features
    self.output_features = output_features
    self.selector = selector
    self.trace_schema = trace_schema
    self._validate_trace_schema()

HyDRATraceSchema(time, state, derivative, inputs=()) dataclass

Column schema for HyDRA trace-based learning.

Parameters:

Name Type Description Default
time str

Time column name.

required
state tuple[str, ...]

State column names used as model inputs.

required
derivative tuple[str, ...]

Derivative column names used as model outputs.

required
inputs tuple[str, ...]

Optional external input column names.

()

HyDRA currently expects derivative columns to align with state columns and supports single-output training in HyDRALearner.

SelectorFeatureConfig(state_features=(), input_features=(), derivative_features=(), state_history=0, input_history=0, derivative_history=0, mode_history=0) dataclass

Configuration for selector feature construction.

Parameters:

Name Type Description Default
state_features tuple[str, ...]

State columns available to the selector.

()
input_features tuple[str, ...]

Raw input columns available to the selector.

()
derivative_features tuple[str, ...]

Derivative columns available to the selector.

()
state_history int

Number of previous state rows used for selector features.

0
input_history int

Number of previous input rows used for selector features.

0
derivative_history int

Number of previous derivative rows used for selector features.

0
mode_history int

Number of previous mode labels used for selector features.

0