PySATL CPD
  • API Reference
    • pysatl_cpd
      • algorithms
        • online
      • analysis
        • metrics
        • visualization
      • benchmark
        • online
        • benchmark
        • registry
        • scenarios
        • tooling
      • core
        • online
        • change_point_detector
        • detection_trace
        • single_run
      • data
        • dataset
        • generator
        • loaders
        • providers
        • typedefs
      • typedefs
        • base
        • frozendict
  • User Guide
    • 01. PySATL Data API
      • Section 1. Orientation
      • What in this notebook
      • Interface Overview
      • Section 2. Providers
        • 2.1 NDArrayUnivariateProvider
        • 2.2 NDArrayMultivariateProvider
        • 2.3 PandasDataProvider
      • Section 3. Labels, Segments, and Ground Truth
        • 3.1 StateDescriptor
        • 3.2 SegmentInfo
        • 3.3 Change Points, States, and Transitions
        • 3.4 Annotations
        • 3.5 SegmentsLabeling
      • Section 4. Labeled Providers
        • 4.1 PlainUnivariateLabeledData
        • 4.2 PlainMultivariateLabeledData
        • 4.3 PandasLabeledData
      • Section 5. Provider Operations
        • 5.1 cut()
        • 5.2 query_segments()
        • 5.3 query_bisegments()
        • 5.4 merge()
      • Section 6. Transformers
        • 6.1 ColumnsSelectorTransformer
        • 6.2 ColumnFeatureCreator
        • 6.3 ComposedTransformer
        • 6.4 Why transformations belong in the data layer
      • Section 7. Datasets
        • 7.1 Creating a Dataset
        • 7.2 filter_by_annotation(), filter_by_segments(), and filter_by_bisegments()
        • 7.3 train_test_split() and merge()
        • 7.4 StateDataset
      • Section 8. Loading Data From Files
        • 8.1 FolderCsvColumns and load_folder_csv_dataset()
        • 8.2 Why the loaded result matches the rest of the notebook
      • Section 9. End-to-End Mini Workflow
        • 9.1 From generated series to benchmark-ready views
        • 9.2 Final summary
    • 02. PySATL Generator API
      • Section 1. Orientation
      • What in this notebook
      • Section 2. Scenario Model
        • 2.1 ScenarioSpec
        • 2.2 SegmentSpec
        • 2.3 SegmentPlan
        • 2.4 A complete first scenario
      • Section 3. Distribution Specifications
        • 3.1 Univariate distributions
        • 3.2 Multivariate normal generation
        • 3.3 Independent multivariate columns
        • 3.4 Choosing the right distribution family
      • Section 4. Building Useful Scenarios
        • 4.1 A univariate mean-shift scenario
        • 4.2 A multivariate machine-state scenario
        • 4.3 Plan reuse and semantic metadata
      • Section 5. Running the Generator
        • 5.1 GenericSeriesGenerator
        • 5.2 Inspecting GeneratedSeries
        • 5.3 Reproducibility with seeds
      • Section 6. Dataset Generation
        • 6.1 LabeledDataGenerator protocol
        • 6.2 ScenarioDatasetGenerator
        • 6.3 Preset datasets
      • Section 7. Config-Driven Generation
        • 7.1 scenario_from_mapping()
        • 7.2 scenario_from_yaml()
        • 7.3 scenarios_from_yaml()
      • Section 8. Bridging Into the Data API
        • 8.1 Building labeled providers from generated output
        • 8.2 What to inspect first after conversion
      • Section 9. Final Recap
    • 03. PySATL CPD API: Change Point Detection
      • Section 1. Orientation
      • What in this notebook
      • Core Concepts and Notation
      • Section 2. Online Detection. The Running Example
        • 2.1 A compact mean-shift scenario
        • 2.2 Why one provider is enough for this chapter
      • Section 3. Online Algorithms
        • 3.1 OnlineAlgorithm as the stateful runtime core
        • 3.2 A primitive custom algorithm
        • 3.3 ShewhartControlChart as the running algorithm
        • 3.4 Processing observations directly
      • Section 4. Wrapping all in detectors
        • 4.1 OnlineResetDetector
        • 4.2 Threshold, skip period, and run-length controls
        • 4.3 Running one reset detector end to end
      • Section 5. OnlineDetectionTrace
        • 5.1 Trace anatomy
        • 5.2 Programmatic inspection of stepwise results
        • 5.3 Cutting traces for local analysis
      • Section 6. Optional Runtime Wrappers
        • 6.1 SkippingOnlineAlgorithmWrapper
      • Section 7. Final Recap
    • 04. PySATL CPD API: Analysis
      • Section 1. Orientation
      • What in this notebook
      • Section 2. Preparing one common provider and trace
        • 2.1 Building the provider
        • 2.2 Building the trace
      • Section 3. Manual Visualization
        • 3.1 Manual matplotlib timeseries plot
        • 3.2 Manual plotly timeseries plot
        • 3.3 Manual matplotlib overview of series and detector output
        • 3.4 Manual plotly overview of series and detector output
      • Section 4. Reusable Visual Components
        • 4.1 VerticalLineVisualComponent and VerticalFillComponent in matplotlib
        • 4.2 VerticalLineVisualComponent and VerticalFillComponent in plotly
        • 4.3 Learning and skip periods as reusable regions
      • Section 5. Direct Visualizers
        • 5.1 UnivariateTimeseriesVisualizer and OnlineTraceVisualizer in matplotlib
        • 5.2 UnivariateTimeseriesVisualizer and OnlineTraceVisualizer in plotly
        • 5.3 Custom Shewhart state visualizer in matplotlib
        • 5.4 Custom Shewhart state visualizer in plotly
      • Section 6. Multivariate Time-Series Visualizers
        • 6.1 Preparing multivariate providers
        • 6.2 PlainMultivariateTimeseriesVisualizer in matplotlib
        • 6.3 PlainMultivariateTimeseriesVisualizer in plotly
        • 6.4 RichMultivariateTimeseriesVisualizer in matplotlib without a custom time column
        • 6.5 RichMultivariateTimeseriesVisualizer in plotly without a custom time column
        • 6.6 RichMultivariateTimeseriesVisualizer in matplotlib with a custom time column and twin axis
        • 6.7 RichMultivariateTimeseriesVisualizer in plotly with a custom time column and twin axis
      • Section 7. OnlineCpdPlotter
        • 7.1 OnlineCpdPlotter in matplotlib
        • 7.2 OnlineCpdPlotter in plotly
        • 7.3 OnlineCpdPlotter with PlainMultivariateTimeseriesVisualizer and automatic vertical layout
        • 7.4 OnlineCpdPlotter with RichMultivariateTimeseriesVisualizer and automatic left-right layout
      • Section 8. Single-Run and Multiple-Run Metrics
        • 8.1 Single-run metrics
        • 8.2 Multiple-run metrics
      • Section 9. Final Recap
    • 05. PySATL CPD API: Reset Benchmarking
      • Section 1. Orientation
      • What in this notebook
      • Section 2. Building a Reset Benchmark Campaign
        • 2.1 Choosing the dataset and feature view
        • 2.2 Configuring reset detectors
        • 2.3 Why entries wrap complete detectors
      • Section 3. Registry and Benchmark Orchestration
        • 3.1 BenchmarkRegistry
        • 3.2 OnlineResetBenchmark
        • 3.3 Why orchestration is separate from metrics
      • Section 4. Metric Families for Reset Evaluation
        • 4.1 Classification metrics
        • 4.2 Delay metrics
        • 4.3 Average run length
      • Section 5. Running Metric Scenarios and Building a Benchmark Table
        • 5.1 Running the benchmark for several metric families
        • 5.2 Merging the metric outputs into one table
        • 5.3 Reading the reset table
      • Section 6. Visualizing Reset Benchmark Results
        • 6.1 Reset benchmark plots in matplotlib
        • 6.2 Reset benchmark plots in plotly
        • 6.3 Interpreting the plotted tradeoffs
      • Section 7. Explaining a Metric With One Concrete Trace
        • 7.1 Picking the winning threshold
        • 7.2 Retrieving one cached run from the benchmark registry
        • 7.3 Visualizing the winning operating point
      • Section 8. Final Recap
    • 06. PySATL CPD API: No-Reset Benchmarking
      • Section 1. Orientation
      • What in this notebook
      • Section 2. Building a No-Reset Benchmark Campaign
        • 2.1 Choosing the dataset and feature view
        • 2.2 Creating an OnlineNoResetBenchmarkEntry
        • 2.3 Creating the benchmark orchestrator
        • 2.4 Cropping bisegment windows (bisegment_cut)
      • Section 3. No-Reset Classification Semantics
        • 3.1 Configuring classification on OnlineNoResetBenchmark
        • 3.2 Point-based, event-based, and mixed policies
        • 3.3 Why the error margin matters more in no-reset mode
      • Section 4. Global Classification Tables
        • 4.1 get_classification_table(…)
        • 4.2 Reading the global table
        • 4.3 PR-AUC from global classification tables
      • Section 5. Transition-Specific Analysis
        • 5.1 get_classification_table_by_transition(…)
        • 5.2 Why transition filtering matters
        • 5.3 Optional ARL inside transition tables
      • Section 6. State-Based ARL Analysis
        • 6.1 get_ARL_table_by_state(…)
        • 6.2 Interpreting ARL by state
        • 6.3 Why ARL-by-state belongs in the no-reset story
      • Section 7. Bisegment-Level Analysis
        • 7.1 get_bisegments_table(…)
        • 7.2 Why bisegments are central in no-reset mode
        • 7.3 Choosing informative local cases
      • Section 8. Visualizing No-Reset Benchmark Results
        • 8.1 Global threshold and PR-AUC views in matplotlib
        • 8.2 ARL-by-state views in matplotlib
      • Section 9. Explaining No-Reset Behavior With One Continuous Trace
        • 9.1 Selecting a cached local transition case
        • 9.2 Inspecting the cached continuous no-reset trace
        • 9.3 Visualizing the continuous trace with one chosen threshold
      • Section 10. Final Recap
  • Changelog
    • Unreleased
  • Contributing
PySATL CPD
  • User Guide
  • View page source

User Guide

This section is generated from the notebooks in notebooks/user_guide.

  • 01. PySATL Data API
  • 02. PySATL Generator API
  • 03. PySATL CPD API: Change Point Detection
  • 04. PySATL CPD API: Analysis
  • 05. PySATL CPD API: Reset Benchmarking
  • 06. PySATL CPD API: No-Reset Benchmarking
Previous Next

© Copyright 2026, Mikhail Mikhailov, Danil Totmyanin, Andrey Isakov.

Built with Sphinx using a theme provided by Read the Docs.