ETH Zuerich - Homepage
Systems Optimization (SOP)

Wichtiger Hinweis:
Diese Website wird in älteren Versionen von Netscape ohne graphische Elemente dargestellt. Die Funktionalität der Website ist aber trotzdem gewährleistet. Wenn Sie diese Website regelmässig benutzen, empfehlen wir Ihnen, auf Ihrem Computer einen aktuellen Browser zu installieren. Weitere Informationen finden Sie auf
folgender Seite.

Important Note:
The content in this site is accessible to any browser or Internet device, however, some graphics will display correctly only in the newer versions of Netscape. To get the most out of our site we suggest you upgrade to the latest Netscape.
More information

ETH Zürich - D-ITET - TIK - Bicat
print page
this webpage might no longer be updated more...

Developer's Guide

This document contains resources for people that want to extend BicAT by adding new features (or fixing bugs). Here we shortly describe the structure of the BicAT project. Detailed documentation is provided within the Javadoc (see the binaries distribution).

Design of the BicAT project

The project code is organized in a hierarchy of packages which reflects its logical structure, as follows:

bicat BicAT Tool package
bicat.gui Contains the main class, BicatGui and the classes for the three visualization tabs
bicat.gui.window Contains the classes to generate all the auxiliary dialogs
bicat.run_machine Contains classes needed to start the separate threads for the bi/clustering algorithms
bicat.algorithms.opsm Contains the OPSM implementation
bicat.algorithms.clustering Contains the implementations of the two clustering methods, HCL and K-Means
bicat.preprocessor Handles loading and preprocessing of the data
bicat.postprocessor Handles the post-processing procedures (search, filter, gene pair analysis)
bicat.util Contains utility code, used by other subpackages

The class which contains the code to start the application is bicat.gui.BicatGui. This class also manages all processing, visualization and management procedures during the application run. In the Figure below you can see a scheme of the project organization (click on the Figure to enlarge).

Snapshot Project Scheme

Class bicat.gui.BicatGui is responsible for the GUI layout and event handling. Events are generated by either: 1) selection of nodes in the left handside tree, which trigger content updates in respective tabs (right), or 2) by choosing a command in the main menu bar, which usually triggers a procedure such as run an algorithm, load, preprocess, postprocess and export.

Visualization (Tree Selection Events)

By selecting nodes in the tree placed in the left handside part of the main window, the content represented in the three visualization tabs changes accordingly. Code that handles these events belongs to the valueChanged(TreeSelectionEvent event).

The three tabs of the right handside are implemented through PicturePane, GraphicPane and AnalysisPane classes (all in bicat.gui subpackage).

Processing (Menu Command Events)

In the method actionPerformed(ActionEvent event) all events associated with the menu bar of the main window are handled. Usually, a pressed button triggers the generation of an auxiliary dialog which asks the user for the parameters needed to execute a certain task.

In general, auxiliary dialogs generated are all classes placed in a subpackage bicat.gui.window.

Code responsible for executing the code of the different biclustering and clustering algorithms offered by the BicAT Tool is placed in the bicat.run_machine subpackage. The implementation of BiMax algorithm and the two clustering algorithms HCL (Hierarchical) and K-Means are placed in the subpackages bicat.run_machine.bimax and bicat.run_machine.clustering, respectively.

Remaining algorithms have been implemented in C++, and are accessed by the BicAT Tool through the shared libraries created for the three supported platforms (i.e. Windows, Linux and Solaris).


Results obtained through the execution of the provided algorithms need to be properly stored, for further use and analysis.

The main class holds a data structure (linked list) of datasets loaded in a session. A bicat.biclustering.Dataset contains all information about a dataset: matrices (input matrix, preprocessed and discrete matrices, the list of biclusters, clusters and list of filtered biclusters, as well as a number of auxiliary structures holding names, references, etc). By selecting a node in the tree corresponding to a certain dataset, a variable currentDataset is made up-to-date, this corresponding to the update of the matrix being visualized in the right hand side (Picture) panel.

Back to the BicAT main page.

© 2018 Institut TIK, ETH Zürich | Imprint | Last updated: Wed, 21 Mar 2018 12:24 | Valid XHTML 1.0! Valid CSS! Valid XHTML 1.0