Home - aaronmalone/lapis GitHub Wiki
About LAPIS
LAPIS is a framework for incorporating computational steering in Java and MATLAB applications. It allows applications to expose their state through a REST interface so that the state can be retrieved and set at runtime by users or other processes. It also allows developers to build networks of computationally-steered applications, each of which can be steered programmatically or manually through the REST interface exposed by each network node. LAPIS is designed to make it simple for engineers and scientists who do not have significant experience in computer programming to easily deploy a communication network for High Performance Computing applications.
LAPIS is inspired by the dissertation of Harrison B. Smith at The Ohio State University and is developed with the support of the National Science Foundation (NSF).
LAPIS features
This is a high-level overview of the features of the LAPIS framework. Each feature will be covered in more depth in the sections on using LAPIS in MATLAB and Java.
Publish variables
The core feature of the LAPIS framework is the ability to "publish" variables, which exposes the variables through LAPIS's REST interface. Within an application, published variables can then be used like regular variables (though they should not be re-assigned). The present values of published variables can be retrieved through LAPIS's REST interface, and the values of these variables can be set through the same interface. LAPIS will propagate the change to the application code in a way that is transparent to the application.
Applications can also publish variables as "read-only" within LAPIS. The values of these variables are still available to be retrieved, but cannot be set, through LAPIS's REST interface.
Creating LAPIS networks
LAPIS allows programmers to easily build networks of computationally-steered applications without the need for sophisticated software packages or network communication libraries. This makes it simple to implement applications which programmatically steer each other. Nodes within a LAPIS network can get and set each other's published variables. LAPIS handles the details of inter-process communication, so that client code remains simple.
REST interface
As mentioned previously, LAPIS exposes the values of published variables through a REST interface for easy debugging, monitoring, and control. The values of published variables can be retrieved. The values can also be set if the variables have not been published as "read-only" within LAPIS. In addition to getting and setting variable values, LAPIS also exposes variable meta-data and network information through its REST interface. Further detail on the REST interface will be provided in a separate section.