Projet de Programmation Structurée 1
Transcription
Projet de Programmation Structurée 1
Projet de Programmation Structurée 1 Outils Emboss Objectif du projet Emboss est une suite d'outils bio-informatiques pour l'analyse de données génomiques. Elle comporte plusieurs dizaines de programmes1. Ces programmes fonctionnent tous sur le même principe : • lire un/des fichier(s) de données biologiques • effectuer une analyse/un calcul • produire un/des fichier(s) résultat. L'objectif de ce projet est de réaliser une variante de deux d'entre eux, parmi : 1. biosed 2. btwisted 3. compseq 4. freak 5. wordcount Vous trouverez sur ma page web les deux outils qui sont assignés à votre binôme. Les spécifications • • • • • • • • • • Les spécifications des outils emboss se trouvent décrites dans le manuel des outils 1. Of course, the documentation is written in english. Attention, les outils emboss peuvent acquérir leurs arguments en ligne de commande, mais également en mode interactif. Nos programmes acquerront leurs arguments uniquement depuis la ligne de commande (sys.argv), et non interactivement (donc pas de input()). Il vous faudra des fichiers de données pour tester le programme : ce sont des fiches Embl 2,ou des fichiers Fasta3. Testez votre programme avec différents exemples pour être sûr qu'il fonctionne, quel que soit le fichier, par exemple : X54812, X55923, X65913, X65922, X65923, etc. Enregistrez le format TEXT avec l'extension .embl et le format FASTA avec l'extension .fasta. Vos programmes (contenant le programme principal) devront avoir le même nom que les outils emboss. Ex : biosed.py, btwisted.py, etc. Veillez à ce que les fichiers produits par vos programmes soient des copies conformes à ceux produits par les « vrais » outils (ou bien s'en rapprochent le plus possible). Veillez à ce que les messages d'erreur soient également identiques. Vous devrez également rédiger un fichier README.txt ou README.md contenant des explications quant à votre travail : limitations, options supplémentaires, etc. Aucun autre fichier ne sera toléré (.DS_Store, *~, *.pyc, …). ls -a (ou ls -al) pour lister les fichiers cachés. Utilisez la commande rm pour les supprimer. L’ensemble de vos fichiers python (deux scripts, plus d’autres modules python que vos scripts partagent, plus le README) seront rassemblés ans une archive au format zip dont le nom sera projetPS1-binome1-binome2.zip. Il est impératif de respecter scrupuleusement ces spécifications. 1 Documentation : http://emboss.sourceforge.net/apps/release/6.6/emboss/apps/ 2 Exemple EMBL : http://www.ebi.ac.uk/ena/data/view/X65923&display=text 3 Exemple FASTA : http://www.ebi.ac.uk/ena/data/view/X65923&display=fasta 1 Comparaison avec Emboss • • Emboss est installé dans les salles TP, donc les différents programmes sont accessibles depuis le terminal. Vous vous en servirez pour comparer avec vos propres résultats. Pour savoir quel résultat doit produire votre programme, exécutez la commande voulue avec les bons arguments en ligne de commande (voir documentation). Une fois que vous avez récupéré au moins un fichier de données, exécutez les commandes emboss pour avoir une idée des fichiers résultats que vos programmes doivent produire. Exemple : compseq -auto -word 3 -reverse true X54812.embl Le fichier de sortie X54812.comparaison doit être produit. Note : les « vrais »outils emboss sont, par défaut, des commandes interactives. Pour désactiver le mode interactif et acquérir les arguments uniquement depuis la ligne de commande, l'option -auto est nécessaire. En revanche, comme vos outils ne seront pas interactifs, l’option -auto, implicite, n’est donc pas nécessaire. Gestion des arguments de la ligne de commande La partie algorithmique du projet est relativement limitée. Il vous est donc demandé d'implémenter un maximum d'options (qui peuvent être placées dans n'importe quel ordre sur la ligne de commande). • • • • • • Options communes à tous les programmes : sbegin1 send1 sreverse1 scircular1 stdout help version btwisted: aucune biosed: targetregion replace delete compseq: word frame ignorebz reverse calcfreq zerocount freak: letters step window wordcount: wordsize mincount Exemple de ligne de commande : python3 compseq.py -word 3 -reverse -sbegin 50 X54812.embl Ce programme doit produire un fichier de sortie : X54812.composition Il vous est conseillé d’investiguer le module python argparse 4. 4 https://docs.python.org/3/library/argparse.html 2 Conseils méthodologiques 1. Limitez-vous tout d’abord à reproduire une version basique de la fonction principale de chaque outil (section Description et Algorithm de la doc). Ces fonctions doivent retourner une structure de données adéquate (tuple, liste ou dictionnaire). Implémentez une fonction qui prend comme argument cette structure de données, et fait de l’affichage (vers un fichier dont le nom et également donné en argument). Cf. exemple du cours de la bourse. Testez avec une séquence fixée, écrite en dur dans votre __main__, 2. Passez en revue les options que l’on peut passer à vos programmes, Modifiez votre fonction en prenant en compte les options. Fixez des valeurs par défaut, Faites des fonctions les plus génériques possibles, pour prendre en compte les options des deux programmes. Réfléchissez à toutes les parties qui peuvent être communes aux deux outils. Rassemblez toutes les fonctions identiques dans des modules (fichiers python), importés par vos programmes. Faites en sorte d'avoir une base de code commune la plus grande possible entre les deux programmes. 3. Utilisez votre parser FASTA, améliorez-le. Implémentez un parser EMBL simple, puis remplacez-le ensuite par un plus complet. Bonnes pratiques de développement en Python Python est un logiciel libre développé par la communauté (i.e par toute personne intéressés par son développement) et évolue selon une procédure très stricte : celle des Python Enhancement Proposals. N'importe qui peut émettre une proposition d'amélioration. Celle-ci est débattue, modifiée, amendée puis finalement acceptée ou rejetée par un vote. Dans ce projet, puis tout au long de votre carrière de pythonistes, il vous est impératif d'apprendre suivre les consignes de PEP8 et de PEP257. Pour cela, essayez de respecter au mieux les recommandations de 5 et 6. 5 http://sametmax.com/le-pep8-en-resume/ 6 http://media.jehaisleprintemps.net/talks/pep8-talk/ 3