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
- 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.
- Downloading PILOTS library and its dependencies
Note that the directory containing this README is referred to as
Dependencies of the PILOTS library are included in
- JFreeChart requires
jcommon-1.0.17.jar( GNU LGPL, see
- Json operations require
json-java.jar( The Json License, see
$PILOTS_HOME/lib/The JSON License.html)
- Getting Started with PILOTS
Building a PILOTS jar file
$ ./build.sh // (for Windows, use build.bat instead)
pilots.jar will be created under the
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:
(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
- 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.
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;
- 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