## org.biojava.bio.symbol
Interface CrossProductAlphabet

public interface CrossProductAlphabet
extends Alphabet

Cross product of a list of alphabets. This is provided primarily to assist in the implemention of a `multi-headed' hidden markov model. For instance, in a pair HMM intended for aligning DNA sequence, the emmision alphabet will be (DNA, gap) x (DNA, gap). To actualy make a CrossProductAlphabet, either roll your own, or use the CrossProductAlphabetFactory object.

Author:
  Thomas Down

Inner classes inherited from class org.biojava.bio.symbol.Alphabet
`Alphabet.EmptyAlphabet`

Fields inherited from interface org.biojava.bio.symbol.Alphabet
`EMPTY_ALPHABET`

Method Summary
`java.util.List` `getAlphabets()` Return an ordered List of the alphabets which make up this compound alphabet.
`CrossProductSymbol` `getSymbol(java.util.List rl)` Get a symbol from the CrossProductAlphabet which corresponds to the specified ordered list of symbols.

Methods inherited from interface org.biojava.bio.symbol.Alphabet
`contains, getName, getParser, validate`

Methods inherited from interface org.biojava.bio.Annotatable
`getAnnotation`

Method Detail

### getAlphabets

    public java.util.List getAlphabets()

  Return an ordered List of the alphabets which make up this compound alphabet. The returned list should be immutable.

### getSymbol

    public CrossProductSymbol getSymbol(java.util.List rl)
                                 throws IllegalSymbolException

  Get a symbol from the CrossProductAlphabet which corresponds to the specified ordered list of symbols.
  Parameters:
    `rl` - A list of symbols.
  Throws:
    IllegalSymbolException - if the members of rl are not Symbols over the alphabets returned from `getAlphabets`