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

Documents pareils