BioJava:CookbookFrench:SeqIO:ReadGES
Comment Faire pour lire un fichier en format GenBank, swissprot ou EMBL?
La classe SeqIOTools contient des méthodes pour lire les fichiers en format GenBank, SwissProt et EMBL. Parce qu’un fichier ecrit dans un de ces formats peut contenir plus d’une séquence, SeqIOTools retournera un SequenceIterator qui peut être utilisé pour itérer sur toutes les séquences. Un des avantages de ce modèle est que les objets Sequences ne sont lues et crées qu’au besoin ce qui permet de traiter de grandes collections de séquences avec des ressources modestes.
Lire un fichier GenBank
```java import org.biojava.bio.seq.*; import org.biojava.bio.seq.io.*; import java.io.*; import org.biojava.bio.*; import java.util.*;
public class ReadGB {
public static void main(String[] args) {
BufferedReader br = null;
try {
// créer un BufferedReader pour lire le fichier specifié par args[0]
br = new BufferedReader(new FileReader(args[0]));
}
catch (FileNotFoundException ex) {
// ne peut trouver le fichier spécifié par args[0]
ex.printStackTrace();
System.exit(-1);
}
// lire le fichier GenBank
SequenceIterator sequences = SeqIOTools.readGenbank(br);
// itérer parmi les séquences
while(sequences.hasNext()){
try {
Sequence seq = sequences.nextSequence();
// à vous de décider quoi faire avec la séquence
}
catch (BioException ex) {
// pas en format GenBank
ex.printStackTrace();
}catch (NoSuchElementException ex) {
// requête faite pour une séquence lorsqu'aucune n'existe
ex.printStackTrace();
}
}
}
} ```
Lire un fichier SwissProt
```java import org.biojava.bio.seq.*; import org.biojava.bio.seq.io.*; import java.io.*; import org.biojava.bio.*; import java.util.*;
public class ReadSwiss {
public static void main(String[] args) {
BufferedReader br = null;
try {
// créer un BufferedReader pour lire le fichier spécifié par args[0]
br = new BufferedReader(new FileReader(args[0]));
}
catch (FileNotFoundException ex) {
// ne peut trouver le fichier spécifié par args[0]
ex.printStackTrace();
System.exit(-1);
}
// lire le fichier SwissProt
SequenceIterator sequences = SeqIOTools.readSwissprot(br);
// itérer parmi les séquences
while(sequences.hasNext()){
try {
Sequence seq = sequences.nextSequence();
// votre traitement de la séquence
}
catch (BioException ex) {
// pas en format SwissProt
ex.printStackTrace();
}catch (NoSuchElementException ex) {
// requête faite pour une séquence lorsqu'aucune n'existe
ex.printStackTrace();
}
}
}
} ```
Lire un fichier EMBL
```java import org.biojava.bio.seq.*; import org.biojava.bio.seq.io.*; import java.io.*; import org.biojava.bio.*; import java.util.*;
public class ReadEMBL {
public static void main(String[] args) {
BufferedReader br = null;
try {
// créer un BufferedReader pour lire le fichier spécifié par args[0]
br = new BufferedReader(new FileReader(args[0]));
}
catch (FileNotFoundException ex) {
// ne peut trouver le fichier specifie par args[0]
ex.printStackTrace();
System.exit(-1);
}
// lire le fichier en format EMBL
SequenceIterator sequences = SeqIOTools.readEmbl(br);
// itérer parmi les séquences
while(sequences.hasNext()){
try {
Sequence seq = sequences.nextSequence();
// travail à faire sur votre séquence
}
catch (BioException ex) {
// pas en format EMBL
ex.printStackTrace();
}catch (NoSuchElementException ex) {
// requête faite pour une séquence lorsqu'aucune n'existe
ex.printStackTrace();
}
}
}
} ```
GeneralReader, un lecteur générique (avec BioJava 1.3)
```java import java.io.*;
import org.biojava.bio.*; import org.biojava.bio.seq.*; import org.biojava.bio.seq.io.*;
public class GeneralReader {
/**
* Ce programme peut lire n'importe quel format de fichier supporté par SeqIOTools. Il prend
* trois arguments: le 1er est le nom du fichier, le 2ème est le type de format et le
* 3ème est le type de résidus contenus dans la séquence. Les combinaisons illégales
* comme une séquence d'ADN en format SwissProt lanceront une exception.
*
* Les formats supportés sont: (minuscule ou majuscule).
*
* FASTA
* EMBL
* GENBANK
* SWISSPROT (ou swiss)
* GENPEPT
*
* Les séquences des types suivants sont permises: (minuscule ou majuscule).
*
* DNA
* AA (or Protein)
* RNA
*
*/
public static void main(String[] args) {
try {
// préparer un BufferedReader pour entrée/sortie de fichier
BufferedReader br = new BufferedReader(new FileReader(args[0]));
// le format du fichier de séquence
String format = args[1];
// l'Alphabet
String alpha = args[2];
/*
* obtenir un SequenceIterator sur toutes les séquences du fichier.
* SeqIOTools.fileToBiojava() retourne un Object. Si le fichier lu est
* en un format d"alignement comme MSF, un objet de type Alignment
* est retourné. Sinon un SequenceIterator est retourné.
*/
SequenceIterator iter =
(SequenceIterator)SeqIOTools.fileToBiojava(format, alpha, br);
// un travail à faire sur votre séquence
SeqIOTools.writeFasta(System.out, iter);
}
catch (FileNotFoundException ex) {
// ne peut trouver le fichier spécifié par args[0]
ex.printStackTrace();
}catch (BioException ex) {
// format de fichier non-valide
ex.printStackTrace();
}catch (IOException ex){
// erreur à l'écriture du fichier FASTA
ex.printStackTrace();
}
}
} ```