/se-test-framework

A prototypical implementation for the construction of data sets containing False Data Injection Attacks and evaluating the performance of detecting False Data Injection Attacks using machine learning-based models.

Primary LanguagePythonMIT LicenseMIT

se-test-framework

A prototypical implementation for the construction of data sets containing False Data Injection Attacks (FDIAs) and evaluating the performance of detecting FDIAs using machine learning-based models.

NOTE: A comprehensive documentation is under development.

Quick Usage Guide

This prototypical implementation is divided into two parts: the MATLAB part and the Python part.

The following listing states the functionalities offered by each file in the corresponding part.

NOTE: All absolute and relevant paths in the scripts pointing to saved data sets (e.g., .mat or .pkl files) have to be adjusted accordingly.

  • Matlab
    • get_state_vars_with_load.m: Main function for the generation of measurement data based on load data.
    • gen_load_data.m: An example, showing the usage of the function get_state_vars_with_load. In this specific example, load data that can be freely obtained from the New York Independent System Operator (NYISO) is used. For better usability, an example load data is included under matlab/data/nyiso_2013/*.csv. New load data can be obtained any time by visiting the homepage of NYISO.
  • Python
    • convert_measurement_data.ipynb: The measurement data set generated by gen_load_data.m in Matlab is saved to a .mat file. Usually, every year of the NYISO data is saved to its own .mat file (e.g., nyiso_load_13.mat). By use of this notebook, all the single .mat files can be imported and converted to a single .pkl file. This main .pkl file, containing all the measurement data sets, is then used in the Python files described below.
    • tf2.py: Prototypical implementation of an RNN based on Tensorflow.
    • svm.py: Prototypical implementation of an SVM based on Scikit.
    • models/data_generator.py: Module for the generation of data sets containing False Data Injection Attacks, based on the measurement data set generated by gen_load_data.m in Matlab.
    • models/configs.py: Module containing all the config definitions, classes and various methods. A detailed documentation is under development.