# UbiSOM Interactive
This interactive program highlights the capabilities of the *UbiSOM algorithm* - over a dynamic set of 2D Gaussian clusters that you can freely manipulate.
![Application UI](http://brunomnsilva.com/ubisom/img/UbiSOM-Interactive-small.png "Application UI")
##Requirements & Installation
The software is developed in the *Java* language and distributed in a compressed archive, containing all necessary files.
Consequenlty, the Java **JRE 7 ou higher** is required to execute the application. Download it [here](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) if your computer does not have a JRE installed.
**Download the archive [here](http://brunomnsilva.com/assets/ccounter/click.php?id=ubisom_interactive_v1)**.
###Files and Folders
After deflating the archive you should see the following folder/files:
* **UbiSOM-interactive.jar** - The executable JAR file.
* **ubisom.conf** - The algorithm configuration file.
* **lib/** - Contains required third-party library.
* **run-interactive.sh** - Convenience provided script for execution in *nix machines.
* **run-interactive.bat** -Convenience provided script for execution in Windows machines.
* **README.md** - This file in raw format.
* **LICENSE.txt** - The software license.
###Running the application
You can execute the proper script file according to your platform or open a terminal and execute
$> java -jar UbiSOM-interactive.jar
**Warning:** Double-clicking the JAR will not work, given the JRE will not assume the current directory as the working directory, thus not finding the *ubisom.conf* file.
The UbiSOM algorithm is implemented in a very efficient way. Be advised, however, that the algorithm's computational complexity increases quadratically with the map (lattice) size. Also, the UI takes up most of the processing time in this application.
The Ubiquitous Self-Organizing Map (UbiSOM) algorithm instance used in this application can be parameterized through the *ubisom.conf* file, which complies with the syntax of a Java Properties file.
ubisom.width = 20
ubisom.height = 40
ubisom.beta = 0.8
ubisom.T = 2000
The _ubisom.*_ parameters control the algorithm. If you want to know what these parameters represent and/or change them, you should refer to the published [article](http://journalofbigdata.springeropen.com/articles/10.1186/s40537-015-0033-0) in *Journal of Big Data*.
The _datastream.samples_per_sec_ parameter controls how many *data points* should be generated per second.
Commands are given by keyboard and mouse input; they are depicted in the UI:
* **F12** key changes the "color theme" of the input space and UbiSOM lattice;
* **Left-Click + drag** allows you to move a cluster center;
* **Ctrl + Left-Click** allows you to delete a cluster center;
* **Shit + Left-Click** allows to move a cluster center "forward" in the UI (in case you get overlapping cluster centers);
* **Scroll wheel (up/down)** allows you to change the variance of the corresponding Gaussian distribution of the cluster center;
* **Right-Click** allows you to place a new cluster center;
You can contact me at: brunomnsilva@... (google mail account)