Skip to content

seanstappas/prometheus-ai

Repository files navigation

Prometheus AI

Build Status

Prometheus AI model, containing the following layers:

The NN and META are basic skeletons at this point.

knn_graph

Background

For a basic overview of the theory and design behind Prometheus, see the reports provided in the reports directory. For further background on the theory of Prometheus, contact Prof. Vybihal.

Dependencies

Java 8

Java 8 is used in Prometheus for lambda expressions and Optional objects.

Maven

This project is a Java Maven project, with library dependencies specified in the pom.xml file. Maven allows dependencies to be specified in a file without needing to keep track of jar files. An introduction to Maven can be found here.

Google Guice

Google Guice is used as the backbone for the various dependencies within the code. Guice neatly allows the implementation of various important OOP principles, like dependency inversion. An introduction to Guice can be found here. For more information about the Guice package structure used for Prometheus, see the Java Package Structure section.

Mockito

Mockito is used to create mock objects for behavior-driven unit tests. Mock objects are essentially "fake" versions of objects used to simulate dependencies in unit tests. Mockito couples very well with the dependency injection of Guice. An overview of Mockito can be found here and an example of behavior-driven development (BDD) with Mockito can be found here.

TestNG

TestNG is a testing library much like JUnit. It is used for all the unit tests and integration tests found under the test directory.

Apache Commons Lang 3

Apache Commons Lang provides many nice objects to avoid boilerplate code for Java objects. It is used for creating the hashCode(), equals() and toString() methods of most objects in the code. Details on this library can be found here.

GraphStream

Graphstream is used for plotting the KNN network. Details on this library can be found here.

Directory Structure

Here is a list of the each top-level directory and its purpose.

Directory Contents
data/ Input data files for the KNN.
docs/ Javadoc files.
graphs/ Generated graphs from the various graphing tools.
reports/ Reports on Prometheus.
src/ Source code.

Java Package Structure

Each Java package (with the exception of tags) has the following structure for its sub-packages:

Package Contents Example
api Public classes and interfaces. Only code relevant for a user of the package should be present here. es/api/
guice Public Guice module. This module will be used by a user of the package and should install an internal Guice module. See ExpertSystemModule.java for an example. es/guice/
internal Internal classes and interfaces. Internal code that does not concern a user is found here, as well as an internal Guice module to install internal classes. See ExpertSystemInternalModule.java for an example. es/internal/

Javadoc

Javadoc can be found here.

Releases

No releases published

Packages

No packages published