BioJava:CookBookItaliano:Alphabets:Custom

Come posso creare un Alfabeto personalizzato con Simboli personalizzati?

Questo esempio mostra la creazione di un alfabeto binario che ha 2 Simboli zero e uno. La personalizzazione dei Simboli e dell’Alfabeto può essere utilizzata per costruire nuove Liste di Simboli, Sequenze, Distribuzioni, etc.

```java import org.biojava.bio.symbol.*; import org.biojava.bio.*; import java.util.*;

public class Binary {

   public static void main(String[] args) {

       //crea il Simbolo zero senza nessuna annotazione
       Symbol zero =
           AlphabetManager.createSymbol("zero", Annotation.EMPTY_ANNOTATION);

       //creo il Simbolo uno
       Symbol one =
           AlphabetManager.createSymbol("one", Annotation.EMPTY_ANNOTATION);

       //inserisco i 2 simboli in un Set
       Set symbols = new HashSet();
       symbols.add(zero); symbols.add(one);

       //creo l'alfabeto binary
       FiniteAlphabet binary = new SimpleAlphabet(symbols, "Binary");

       //itero i vari elementi dell'alfabeto per verificare che tutto funzioni correttamente
       for (Iterator i = binary.iterator(); i.hasNext(); ) {
         Symbol sym = (Symbol)i.next();
         System.out.println(sym.getName());
       }

       //Bisogna registrare i nuovi alfabeti con l'AlphabetManager
       AlphabetManager.registerAlphabet(binary.getName(), binary);

       /*
        * Il nuovo alfabeto cosi' creato e' stato registrato con 
        * l'AlphabetManager con il nome "Binary". Per ottenere l'istanza di
        * di quest'ultimo basta richiamarlo con il nome assegnato alla precendente istanza
        */
       
       Alphabet alpha = AlphabetManager.alphabetForName("Binary");

       //verifico che siamo uguali
       System.out.println(alpha == binary);
     }
   }```