BioJava:CookBookItaliano:Sequence:SubSequence
Come posso ottenere una parte di una Sequenza?
In genere, data una sequenza, che sia nucleotidica o proteica, noi potremmo essere solamente interessati ad esaminare o le prime 10 basi o una regione compresa fra 2 punti. Come è possibile stampare una sotto-sequenza su un OutputStream come lo StdOut?
Biojava utilizza un sistema di coordinate biologiche per identificare le basi. La prima base ha indice 1 e l’ultima ha indice uguale alla lunghezza totale della sequenza; a differenza degli indici assegnati ai caratteri di una stringa che partono da 0 fino a (lunghezza totale - 1). Se si cerca di accedere ad una regione al di fuori di (1..lunghezza totale) viene sollevata una eccezione di tipo IndexOutOfBoundsException.
Ottenere una Sub - Sequence
` SymbolList symL = null;`
` //codice per generare una SymbolList`
` //prendo il primo simbolo`
` Symbol sym = symL.symbolAt(1);`
` //le prime tre basi`
` SymbolList symL2 = symL.subList(1,3);`
` //le ultime tre basi`
` SymbolList symL3 = symL.subList(symL.length() - 3, symL.length());`
Stampa una Sub - Sequence
` //stampo le ultime tre basi di una SymbolList o di una Sequence`
` String s = symL.subStr(symL.length() - 3, symL.length());`
` System.out.println(s);`
Codice completo
```java import org.biojava.bio.seq.*; import org.biojava.bio.symbol.*;
public class SubSequencing {
public static void main(String[] args) {
SymbolList symL = null;
//creo una RNA SymbolList
try {
symL = RNATools.createRNA("auggcaccguccagauu");
}
catch (IllegalSymbolException ex) {
ex.printStackTrace();
}
//prendo il primo simbolo
Symbol sym = symL.symbolAt(1);
//prendo le prime tre basi
SymbolList symL2 = symL.subList(1,3);
//prendo le ultime tre basi
SymbolList symL3 = symL.subList(symL.length() - 3, symL.length());
//stampo le ultime tre basi
String s = symL.subStr(symL.length() - 3, symL.length());
System.out.println(s);
}
} ```