[[TracNav]] = VizAlign visualisation system = The VizAlign visualisation system enables a developer to analyse a set or series of alignments. This may serve various puposes: * bug hunting * fine tuning of the algorithms * simply to visualise a result == Architecture == The system consists of two parts: * the '''API''', which is statically accessible from anywhere in the developer's code. This API holds a number of alignment sets, represented by instances of {{{de.dfki.km.phaselib.tools.vizAlign.VizAlignDataSet}}}, which is basically list of alignments. The only difference is, that this data structure stores clones of the alignments added, to avoid problems with reused or altered alignments. Each alignment set is accessible via an id string. With this string, the developer can, at any time, add/remove/resort the alignemts in the set. * the '''visualisation system instance''', which renders an (interactive) visualisation of an alignment set. It can be activated by calling the ''visualise(id)'' method of the API. In this case, the default visualisation system is instantiated on the alignment set refered by the id. Alternatively, an arbitrary visualisation system instance can be provided for rendering by calling ''visualise(id, renderer)''. These methods issue the immedeate rendering of the selected alignment set. == Visualisation Systems == === 1. [wiki:VizAlign#a1.TableTime TableTime] === The [wiki:VizAlign#a1.TableTime TableTime] visualisation uses tables to render an alignment as a list of relations. Furthermore, there are two such tables to enable the user to compare two selected alignments from the set. The synchronise function sorts the second table according to the first one, allowing for an easy comparison of the relations included. Among the features planned are an alignment diff and some easy statistical analysis tools. The visualising main class is {{{de.dfki.km.phaselib.tools.vizAlign.tableTime.TableTimeVisualiser}}}. [[Image(tabletime.gif, , TableTime Main Window)]] === 2. DOT-Based === [http://www.graphviz.org/ GraphViz] is a general graph layouting package, containing the DOT tool. The abstract visualisation module {{{de.dfki.km.phaselib.tools.vizAlign.dotGUI.GraphVizBasedVisualiser}}} provides a basic access to this DOT layouter, by generating an input (.dot) file from the alignment to be rendered. The resulting layout is then to be presented by an specification of this abstract module. Each such specification requires the [http://www.graphviz.org/ GraphViz] tools to be installed and to be found in the path. The '''BatikDOTVisualiser''' uses the abstract module to layout the ontology and alignment graphs to scalable vector graphic (.svg) files. It then uses the [http://xmlgraphics.apache.org/batik apache batik package] to render these .svg files on the screen. The visualising main class is {{{de.dfki.km.phaselib.tools.vizAlign.dotGUI.BatikDOTVisualiser}}}. It thus requires the [http://xmlgraphics.apache.org/batik apache batik package]. The batic library provides an extensive user interface, have a look at their [http://xmlgraphics.apache.org/batik/svgviewer.html#zooming viewer manual] and ignore the menu based descriptions. Unfortunately, this visualiser is not able to deal with larger data sets. Furthermore is the layout often quite unappropriate to show a set of relations between the ontology graphs, despite our effort to teach it better. We'd be grateful for any contribution. [[Image(batikdot.gif, , TableTime Main Window)]] == Code Example == Here's some sample code to demonstrate the easy usage of VizAlign: {{{ //////////////////////// SNIP SNIP SNIP ////////////////////////////// // generate an alignment from the scratch AlignmentGenerator generator = new SomeAlignmentGenerator(); Alignment alignment = generator.generateAlignment(emptyAlignment, params); // add the resulting alignment to our VizAlign data set, id "Test" VizAlign.getVizAlign("Test").add(alignment); // let the generator run a second pass alignment = generator.generateAlignment(alignment, params); // add the resulting alignment again. VizAlign.getVizAlign("Test").add(alignment); // Visualise our two alignments using the default visualiser VizAlign.visualise("Test"); //////////////////////// SNAP SNAP SNAP ////////////////////////////// }}}