JNetDiscovery

JNetDiscovery is a prototyping environment written in Java. It currently allows researchers
and programmers to try many different algorithms and processes all written in Java from within
a single Java runtime environment. JNetDiscovery provides an environment for the exploration
of data in an intuitive way. Instead of changing parameters, compiling, and re-running a
program, parameter changes can be performed and tested in one window. The following figure
shows a screenshot of the JNetDiscovery main window.

A screenshot of the main JNetDiscovery interface

JNetDiscovery is a limited graphical programming language as well as a dataflow programming
environment, where each box represents a function. The inputs and outputs between functions
are represented by the lines that connect the boxes. The output of any box can be visualized
or saved by interacting with that box. The dataflow programming aspects greatly simplify data
exploration and method testing over traditional software development environments. Because the
results of each box are usually cached, only the functions for which parameters have changed
and those boxes that rely on them have to be rerun for each test, and the results of every
step can be checked once a chain has run.

Referring to the figure above, the large, upper left frame of the window is the workspace,
wherein operations can be arranged and chained together. Operations are represented with their
inputs along the top, and outputs along the bottom. Once a chain of operations is arranged and
configured, each operation can be evaluated individually and its results can be viewed,
allowing a user to understand what the intermediate steps of processing produced. The toolbox
on the right side of the window contains a registry of the various operations that can be used
on the workspace. These operations are categorized into tabs in the toolbox, according to what
kind of data they work with, or what kind of process they perform. In the figure, there are
groups for Database, Graph, Timeseries, and Utility, but JNetDiscovery has a plugin system
that allows addition of new operations to the toolbox, in existing or new categories. The blue
shaded region at the bottom of the window contains an output console showing status messages,
diagnostic output, and help text for operations in the toolbox. Below the output console is a
bar showing memory usage.

JNetDiscovery includes several data input operations that are capable of reading the output of
tools from the JCactus package. These input operations are coded with the proper queries to
access JCactus databases, and the ability to parse the stored data, thus relieving the user of
the data from such burdens. Once read, the JCactus data will be represented in one of many
forms that other JNetDiscovery operations can analyze and manipulate. These representations
include web topology graphs, document content graphs, sets of structured documents, and
statistical document vectors. More complex analysis chains can combine information extracted
from multiple representations to produce results.