BioJava:Cookbook:Alphabets:CrossProduct

From BioJava

Jump to: navigation, search

How do I make a CrossProductAlphabet such as a codon Alphabet

CrossProductAlphabets result from the multiplication of other Alphabets. CrossProductAlphabets are used to wrap up 2 or more Symbolsinto a single "cross product" Symbol. For example using a 3 way cross of the DNA alphabet you could wrap a codon as a Symbol. You could then count those codon Symbols in a Count or you could used them in a Distribution.

CrossProductAlphabets can be created by name (if the component Alphabets are registered in the AlphabetManager) or by making a list of the desired Alphabets and creating the Alphabet from the List. Both approaches are shown in the example below.

import java.util.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
 
public class CrossProduct {
  public static void main(String[] args) {
 
    //make a CrossProductAlphabet from a List
    List l = Collections.nCopies(3, DNATools.getDNA());
    Alphabet codon = AlphabetManager.getCrossProductAlphabet(l);
 
    //get the same Alphabet by name
    Alphabet codon2 =
        AlphabetManager.generateCrossProductAlphaFromName("(DNA x DNA x DNA)");
 
    //show that the two Alphabets are canonical
    System.out.println(codon == codon2);
  }
}
Personal tools