Skip to content

Releases: AEFDI/EnergyFaultDetector

PreDist notebook, refactor DataPreprocessor to steps-based pipeline and add counter handling

14 Jan 08:14
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Added:

  • PreDist example & dataset helper
    • notebooks/PreDist/PreDist.ipynb: end-to-end example showing how to apply EnergyFaultDetector to the PreDist dataset.
    • evaluation.PreDistDataset: helper class to (down)load and prepare PreDist data.
  • Counter handling: CounterDiffTransformer: converts monotonically increasing counters to per-sample diffs or per-second rates. Can handle resets/rollovers (zero, rollover, nan, auto), small-negative tolerance, first-sample fill.
  • Quickstart configuration generator: generate_quickstart_config(...): creates a minimal, ready-to-train config dict (and can optionally dump it to YAML) so you can get started faster.
  • FaultDetectionResult (the output of FaultDetector.predict) can now be easily saved and loaded from disk and provides a criticality() helper to quickly calculate the criticality from the prediction.

Changed:

  • Step-based DataPreprocessor configuration
    • DataPreprocessor now uses a flexible, ordered, step-based API: python DataPreprocessor(steps: Optional[List[Dict]] = None, **legacy_params), making it easier to customize and extend preprocessing.
      Example configuration:
    train:
      ...
      data_preprocessor:
        steps:
          - name: column_selector
            params:
              max_nan_frac_per_col: 0.2
          - name: low_unique_value_filter
          - name: simple_imputer
          - name: standard_scaler
      ...
    • Legacy parameters are still supported for backwards compatibility. If both steps and legacy parameters are provided, steps take precedence (with a warning).
  • ColumnSelector: You can now use either features_to_exclude or features_to_select.
  • DataClipper: You can now use either features_to_exclude or features_to_clip.
  • After preprocessing, FaultDetector now casts DataFrames to float32 by default to reduce memory usage. The dtype can be configured via Config.dtype if float64 is required.
  • Path handling: All relevant classes now accept pathlib.Path in addition to string paths. Internally, file handling is being migrated from os.path to pathlib for more robust and consistent path operations.

Fixed:

  • The notebook Example - Hyperparameter Optimization.ipynb has been updated and improved to match the current API and recommended workflows.

Docs:

  • README updated with:
    • A quickstart example using the new config generator and step-based DataPreprocessor.
    • A short mention of the CLI to make entry points clearer.
  • Configuration guide extended with a table of preprocessing steps, examples and defaults.
  • Documentation build and structure improved so that the API docs and examples stay in sync with the code.

CAREScore and CARE2Compare: new features, changes, and fixes

17 Oct 08:22
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Added:

  • CAREScore: separate methods to compute subscores.
  • CAREScore.get_final_score: option to reset the anomaly-detection threshold to quickly test different decision boundaries.
  • CAREScore.evaluate_event: option to evaluate only up to event_end.
  • CARE2Compare: ability to download results.
  • CARE2Compare: human-readable columns based on feature descriptions.
  • Visualisation: option to plot criticality alongside the anomaly score in visualisation.plot_score_with_threshold.

Changed:

  • FaultDetectionResult simplified: single-column DataFrames are now returned as Series (anomaly_score, predicted_anomalies).
    • Breaking: changes the output type/shape of FaultDetector.predict; update downstream code that assumes a DataFrame.

Fixed:

  • Visualisation: corrected the y-axis limits in ARCANA bias and ARCANA correction animations. Determination of the maximum value of the y-axis is now based on absolute values of the provided bias data.

Docs:

  • Revised docstrings for CAREScore and CARE2Compare for clarity.
  • Improved “Example - FaultDetector Usage.ipynb” with expanded explanations.

Conditional Autoencoder Added; ARCANA Updated; Save/Load Enhancements

25 Sep 11:12
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

This release adds a conditional autoencoder, updates ARCANA to support conditional architectures, and improves the model save/load workflow.

Added

  • Conditional autoencoder.

Changed

  • Update ARCANA to support conditional autoencoders.
  • Simplify FaultDetector.save_models.
  • Pass verbosity to Autoencoder.get_reconstruction_error.

Fixed

  • Prevent overwriting submodels (ThresholdSelector, AnomalyScore, DataPreprocessor).
  • Fix FaultDetector.tune; normal_index can now be safely ignored.

Deprecated

  • model_subdir argument of the FaultDetector constructor.

Docs

  • Update CARE to Compare references to the latest version.
  • Replace AnomalyDetector references with FaultDetector.

v0.1.1 - FaultDetectionResult.save method fixes; supports to_csv kwargs

28 Aug 09:13
1b7d028

Choose a tag to compare

  • Fixed: FaultDetectionResult.save() now also persists the index of predicted anomalies.
  • Fixed: FaultDetectionResult..save() checks for the existence of tracked ARCANA bias values before saving.
  • Added: FaultDetectionResult.save() supports passthrough kwargs to pandas.DataFrame.to_csv.

No breaking changes.

Initial release

29 Jul 11:43
ee0d0a5

Choose a tag to compare

Initial Energy Fault Detector release. A simple framework for the automated detection of anomalies in operational data from renewable energy systems as well as power grids. It uses autoencoder-based normal behaviour models to identify irregularities in operational data. In addition to the classic anomaly detection, the package includes the unique “ARCANA” approach for root cause analysis and thus allows interpretable early fault detection.