BioJava:CookBookItaliano:SeqIO:ReadGES
Come posso leggere un file in formato GenBank/EMBL/UniProt/FASTA/INSDseq?
Fin dall’inizio, tramite le librerie Biojava era possibile leggere file nei formati più comuni utilizzati in bioinformatica. A partire dalla versione 1.5 di Biojava con l’aggiunta delle estensioni Biojavax, il modo di leggere i file è cambiato un pò. Anche se è possibile ancora leggere i file contenenti le sequenze utilizzando la classe SeqIOTools, essa ora è stata segnata come deprecata e sostituita dalla classe RichSequence.IOTools. Questa classe a differenza di quella deprecata ha dei metodi più specifici che tengono in considerazione il formato dei file per permettere,inoltre, una migliore corrispondenza con il database BioSql. Ora infatti è obbligatorio l’uso dei namespace. L’estensione Biojavax permette anche una semplice creazione di un parser per la lettura di un file in un formato personalizzato, anche se questo è una situazione che avviene raramente. La classe RichSequence.IOTools da la possibilità di leggere file contenenti DNA, RNA or proteine nei seguenti formati:
- EMBL (nativo o XML)
- FASTA
- GenBank
- INSDseq
- UniProt (nativeo o XML)
Questa classe ha anche un metodo, readFile, per leggere un file indovinandone il formato.
Seguendo questo link è possibile scaricare alcuni file di esempio.
```java import java.io.BufferedReader; import java.io.FileReader;
import org.biojavax.SimpleNamespace; import org.biojavax.bio.seq.RichSequence; import org.biojavax.bio.seq.RichSequenceIterator;
public class ReadGES_BJ1_6{
/*
* ReadGES_BJ1_6.java -E' un semplice programma per leggere un file di sequenza
* noto il suo formato. Esso utilizza le estensioni Biojavax che si trovano in BJ1.6.
*
* Basta passare alla classe il path del file come args[0]
*/
public static void main(String[] args) {
BufferedReader br = null;
SimpleNamespace ns = null;
try{
br = new BufferedReader(new FileReader(args[0]));
ns = new SimpleNamespace("biojava");
// Si può utilizzare uno qualsiasi dei metodi presenti nelle BioJava 1.6 API
RichSequenceIterator rsi = RichSequence.IOTools.readFastaDNA(br,ns);
//Se un file contiene più sequenze è possibile utilizzare un iteratore per leggerle tutte
while(rsi.hasNext()){
RichSequence rs = rsi.nextRichSequence();
System.out.println(rs.getName());
}
}
catch(Exception be){
be.printStackTrace();
System.exit(-1);
}
}
} ```