PILOTS (ProgrammIng Language for spatiO-Temporal data Streaming applications)
Java Python HTML C Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
data moved data to data folder Sep 28, 2017
examples moved data to data folder Sep 28, 2017
lib added features to record previous estimated data; passed test for sum Aug 11, 2017
pilots added features to record previous estimated data; passed test for sum Aug 11, 2017
.gitignore
README.md Made small change to setenv script and updated some READMEs (noticed … Apr 20, 2017
build.bat Fixed build system Apr 7, 2017
build.sh Fixed build system Apr 7, 2017
setenv Made small change to setenv script and updated some READMEs (noticed … Apr 20, 2017

README.md

README for PILOTS ver 0.4

PILOTS (ProgrammIng Language for spatiO-Temporal data Streaming applications) is a highly declarative programming language for spatio-temporal streaming applications. It is capable of detecting and correcting data errors through user-defined error signatures.

PILOTS has been successfully applied to avionics applications. Most notably, we have shown that PILOTS can fix data errors due to pitot tube sensor failures which occurred in Air France Flight 447 accident. For more information, visit the PILOTS web site and look at related papers.

In version 0.4, PILOTS has introduced the ability to use machine learning models to predict output based on input streams/producers of data. These learning models utilize sci-kit learn library, and this PILOTS project already includes an offline linear regression model and an online dynamic Bayes classifier model. Further information on utilizing the learning model functionality of PILOTS can be found here.

Note: The following commands shown for the command line are assumed to be implemented in the bash shell

  1. Software Requirements

  • Java JDK 1.8 or newer.
  • (Optional) JFreeChart 1.0.14 or newer to visualize outputs from PILOTS applications.
  • (Optional) JavaCC if you want to modify the PILOTS grammar.
  1. Downloading PILOTS library and its dependencies

  • Download a PILOTS release either from the PILOTS web site or the PILOTS github page.

  • Note that the directory containing this README is referred to as $PILOTS_HOME.

  • Dependencies of the PILOTS library are included in $PILOTS_HOME/lib:

  • JFreeChart requires jfreechart-1.0.14.jar and jcommon-1.0.17.jar ( GNU LGPL, see $PILOTS_HOME/lib/lgpl.html )
  • Json operations require json-java.jar ( The Json License, see $PILOTS_HOME/lib/The JSON License.html )
  1. Getting Started with PILOTS

  • Building a PILOTS jar file

    In $PILOTS_HOME, run

    $ ./build.sh    // (for Windows, use build.bat instead)
    

    pilots.jar will be created under the $PILOTS_HOME/lib directory.

  • Configure aliases

    In order to make sure that aliases for the PLC and PLCSIM compiler commands are correctly figured as well as the definition of $PILOTS_HOME, make sure that you are in the root directory of the project and then use the following command:

    source setenv
    
  • (Optional) Predictive Function setup

    In PILOTS, the predictive function is a function which uses a learning model to generate predicted output based on given input. If you decide to use the predictive function in PILOTS, please see pilots/util/learningmodel/ for instruction.

  • Running example PILOTS programs: See PILOTS tutorial.

  • Running examples with learning model: Refer to the Detailed Overview of Implementing Learning Model

  1. What's New in This Version

  • Simulated Weight Error example: We gave an example to show the ability to solve sensor failure problems using predictive models with error signatures and error functions. Go to pilots/examples/weight_errorsim directory for details.

  • Updated Syntax: The syntax is updated, Go to PILOTS tutorial for reference. The backward compability for old syntax will be removed in the next version. Go to pilots/examples_new_grammar/ directory for examples in new PILOTS syntax.

  • Predictive Function: We implemented a machine learning unility module for training predictive models easily. Go to pilots/util/learningmodel/ for tutorial and reference.

  1. Limitations

  • The error clause only allows a single error function.

  • Language only supports error signatures that are a constant, or a linear function. Examples are:

    • S: e = 100;
    • S(K): e = K, abs(K) > 25;
    • S(K): e = 2*t + K, K < 0, k > -100;
  1. Future Work

  • types of error signatures we would like to support eventually:

    • S(K): e = K
    • S(K): e = K*t^2
    • S: e = t
    • S(K1,K2): e = K1*t + K2, K1 != 0, K2 > threshold
  • Support for multiple error functions (will require additional logic in the error analysis phase)

  • Better syntax support for intervals (in signature constraints)

    • i.e., K in (0,10) or K not in (-10,10)
  • External software components: simulation and visualization

    • More defined and customizable
  • Enhanced visualization (using JFreeChart)

    • Mode likelihood vector
    • Corrected output
    • Error function
  • Simulation mode with support for dynamic simulation inputs

    • Multiple files, each corresponding to a particular input
    • Different directories for the different times
    • Forecast data
  • Enhanced error analysis accuracy

    • Different interpolation methods
    • More types of error signatures