TP Biojava - Département Informatique et Interactions

publicité
Master 2 BBSG
POO, langage Java
Laurent Tichit
Biojava est une API open-source Java permettant de manipuler des objets couramment utilisés en bioinformatique1. Il existe deux tutoriels en anglais2 et un autre en français3.
L'API Biojava est en perpétuelle évolution. Sur vos machines, deux versions sont actuellement installées :
la 1.7.1 (appelée legacy) et la 3.0.4.
Biojava 1.7 nécessite l'installation de Java 5 au minimum. Biojava 3.0 nécessite quant à elle Java 6.
Attention: Les librairies BioJava 1.7 et BioJava 3.0 sont architecturées différemment. Chacune possède sa
propre documentation et son propre tutoriel.
Pour ce TP vous aurez besoin de vous servir de façon extensive de l'API Java et de celles de BioJava4 !!
Compilation:
Pour compiler avec un package externe, il vous faut modifier le CLASSPATH (i.e. indiquer au
compilateur d'utiliser, en plus de l'API Java, l'API Biojava). Pour cela :
javac -cp /usr/share/java/biojava.jar MaClasse.java
Exécution:
Pour exécuter, il vous faudra ici aussi modifier le CLASSPATH (i.e. indiquer à la machine virtuelle Java
le chemin vers les classes Biojava ainsi que vers les vôtres). Pour cela :
java -cp /usr/share/java/biojava.jar:. MaClasse
Dans les exercices suivants, nous travaillons sur les exemples des CookBooks.
1 Récupérer une séquence du NCBI
Cet exercice permet de récupérer une séquence sur le site du NCBI
1. Récupérez le code du NCBIFileReader5
2. Compilez, exécutez. Nous devrions obtenir peu ou prou un fichier au format FASTA. Au passage,
notez l'utilisation des classes RichSequence et SymbolList.
3. Pour regarder ce que l'on reçoit, nous allons passer en revue ce que contient notre
RichSequence. Affichez l'identifiant (getURN()), le Taxon(getTaxon()), l'ensemble des
annotations (getRichAnnotation()), les features (getFeatureSet())6.
2 Gene Ontology
Le but de cet exercice est de manipuler le parser OBO pour afficher des données de Gene Ontology. En
science de l'information, une ontologie est un vocabulaire contrôlé et hiérarchisé. Une ontologie peut
donc être facilement représentée sous forme de graphe 7. Le format OBO (Open Biological and
Biomedical Ontologies) est le format le plus utilisé en biologie. D'un point de vue plus général,
l'ontologie est la branche de la philosophie s'intéressant à l'être, c'est-à-dire l'étude des propriétés
générales de ce qui existe. L'acception informatique en découle directement.
1. Récupérez l'ontologie full de Gene Ontology au format OBO 1.2. Regardez-là. La commande
Unix head -n 40 monFichier permet d'afficher les 40 premières lignes d'un fichier trop
gros (pour les dernières lignes c'est la commande tail). Vous noterez que beaucoup de termes
1
2
3
4
5
6
7
Pour plus d'informations, voir le site web : http://biojava.org
http://www.biojava.org/wiki/BioJava:CookBookLegacy et http://www.biojava.org/wiki/BioJava:CookBook
http://www.biojava.org/wiki/BioJava:CookbookFrench
http://www.biojava.org/docs/api1.8.4/ et http://www.biojava.org/docs/api/index.html
http://www.biojava.org/wiki/BioJava:CookBook:ExternalSources:NCBIFetch
http://biojava.org/wiki/BioJava:Tutorial:Sequences_and_Features
voici une vue partielle de Gene Ontology : http://www.geneontology.org/images/diag-immunology-sm.png
sont liés les uns aux autres par des relations de spécialisation (is_a) mais qu'il en existe d'autres.
2. Étudiez le code du parser OBO8. À noter :
- on se sert de args[0],
- on se sert d'un itérateur sur l'ensemble des termes du fichier. Un itérateur est, comme son nom
l'indique, un objet qui va itérer une collection (i.e. passer en revue chaque élément de celle-ci).
La méthode hasNext() retourne True tant qu'il reste des éléments à parcourir. La méthode
next() retourne l'élément en cours et passe au suivant.
3. Récupérez et compilez le code du parser (vous aurez besoin de le modifier quelque peu).
4. Testez le code du parser.
5. Nous aimerions pouvoir créer un graphe de l'ontologie pour pouvoir effectuer des calculs dessus,
afficher le graphe qui la représente, etc. Au passage, nous allons explorer la documentation de
l'interface Ontology. Le code n'accède qu'aux termes de l'ontologie (getTerms()), pas au reste.
Affichez les autres informations de l'ontologie données par getDescription(), getName()
et getTriples() représentant le type de relation entre deux termes de l'ontologie.
GetTriples() peut sembler étrange : cette méthode (voir doc) permet d'accéder à la structure
du graphe et retourne une liste de triplets qui représentent chacun un sommet de départ (le sujet),
un sommet d'arrivée (l'objet), et l'arc qui les relie (le prédicat).
6. Vous rendez-vous compte du problème ? Heureusement que les développeurs ont corrigé le
problème dans la version 1.8. Récupérez la version 1.8.4 de biojava.jar sur le site et exécutez
à nouveau votre code en vous servant de celle-ci.
7. Modifiez le code pour lister tous les types de relation existant dans Gene Ontology.
8. Maintenant que nous nous servons de la version 1.8.4, étudions le code de OBO2Graphviz 9.
GraphViz est un outil de dessin de graphe. Cette classe produit un fichier d'entrée pour le logiciel
Graphviz. On va donc produire une belle image de notre ontologie préférée. À noter :
- on se sert de args[3]. Vous pouvez simplifier le code pour ne passer que 2 arguments : le nom du
fichier et la racine du sous-arbre que vous voulez dessiner. La racine doit être une chaîne de la
forme GO:00XXXXX.
- les méthodes des chaînes split(), replace() et trim() ont le même rôle que leur
équivalent Perl ou Python.
- on note au passage le hack peu élégant faisant intervenir le caractère 'ä' (umlaut a).
9. Compilez et exécutez. Sous Unix, pour que la sortie de votre programme aille directement dans un
fichier : monProgramme > monFichier. Ici, on fera donc :
java -cp biojava.jar:. OBO2GraphViz GO:0000003 > reproduction.dot
10. Regardez le contenu du fichier .dot obtenu. C'est l'un des nombreux formats de graphe existants.
11. Créez une image grâce à Graphviz :
dot -Tpng reproduction.dot > reproduction.png
Graphviz possède énormément de possibilités10,
12. Affichez-la : eog reproduction.png &
13. Modifiez le code pour créer un graphe par type de relation existant et éliminer les éventuel termes
obsolètes.
3 RichSequence.IOTools
•
•
8
9
10
11
12
Regardez la documentation de la classe Biojava org.biojavax.bio.seq.RichSequence.IOTools. Cette
classe permet de créer des parsers pour différents formats de fichiers utilisés en bio-informatique,
ainsi que des méthodes permettant de créer des documents dans ce format.
A l'aide de cette documentation, ainsi que des deux exemples du tutoriel 11,12, créez deux exemples
permettant de traduire d'un format de fichier en un autre. Pour cette question, vous rendrez les
codes source Java ainsi que les deux formats de fichier d'entrée. Bien entendu, utilisez 4 formats
différents.
http://www.biojava.org/wiki/BioJava:CookBook:OBO:parse
http://www.biojava.org/wiki/BioJava:CookBook:OBO:visualize
pour plus d'informations : http://graphviz.org/
http://biojava.org/wiki/BioJava:Cookbook:SeqIO:ReadGESBiojavax
http://biojava.org/wiki/BioJava:Cookbook:SeqIO:GBtoFasta
Téléchargement