BioJava:CookBookItaliano:SeqIO:ReadGES

From BioJava

Jump to: navigation, search

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.

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);
		}
	}
}
Personal tools