About
-----
"featured" is a tool to explore high-dimensional data based on dimensionality reduction plots and complementary
visualization modules.

Dependencies
------------
python2.7
java
python-numpy
python-scipy
python-pyqt4
python-matplotlib
freeimage
python-skimage
python-sklearn (>= 0.16)
python-pyqtgraph
cython
libift
bh_tsne

Building
--------
Build the libift wrapper (see externals/libift/README.txt). In case you cannot 
build the wrapper, it is possible to remove this dependency with small changes
to the source code. This makes active learning functionalities unavailable.

Build bh_tsne (see externals/bh_tsne/README.md)

Running
-------
Run "run.py":
$ python2 run.py

Examples
--------
In "sandbox/sklearn.py" there is code to create example datasets for the tool, 
just enable one of the three calls in the "main" function.
You will need to include the path to "featured" in the python search path:
$ export PYTHONPATH=<path/to/featured>
The three datasets are originally part of sklearn. 
The script creates a features.data file into the folder "sandbox/", which can 
be loaded into the tool through "File > Open features file...".

Known issues
------------
pyqtgraph has an internal issue in ScatterPlotItem.py due to indexing numpy
arrays with floats, which causes warnings that slow down the tool substantially.
This can be fixed by manually editing that file, and casting the indices to 
integers (lines 148 and 186 in pyqtgraph version 0.9.10).

python-pyqt4 has changed item data access. For instance, 
item.data(QtCore.Qt.UserRole).toInt()[0] may need to be changed to
item.data(QtCore.Qt.UserRole).

See also externals/libift/README.txt.

License
-------
This software is licensed under the MIT license, except possibly the following
optional dependencies, included under the directory "externals" for convenience:

mlpy 
dcor 
FeaturesProjection
libift wrapper (requires libift or libift_dist)
bh_tsne

