### Presentation

*JahmmViz* is the graphical user interface (GUI) of the *Jahmm*
library. The version proposed below is the one provided by the latest release
of *Jahmm*.
You can launch it using *Java Web Start* (a means of downloading a Java
application and run it directly without any complex installation process).

**Launch JahmmViz v0.2.5 using Java Web Start.**

Only run it if you trust it will not be harmful in any way;
it would be better to glance over the sources and compile it yourself.
The JAR files have been signed using the certificate available
here. You can import it using
`javaws` (the Java Web Start front-end, found in the control panel
under Microsoft Windows), but you do not have to, since it will be
imported automatically if you click on the link above.

Compiling JahmmViz requires Java 1.5.0 (or newer); download it on Sun site and the following libraries:

*Jung*(download the jar file), a graph drawing library;- Apache's collections (download the jar file), a data structure library needed by Jung.

To launch it, add all the jar files to your classpath (or extract them
-- `jar xf` -- in a directory that is included in your classpath), and
launch the class `be.ac.ulg.montefiore.run.jahmm.apps.JahmmViz`:

java be.ac.ulg.montefiore.run.jahmm.apps.JahmmViz

### How to use JahmmViz

This screenshot shows *JahmmViz* in action.

The following is a description of the screenshot's windows:

**Top-right window.**It is the*main panel*. The top of the window lists the open windows (which depict an HMM, a set of observation sequences or a state sequence). The lists can be used to edit a window name. Each main panel button triggers an action:*Learn*Creates a HMM that models a sequence of observations. If the learning fails throwing an exception, it might be because you tried to estimate a gaussian distribution with very few observations (at least*n+1*observations are required to estimate the parameters of a multivariate gaussian distribution of dimension*n*). It means that the HMM is composed of too many states (or that you used few/short observation sequences).*Create HMM*Builds a new HMM. A dialog asks its number of states and the type of observations on which it operates.*Most likely state sequence*Finds a sequence of HMM states that "best match" an observation sequences.*Sequence probability*Computes the probability of an observation sequence for a given HMM.*Generate sequences*Generates a few observation sequences using a HMM.*Read/Write sequences*Reads/Writes a set of observation sequences from/to file. Examples of such files are given below. When reading:*If the observations are integers*, it is asked to provide an upper bound of the observations read. This upper bound must be strictly greater than all the observations. The memory used increase with this value.*If the observations are vectors of reals*, you will be prompted for the vector's dimension.

*Read/Write HMM*Reads/Writes a HMM from/to file.

To select on which HMM, set of observation sequence or state sequence an algorithm operates, simply select it in the main panel's lists. For example, to compute a "most likely state sequence", you need to first select a HMM and a set of observation sequences (and, in the window depicting this set, select exactly one sequence).

**Top-left window**This window depict a set of observation sequences. In this case, each observation is a vector (between brackets).**Small, top window**depicts a state sequence. Each number match the a state number.**Bottom-left window**depicts a HMM made of 5 states. The size of the states (red circles) gives its initial (pi) value; the most likely first state is thus the top-left one. To see the information associated to each state (*pi*value and Observation Probability Distribution Function), put the cursor a few seconds on a state; a tooltip will appear. The OPDF syntax for a discrete OPDF might look like:

`OPDF [ 0.1 0.5 0.6 0.7 ]`

In this example, the probability of the observation "0" is "0.1", "1" is "0.5", "2" is "0.6", and "3" is "0.7". An example of multivariate gaussian distribution is:

`OPDF [ Mean: [ 1. 2. ] ]`

Only the mean value of the gaussian distribution is given (not its covariance matrix). In the example above, it is a 2-dimentional vector; its first dimension value is "1" and the second is "2".**Bottom-right window**The information associated to a state. This dialog appears when one right-clicks on a HMM state. It is allowed to modify the initial probability (*pi*) of this state, the transition probability to the other states and its observation probability distribution function (the screenshot shows, a 3-variate gaussian distribution; its mean vector is shown on the left, its 3x3 covariance matrix on the right).

Three (very simple) observation sequences are provided for testing:

- testInteger.seq: sequences of integer; all the values are smaller than 10.
- testReal.seq: sequences of reals.
- testVector.seq: real vectors sequences of2-dimensional real vectors.

Back to Jahmm homepage