No description, website, or topics provided.
Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Network Randomizer

Network Randomizer is a Cytoscape app for generating random networks, as well as randomizing the existing ones, by using multiple random network models. Further, it can process the statistical information gained from the these networks in order to pinpoint their special, non-random characteristics.

It covers many popular random network models: Erdős–Rényi, Watts–Strogatz, Barabási–Albert, Community Affiliation Graph, edge shuffle, degree preserving edge shuffle, but it also features a new model which is based on the node multiplication.

The statistical module is based on the two-sample Kolmogorov-Smirnov test. It compares random and real networks finding the differences between them and thus providing insight into non-random processes upon which real networks are built.

The app was developed by Gabriele Tosadori and Ivan Bestvina, as a project for the National Resource for Network Biology.

Brief explanation of the code

There are six main classes:

  • CyActivator - run the application, communicates with the cytoscape
  • RandomizerCore - used as a model of the current Cytoscape state (network handling etc.)
  • MenuAction - app initiation
  • OptionsMenu - user interface
  • ThreadEngine - multithread task handling
  • AbstractModel - abstract random network model which is implemented by all the models

To compile a Maven project, all the additional packages need to be pulled. This is automatically done by most IDEs (Eclipse, NetBeans, etc.).

To add a new model, create a child class of the AbstractModel, implement the missing methods, and add the handling code to the OptionsMenu, along with the additional GUI elements.