SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Gestion de projets en
     bioinformatique
                     Pierre Poulain
      pierre.poulain@univ-paris-diderot.fr

                                  09/2011
À l’exception des illustrations et images dont les crédits sont indiqués
à la fin du document et dont les droits appartiennent à leurs auteurs
respectifs, le reste de ce cours est sous licence Creative Commons
Paternité (CC-BY).
http://creativecommons.org/licenses/by/2.0/fr/




PP                         Université Paris Diderot - Paris 7              2
Menu


 1   Qu’est-ce qu’un projet ?              5     Gestionnaires de
                                                 versions
 2   Gestion de projet en
     bioinformatique
                                           6     Documentation
                                                 (automatique) de code
 3   Outils pour le travail
     collaboratif

 4   Comparaison de code
     source


PP                      Université Paris Diderot - Paris 7               3
Définition



D’après Wikipédia : « Un projet est un engagement irréversible
de résultat incertain, non reproductible a priori à l’identique,
nécessitant le concours et l’intégration d’une grande diversité
de contribution, et répondant à un besoin exprimé. »




PP                      Université Paris Diderot - Paris 7         4
Nature d’un projet

Organisation d’un projet par la méthode QQOQCCP.


     Quoi (Quelles actions ?)
     Qui (Pour qui est le projet ? Qui est impliqué ?)
     Où (Quel domaine est concerné ? Quel est le contexte ?)
     Quand (Dans quel ordre fait-on les choses ?)
     Comment (Quels moyens ? Quelles méthodes)
     Combien (Combien ça coûte ?)
     Pourquoi (Pourquoi ce projet ? Quels sont les objectifs ?)



PP                       Université Paris Diderot - Paris 7       5
Diagramme de Gantt
Modélisation de la planification de tâches nécessaires à la
réalisation d’un projet (Henry L. Gantt, 1977).




GanttProject http://www.ganttproject.biz/

PP                                    Université Paris Diderot - Paris 7   6
Menu


 1   Qu’est-ce qu’un projet ?              5     Gestionnaires de
                                                 versions
 2   Gestion de projet en
     bioinformatique
                                           6     Documentation
                                                 (automatique) de code
 3   Outils pour le travail
     collaboratif

 4   Comparaison de code
     source


PP                      Université Paris Diderot - Paris 7               7
Gestion de projet en bioinformatique

A Quick Guide to Organizing Computational Biology Projects
W. S. Noble, PLoS Computational Biology, 5 : e1000424, 2009



1. structuration d’un projet en bioinformatique


2. reproductibilité des résultats


3. documentation



PP                         Université Paris Diderot - Paris 7   8
Organisation des fichiers et répertoires




W. S. Noble, PLoS Computational Biology, 5 : e1000424, 2009

PP                                           Université Paris Diderot - Paris 7   9
Bien gérer un projet (bioinformatique)


séparer données primaires, résultats et analyses

script global pour regénérer simulations et analyses

gestion des erreurs

gestionnaires de versions

sauvegardes !


PP                     Université Paris Diderot - Paris 7   10
Bien gérer un projet (bioinformatique) 2


documentation générale – cahier de laboratoire


documentation ponctuelle (README)


documentation des scripts et programmes
(commentaires + docstring/doxygen)




PP                     Université Paris Diderot - Paris 7   11
Cahier de laboratoire

physique (papier) ou virtuel (notebook.html)

horodatage obligatoire

valeur légale

y consigner toutes les simulations et tous les résultats
(programmes utilisés et paramètres)

répertoires et noms de fichiers

perso (laboratoire / entreprise)

© refaire simulations et analyses (sans vous)


PP                       Université Paris Diderot - Paris 7   12
Menu


 1   Qu’est-ce qu’un projet ?              5      Gestionnaires de
                                                  versions
 2   Gestion de projet en
     bioinformatique
                                           6      Documentation
                                                  (automatique) de code
 3   Outils pour le travail
     collaboratif

 4   Comparaison de code
     source


PP                      Université Paris Diderot - Paris 7                13
Travail collaboratif

travailler à plusieurs sur un même projet


à des temps différents ou pas


                                        à des endroits différents ou pas



        outils pour discuter, échanger et comparer


PP                     Université Paris Diderot - Paris 7             14
Travail collaboratif


discuter : MSN, Gtalk, Facebook, Skype...



échanger : mail, clef USB, Dropbox...



se réunir : Doodle (http://www.doodle.com/)




PP                     Université Paris Diderot - Paris 7   15
EtherPad
édition collaborative simultanée en temps réel
ietherpad http://ietherpad.com/

SplinePad http://pad.spline.de/

PrimaryPad http://primarypad.com/

TypeWithMe http://typewith.me/


services similaires
Writeboard http://writeboard.com/
collabedit http://collabedit.com/

PP                    Université Paris Diderot - Paris 7   16
EtherPad




Adresse « publique » du type
http://ietherpad.com/N3rtMQIpK
PP               Université Paris Diderot - Paris 7   17
Menu


 1   Qu’est-ce qu’un projet ?              5      Gestionnaires de
                                                  versions
 2   Gestion de projet en
     bioinformatique
                                           6      Documentation
                                                  (automatique) de code
 3   Outils pour le travail
     collaboratif

 4   Comparaison de code
     source


PP                      Université Paris Diderot - Paris 7                18
xxdiff
xxdiff script1.py script2.py




PP                        Université Paris Diderot - Paris 7   19
Meld
meld script1.py script2.py




PP                           Université Paris Diderot - Paris 7   20
Menu


 1   Qu’est-ce qu’un projet ?              5      Gestionnaires de
                                                  versions
 2   Gestion de projet en
     bioinformatique
                                           6      Documentation
                                                  (automatique) de code
 3   Outils pour le travail
     collaboratif

 4   Comparaison de code
     source


PP                      Université Paris Diderot - Paris 7                21
Pourquoi ?



login@host> cd test_projet_en_bazar/

login@host> ls
00README                script (8e copie).py                    script_OLD.py
script (12e copie).py   script (autre copie).py                 script.py
script_14042010.py      script (copie).py                       script_ver1.py
script-22032010.py      script_LAST.py                          script_ver2.py
script (7e copie).py    script_NEW.py                           script_ver3_03052010.py




PP                         Université Paris Diderot - Paris 7                        22
Oui mais !

login@host> ls -l
total 60
-rw-r--r-- 1 poulain   dsimb     38    2010-07-22         10:47     00README
-rw-r--r-- 1 poulain   dsimb    153    2010-07-22         10:45     script (12e copie).py
-rw-r--r-- 1 poulain   dsimb     75    2010-04-14         09:17     script_14042010.py
-rw-r--r-- 1 poulain   dsimb     51    2010-03-22         15:49     script-22032010.py
-rw-r--r-- 1 poulain   dsimb    124    2010-07-22         10:40     script (7e copie).py
-rw-r--r-- 1 poulain   dsimb    135    2010-07-22         11:12     script (8e copie).py
-rw-r--r-- 1 poulain   dsimb     95    2010-07-22         11:31     script (autre copie).py
-rw-r--r-- 1 poulain   dsimb    108    2010-07-22         12:05     script (copie).py
-rw-r--r-- 1 poulain   dsimb    153    2010-06-27         10:35     script_LAST.py
-rw-r--r-- 1 poulain   dsimb    176    2010-07-22         17:30     script_NEW.py
-rw-r--r-- 1 poulain   dsimb     69    2010-03-29         11:56     script_OLD.py
-rw-r--r-- 1 poulain   dsimb     27    2010-02-02         17:03     script.py
-rw-r--r-- 1 poulain   dsimb    131    2010-07-22         18:05     script_ver1.py
-rw-r--r-- 1 poulain   dsimb    167    2010-07-22         17:50     script_ver2.py
-rw-r--r-- 1 poulain   dsimb     80    2010-05-03         14:30     script_ver3_03052010.py




PP                             Université Paris Diderot - Paris 7                        23
La solution


les gestionnaires de versions


archiver les différentes modifications apportées à des données
textuelles
.py .c .cpp .pl .java .html .xhtml .tex .txt




PP                     Université Paris Diderot - Paris 7       24
Gestionnaires de versions
Version Control System (VCS)




Deux principes :
- Centralized Version Control System (CVCS)
- Distributed Version Control System (DVCS)
PP                        Université Paris Diderot - Paris 7   25
Gestionnaires de versions (2)

Centralized Version Control System (CVCS)
- Concurrent Versions System (CVS)
- subversion (svn)


Distributed Version Control System (DVCS)




PP                   Université Paris Diderot - Paris 7   26
Ranger le bazar avec Bazaar
http://bazaar.canonical.com/


- né en 2005
- supporté par Canonical (Ubuntu)
- robuste
- simple d’utilisation
- développé en Python
- adossé à la plateforme de développement
https://launchpad.net/


Bazaar in five minutes http://doc.bazaar.canonical.
com/bzr.dev/en/mini-tutorial/index.html



PP                    Université Paris Diderot - Paris 7   27
Initialisation de la branche

login@host> mkdir projet
login@host> cd projet

login@host> bzr init
Created a standalone tree (format: 2a)

login@host> ls -a
./ ../ .bzr/

# définition identité
login@host> bzr whoami "Prénom Nom <adresse.mail@provider>"

# vérification
login@host> bzr whoami
Prénom Nom <adresse.mail@provider>




PP                         Université Paris Diderot - Paris 7   28
Liste des commandes
login@host> bzr help
Bazaar 2.1.1 -- a free distributed version-control tool
http://bazaar-vcs.org/

Basic commands:
  bzr init               makes this directory a versioned branch
  bzr branch             make a copy of another branch

     bzr add             make files or directories versioned
     bzr ignore          ignore a file or pattern
     bzr mv              move or rename a versioned file

     bzr status          summarize changes in working copy
     bzr diff            show detailed diffs

     bzr merge           pull in changes from another branch
     bzr commit          save some or all changes
     bzr send            send changes via email

     bzr log             show history of changes
     bzr check           validate storage

     bzr help init       more help on e.g. init command
     bzr help commands   list all commands
     bzr help topics     list all help topics
PP                            Université Paris Diderot - Paris 7   29
Ajout de fichier et statut

login@host> vi script.py
                                   script.py
# -*- coding: utf-8 -*-
# projet Python

print "début du projet"
seq = "GWALILIPAGA"
print "séquence :", seq

login@host> ls -a
./ ../ .bzr/ script.py

login@host> bzr status
unknown:
  script.py




PP                         Université Paris Diderot - Paris 7   30
Ajout de fichier et statut (2)
login@host> bzr add script.py
adding script.py

login@host> bzr status
added:
  script.py

script.py est maintenant « versionné »


login@host> bzr commit -m "ajout de script.py"
Committing to: /home/login/chemin/du/projet/
added script.py
Committed revision 1.

commit = enregistrement version et journal (log) de la branche
bzr commit sans option -m lance un éditeur de texte


PP                        Université Paris Diderot - Paris 7     31
Suivi des modifications
         script.py (avant)                           script.py (après)
# -*- coding: utf-8 -*-                     # -*- coding: utf-8 -*-
# projet Python                             # projet Python

print "début du projet"                     print "Comptage d'alanines"
seq = "GWALILIPAGA"                         seq = "GWALILIPAGA"
print "séquence :", seq                     print "séquence :", seq
                                            compteur = 0
                                            for aa in seq:
                                                if aa == "A":
                                                    compteur += 1
                                            print compteur


login@host> bzr status
modified:
  script.py
login@host> bzr commit -m "comptage des alanines"
Committing to: /home/login/chemin/du/projet/
modified script.py
Committed revision 2.


PP                        Université Paris Diderot - Paris 7              32
Suivi des modifications (2)
         script.py (avant)                           script.py (après)
# -*- coding: utf-8 -*-                     # -*- coding: utf-8 -*-
# projet Python                             # projet Python

print "Comptage d'alanines"                 print "Comptage d'alanines"
seq = "GWALILIPAGA"                         seq = "GWALILIPAGA"
print "séquence :", seq                     print "séquence :", seq
compteur = 0                                compteur = 0
for aa in seq:                              for aa in seq:
    if aa == "A":                               if aa == "A":
        compteur += 1                               compteur += 1
print compteur                              print "Nombre alanines :", compteur


login@host> bzr status
modified:
  script.py
login@host> bzr commit -m "amélioration affichage résultat"
Committing to: /home/login/chemin/du/projet/
modified script.py
Committed revision 3.


PP                        Université Paris Diderot - Paris 7                33
Journal des modifications
login@host> bzr log
------------------------------------------------------------
revno: 3
committer: Prénom Nom <adresse.mail@provider>
branch nick: projet
timestamp: Sat 2010-09-11 18:26:32 +0200
message:
  amélioration affichage résultat
------------------------------------------------------------
revno: 2
committer: Prénom Nom <adresse.mail@provider>
branch nick: projet
timestamp: Sat 2010-09-11 18:15:47 +0200
message:
  comptage des alanines
------------------------------------------------------------
revno: 1
committer: Prénom Nom <adresse.mail@provider>
branch nick: projet
timestamp: Sat 2010-09-11 18:00:45 +0200
message:
  ajout de script.py


PP                        Université Paris Diderot - Paris 7   34
Rappel des modifications
login@host> bzr diff -r1..2
=== modified file 'script.py'
--- script.py    2010-09-11 16:00:45 +0000
+++ script.py    2010-09-11 16:15:47 +0000
@@ -1,7 +1,12 @@
 # -*- coding: utf-8 -*-
 # projet Python

-print "début du projet"
+print "Comptage d'alanines"
 seq = "GWALILIPAGA"
 print "séquence :", seq
+compteur = 0
+for aa in seq:
+    if aa == "A":
+        compteur += 1
+print compteur



bzr diff -r..2   / bzr   diff -r2..


PP                             Université Paris Diderot - Paris 7   35
Rappel des modifications (bonus)
login@host> bzr diff -r1..2 --using meld




PP                        Université Paris Diderot - Paris 7   36
Annulation de modifications
         script.py (avant)                           script.py (après)
# -*- coding: utf-8 -*-                     # -*- coding: utf-8 -*-
# projet Python                             # projet Python

print "Comptage d'alanines"                 print "Comptage d'alanines"
seq = "GWALILIPAGA"                         seq = "GWALILIPAGA"
print "séquence :", seq                     print "séquence :", seq
compteur = 0                                for aa in seq:
for aa in seq:                                  compteur = 0
    if aa == "A":                               if aa == "A":
        compteur += 1                               compteur += 1
print "Nombre alanines :", compteur         print "Nombre alanines :", compteur


login@host> python script.py
Comptage d'alanines
séquence : GWALILIPAGA
Nombre alanines : 1

oups !

PP                        Université Paris Diderot - Paris 7                37
Annulation de modifications (2)

login@host> bzr revert
 M script.py

login@host> cat script.py
# -*- coding: utf-8 -*-
# projet Python

print "Comptage d'alanines"
seq = "GWALILIPAGA"
print "séquence :", seq
compteur = 0
for aa in seq:
    if aa == "A":
        compteur += 1
print "Nombre alanines :", compteur


ouf ! Retour à l’état du dernier commit.


PP                          Université Paris Diderot - Paris 7   38
Annulation de modifications (3)
         script.py (avant)                           script.py (après)
# -*- coding: utf-8 -*-                     # -*- coding: utf-8 -*-
# projet Python                             # projet Python

print "Comptage d'alanines"                 print "Comptage d'alanines"
seq = "GWALILIPAGA"                         seq = "GWALILIPAGA"
print "séquence :", seq                     print "séquence :", seq
compteur = 0                                for aa in seq:
for aa in seq:                                  compteur = 0
    if aa == "A":                               if aa == "A":
        compteur += 1                               compteur = 1
print "Nombre alanines :", compteur         print "Nombre alanines :", compteur

login@host> bzr commit -m "meilleur compteur"
Committing to: /home/login/chemin/du/projet/
modified script.py
Committed revision 4.

login@host> python script.py
Comptage d'alanines
séquence : GWALILIPAGA
Nombre alanines : 1

re-oups !
PP                        Université Paris Diderot - Paris 7                39
Annulation de modifications (4)
login@host> bzr revert script.py -r3
 M script.py

login@host> cat script.py
# -*- coding: utf-8 -*-
# projet Python

print "Comptage d'alanines"
seq = "GWALILIPAGA"
print "séquence :", seq
compteur = 0
for aa in seq:
    if aa == "A":
        compteur += 1
print "Nombre alanines :", compteur

login@host> bzr status
modified:
  script.py
login@host> bzr commit -m "script.py - retour version 3"
Committing to: /home/login/chemin/du/projet/
modified script.py
Committed revision 5.
re-ouf !
PP                          Université Paris Diderot - Paris 7   40
Annulation de modifications (5)

Si commit par erreur :
bzr uncommit




Pour enlever un fichier du gestionnaire de versions :
- en le gardant sur le disque
bzr remove --keep script.py

- en le détruisant aussi sur le disque
bzr remove --force script.py




PP                        Université Paris Diderot - Paris 7   41
Copie de branche



login@host> cd ..

login@host> bzr branch projet/ projet2
Branched 5 revision(s).

login@host> cd projet2

login@host> ls
script.py




PP                        Université Paris Diderot - Paris 7   42
Travail sur la nouvelle branche (projet2)
         script.py (avant)                           script.py (après)
# -*- coding: utf-8 -*-                     # -*- coding: utf-8 -*-
# projet Python                             # projet Python

print "Comptage d'alanines"                 print "Comptage d'alanines"
seq = "GWALILIPAGA"                         seq = "GWALILIPAGA"
print "séquence :", seq                     print "séquence :", seq
compteur = 0                                compteur = seq.count("A")
for aa in seq:                              print "Nombre alanines :", compteur
    if aa == "A":
        compteur += 1
print "Nombre alanines :", compteur



login@host> bzr commit -m "count() au lieu de for"
Committing to: /home/login/chemin/du/projet2/
modified script.py
Committed revision 6.




PP                        Université Paris Diderot - Paris 7                43
Historique de la branche projet2
login@host> bzr log
------------------------------------------------------------
revno: 6
committer: Prénom Nom <adresse.mail@provider>
branch nick: projet2
timestamp: Mon 2010-09-13 20:51:32 +0200
message:
  count() au lieu de for
------------------------------------------------------------
revno: 5
committer: Prénom Nom <adresse.mail@provider>
branch nick: projet
timestamp: Sun 2010-09-12 21:10:08 +0200
message:
  script.py - retour version 3
------------------------------------------------------------
revno: 4
committer: Prénom Nom <adresse.mail@provider>
branch nick: projet
timestamp: Sun 2010-09-12 18:44:15 +0200
message:
  meilleur compteur
------------------------------------------------------------

PP                        Université Paris Diderot - Paris 7   44
Fusion de branches
login@host> cd ../projet

login@host> bzr merge ../projet2/
 M script.py
All changes applied successfully.
                               script.py
 # -*- coding: utf-8 -*-
 # projet Python

print "Comptage d'alanines"
seq = "GWALILIPAGA"
print "séquence :", seq
compteur = seq.count("A")
print "Nombre alanines :", compteur



login@host> bzr commit -m "ajout amélioration de projet2"
Committing to: /home/login/chemin/du/projet/
modified script.py
Committed revision 6.



PP                         Université Paris Diderot - Paris 7   45
Gestion des conflits
        script.py (projet)                           script.py (projet2)
# -*- coding: utf-8 -*-                      # -*- coding: utf-8 -*-
# projet Python                              # projet Python

print "Comptage d'alanines"                  print "Comptage d'alanines"
seq = "GWALILIPAGA"                          seq = "GWALILIPAGA"
print "séquence :", seq                      print "séquence :", seq
compteur = seq.count("A")                    compteur = seq.count("A")
print "Nb ala :", compteur                   print "alanines :", compteur



login@host> bzr merge ../projet2
 M script.py
Text conflict in script.py
1 conflicts encountered.

login@host> ls
script.py script.py.BASE     script.py.OTHER              script.py.THIS




PP                         Université Paris Diderot - Paris 7               46
Gestion des conflits (2)
       script.py (conflits)                  script.py.BASE (ancêtre commun)
# -*- coding: utf-8 -*-                    # -*- coding: utf-8 -*-
# projet Python                            # projet Python

print "Comptage d'alanines"                print "Comptage d'alanines"
seq = "GWALILIPAGA"                        seq = "GWALILIPAGA"
print "séquence :", seq                    print "séquence :", seq
compteur = seq.count("A")                  compteur = seq.count("A")
<<<<<<< TREE                               print "Nombre alanines :", compteur
print "Nb ala :", compteur
=======
print "alanines :", compteur
>>>>>>> MERGE-SOURCE

 script.py.OTHER (branche projet2)           script.py.THIS (branche projet)
# -*- coding: utf-8 -*-                    # -*- coding: utf-8 -*-
# projet Python                            # projet Python

print "Comptage d'alanines"                print "Comptage d'alanines"
seq = "GWALILIPAGA"                        seq = "GWALILIPAGA"
print "séquence :", seq                    print "séquence :", seq
compteur = seq.count("A")                  compteur = seq.count("A")
print "alanines :", compteur               print "Nb ala :", compteur

PP                       Université Paris Diderot - Paris 7                    47
Gestion des conflits (3)
On garde la version de projet :
login@host> cp script.py.THIS script.py

login@host> bzr resolve
All conflicts resolved.

login@host> ls
script.py
                                  script.py
# -*- coding: utf-8 -*-
# projet Python

print "Comptage d'alanines"
seq = "GWALILIPAGA"
print "séquence :", seq
compteur = seq.count("A")
print "Nb ala :", compteur

login@host> bzr commit -m "merge with projet2"
Committing to: /home/login/chemin/du/projet/
Committed revision 8.


PP                        Université Paris Diderot - Paris 7   48
Conclusion



commit-ez souvent !


explorez les (très très très nombreuses)
capacités de Bazaar



PP              Université Paris Diderot - Paris 7   49
Menu


 1   Qu’est-ce qu’un projet ?              5      Gestionnaires de
                                                  versions
 2   Gestion de projet en
     bioinformatique
                                           6      Documentation
                                                  (automatique) de code
 3   Outils pour le travail
     collaboratif

 4   Comparaison de code
     source


PP                      Université Paris Diderot - Paris 7                50
Principe


Générer de la documentation


1. automatiquement


2. à partir du code source



PP              Université Paris Diderot - Paris 7   51
pydoc – docstring
                              testmod.py
# -*- coding: utf-8 -*-
'''
docstring pour le module testmod.py
testmod est un module de test
les docstrings sont de simples chaînes de caractères
'''

class TestClasse():
    """docstring pour la classe TestClasse"""

     def testmethode(self):
         "docstring pour la méthode testmethode"


def testfonction():
    "docstring pour la fonction testfonction"




PP                        Université Paris Diderot - Paris 7   52
pydoc – docstring 2



login@host> python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import testmod
>>> help(testmod)




PP                        Université Paris Diderot - Paris 7         53
Help on module testmod:

NAME
       testmod

FILE
       /chemin/du/module/testmod.py

DESCRIPTION
    docstring pour le module testmod.py
    testmod est un module de test
    les docstrings sont de simples chaînes de caractères

CLASSES
    TestClasse

       class TestClasse
        | docstring pour la classe TestClasse
        |
        | Methods defined here:
        |
        | testmethode(self)
        |      docstring pour la méthode testmethode

FUNCTIONS
    testfonction()
        docstring pour la fonction testfonction
PP                           Université Paris Diderot - Paris 7   54
Doxygen


code source → documentation (variables, fonctions, classes)



C, C++, Java, Python, PHP...



HTML, LaTeX, RTF




PP                     Université Paris Diderot - Paris 7     55
Doxygen 2

paramètres via Doxyfile (complexe)



DoxyWizard



login@host> doxygen
...
login@host> firefox html/index.html




PP                        Université Paris Diderot - Paris 7   56
Doxygen 3




PP          Université Paris Diderot - Paris 7   57
Doxygen 4




PP          Université Paris Diderot - Paris 7   58
Conclusion générale

             organisez-vous
              temps, arborescence


               documentez
            cahier de laboratoire, code


                 investissez
                       bzr, outils


              sauvegardez !

PP              Université Paris Diderot - Paris 7   59
Références
A Quick Guide to Organizing Computational Biology Projects
W. S. Noble, PLoS Computational Biology, 5 : e1000424, 2009
http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000424


Présentation bazaar
http://www.slideshare.net/giordano/bazaar-dvcs-for-human-beings-3121638


Bazaar in five minutes
http://doc.bazaar.canonical.com/bzr.dev/en/mini-tutorial/index.html


Quick ref card
http://doc.bazaar.canonical.com/latest/en/quick-reference/index.html


bzr explorer
http://doc.bazaar.canonical.com/explorer/en/visual-tour-gnome.html


Doxygen
http://www.stack.nl/~dimitri/doxygen/


PP                                Université Paris Diderot - Paris 7              60

Contenu connexe

En vedette

L'Ós que va ser enganat per la Guineu
L'Ós que va ser enganat per la GuineuL'Ós que va ser enganat per la Guineu
L'Ós que va ser enganat per la GuineuMargalida Rosselló
 
Etude Unédic : Activité réduite - octobre 2013
Etude Unédic : Activité réduite - octobre 2013Etude Unédic : Activité réduite - octobre 2013
Etude Unédic : Activité réduite - octobre 2013Nathalie SALLES
 
Cuestionario maestros
Cuestionario maestrosCuestionario maestros
Cuestionario maestrosAdalberto
 
Jean Rohmer Big data & risque de fraude
Jean Rohmer Big data & risque de fraudeJean Rohmer Big data & risque de fraude
Jean Rohmer Big data & risque de fraudeInsurance_Marketing
 
Desarrollo profesional
Desarrollo profesionalDesarrollo profesional
Desarrollo profesionalAdalberto
 
Casino News Octobre/Novembre 2013
Casino News Octobre/Novembre 2013Casino News Octobre/Novembre 2013
Casino News Octobre/Novembre 2013Aurélie Vaucher
 
Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...
Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...
Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...Nathalie SALLES
 
Actividades de mayo 2010 margarita
Actividades de mayo 2010 margaritaActividades de mayo 2010 margarita
Actividades de mayo 2010 margaritaAdalberto
 
Créer un effet half-tone ou demi-teinte avec Illustrator
Créer un effet half-tone ou demi-teinte avec IllustratorCréer un effet half-tone ou demi-teinte avec Illustrator
Créer un effet half-tone ou demi-teinte avec IllustratorVotre Assistante
 
Cours_Social_Media_PPA_5MC_Soir
Cours_Social_Media_PPA_5MC_SoirCours_Social_Media_PPA_5MC_Soir
Cours_Social_Media_PPA_5MC_SoirVincent Pereira
 
ADIE : Liste des évènements du 3 au 7 juin 2013
ADIE : Liste des évènements du 3 au 7 juin 2013ADIE : Liste des évènements du 3 au 7 juin 2013
ADIE : Liste des évènements du 3 au 7 juin 2013Nathalie SALLES
 
Tres mujeres, tres caminos
Tres mujeres, tres caminosTres mujeres, tres caminos
Tres mujeres, tres caminosCarlos Chacón
 
Verdächtigenliste Ukraine
Verdächtigenliste UkraineVerdächtigenliste Ukraine
Verdächtigenliste UkraineLuxemburger Wort
 
La Lucha Digna
La Lucha DignaLa Lucha Digna
La Lucha DignaPUPOVISION
 

En vedette (19)

L'Ós que va ser enganat per la Guineu
L'Ós que va ser enganat per la GuineuL'Ós que va ser enganat per la Guineu
L'Ós que va ser enganat per la Guineu
 
Catalogue pageapage
Catalogue pageapageCatalogue pageapage
Catalogue pageapage
 
Etude Unédic : Activité réduite - octobre 2013
Etude Unédic : Activité réduite - octobre 2013Etude Unédic : Activité réduite - octobre 2013
Etude Unédic : Activité réduite - octobre 2013
 
Cuestionario maestros
Cuestionario maestrosCuestionario maestros
Cuestionario maestros
 
Jean Rohmer Big data & risque de fraude
Jean Rohmer Big data & risque de fraudeJean Rohmer Big data & risque de fraude
Jean Rohmer Big data & risque de fraude
 
Intercompr_ Langues
Intercompr_ LanguesIntercompr_ Langues
Intercompr_ Langues
 
Desarrollo profesional
Desarrollo profesionalDesarrollo profesional
Desarrollo profesional
 
Valorisation de patrimoine
Valorisation de patrimoineValorisation de patrimoine
Valorisation de patrimoine
 
Casino News Octobre/Novembre 2013
Casino News Octobre/Novembre 2013Casino News Octobre/Novembre 2013
Casino News Octobre/Novembre 2013
 
Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...
Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...
Enquête : Perception des discriminations par les demandeurs d’emploi - IFOP 0...
 
Actividades de mayo 2010 margarita
Actividades de mayo 2010 margaritaActividades de mayo 2010 margarita
Actividades de mayo 2010 margarita
 
Créer un effet half-tone ou demi-teinte avec Illustrator
Créer un effet half-tone ou demi-teinte avec IllustratorCréer un effet half-tone ou demi-teinte avec Illustrator
Créer un effet half-tone ou demi-teinte avec Illustrator
 
Cours_Social_Media_PPA_5MC_Soir
Cours_Social_Media_PPA_5MC_SoirCours_Social_Media_PPA_5MC_Soir
Cours_Social_Media_PPA_5MC_Soir
 
ADIE : Liste des évènements du 3 au 7 juin 2013
ADIE : Liste des évènements du 3 au 7 juin 2013ADIE : Liste des évènements du 3 au 7 juin 2013
ADIE : Liste des évènements du 3 au 7 juin 2013
 
Tres mujeres, tres caminos
Tres mujeres, tres caminosTres mujeres, tres caminos
Tres mujeres, tres caminos
 
Verdächtigenliste Ukraine
Verdächtigenliste UkraineVerdächtigenliste Ukraine
Verdächtigenliste Ukraine
 
La Lucha Digna
La Lucha DignaLa Lucha Digna
La Lucha Digna
 
lyon
lyonlyon
lyon
 
La douceur de ton regard
La douceur de ton regardLa douceur de ton regard
La douceur de ton regard
 

Similaire à Gestion de projets en bioinformatique

Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteePatrick MOREAU
 
Py osv newsletter-032018
Py osv newsletter-032018Py osv newsletter-032018
Py osv newsletter-032018FabMob
 
Py osv newsletter-032018
Py osv newsletter-032018Py osv newsletter-032018
Py osv newsletter-032018FabMob
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
Intégration continue
Intégration continueIntégration continue
Intégration continueJohan Moreau
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 
Cypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCERTyou Formation
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiquesJohan Moreau
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonMohammed TAMALI
 
Git & Rstudio vincent guyader
Git & Rstudio vincent guyaderGit & Rstudio vincent guyader
Git & Rstudio vincent guyaderVincent Guyader
 
cours-01-intro.pdf
cours-01-intro.pdfcours-01-intro.pdf
cours-01-intro.pdfNihedBahria2
 
Livret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematicLivret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematicPascal Flamand
 
Implémentation de solutions libres, quel retour sur investissement?
Implémentation de solutions libres, quel retour sur investissement?Implémentation de solutions libres, quel retour sur investissement?
Implémentation de solutions libres, quel retour sur investissement?Aref Jdey
 
chapitres 3 technologies de communication de l'IoT partie II.pptx
chapitres  3 technologies de communication de l'IoT partie II.pptxchapitres  3 technologies de communication de l'IoT partie II.pptx
chapitres 3 technologies de communication de l'IoT partie II.pptxmerazgaammar2
 
presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)Romand
 
Priows présentation des résultats
Priows présentation des résultats Priows présentation des résultats
Priows présentation des résultats Gilbert Paquette
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgRomain Boman
 

Similaire à Gestion de projets en bioinformatique (20)

Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
Py osv newsletter-032018
Py osv newsletter-032018Py osv newsletter-032018
Py osv newsletter-032018
 
Py osv newsletter-032018
Py osv newsletter-032018Py osv newsletter-032018
Py osv newsletter-032018
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Cypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-python
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiques
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 
Git & Rstudio vincent guyader
Git & Rstudio vincent guyaderGit & Rstudio vincent guyader
Git & Rstudio vincent guyader
 
Introduction au Plan de Gestion de Données
Introduction au Plan de Gestion de DonnéesIntroduction au Plan de Gestion de Données
Introduction au Plan de Gestion de Données
 
cours-01-intro.pdf
cours-01-intro.pdfcours-01-intro.pdf
cours-01-intro.pdf
 
Livret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematicLivret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematic
 
Implémentation de solutions libres, quel retour sur investissement?
Implémentation de solutions libres, quel retour sur investissement?Implémentation de solutions libres, quel retour sur investissement?
Implémentation de solutions libres, quel retour sur investissement?
 
chapitres 3 technologies de communication de l'IoT partie II.pptx
chapitres  3 technologies de communication de l'IoT partie II.pptxchapitres  3 technologies de communication de l'IoT partie II.pptx
chapitres 3 technologies de communication de l'IoT partie II.pptx
 
presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)presentation Ganttproject (TIC et orga)
presentation Ganttproject (TIC et orga)
 
Priows présentation des résultats
Priows présentation des résultats Priows présentation des résultats
Priows présentation des résultats
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
 
Cv kouadio kouame_olivier
Cv kouadio kouame_olivierCv kouadio kouame_olivier
Cv kouadio kouame_olivier
 

Dernier

LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 

Dernier (20)

LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 

Gestion de projets en bioinformatique

  • 1. Gestion de projets en bioinformatique Pierre Poulain pierre.poulain@univ-paris-diderot.fr 09/2011
  • 2. À l’exception des illustrations et images dont les crédits sont indiqués à la fin du document et dont les droits appartiennent à leurs auteurs respectifs, le reste de ce cours est sous licence Creative Commons Paternité (CC-BY). http://creativecommons.org/licenses/by/2.0/fr/ PP Université Paris Diderot - Paris 7 2
  • 3. Menu 1 Qu’est-ce qu’un projet ? 5 Gestionnaires de versions 2 Gestion de projet en bioinformatique 6 Documentation (automatique) de code 3 Outils pour le travail collaboratif 4 Comparaison de code source PP Université Paris Diderot - Paris 7 3
  • 4. Définition D’après Wikipédia : « Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et l’intégration d’une grande diversité de contribution, et répondant à un besoin exprimé. » PP Université Paris Diderot - Paris 7 4
  • 5. Nature d’un projet Organisation d’un projet par la méthode QQOQCCP. Quoi (Quelles actions ?) Qui (Pour qui est le projet ? Qui est impliqué ?) Où (Quel domaine est concerné ? Quel est le contexte ?) Quand (Dans quel ordre fait-on les choses ?) Comment (Quels moyens ? Quelles méthodes) Combien (Combien ça coûte ?) Pourquoi (Pourquoi ce projet ? Quels sont les objectifs ?) PP Université Paris Diderot - Paris 7 5
  • 6. Diagramme de Gantt Modélisation de la planification de tâches nécessaires à la réalisation d’un projet (Henry L. Gantt, 1977). GanttProject http://www.ganttproject.biz/ PP Université Paris Diderot - Paris 7 6
  • 7. Menu 1 Qu’est-ce qu’un projet ? 5 Gestionnaires de versions 2 Gestion de projet en bioinformatique 6 Documentation (automatique) de code 3 Outils pour le travail collaboratif 4 Comparaison de code source PP Université Paris Diderot - Paris 7 7
  • 8. Gestion de projet en bioinformatique A Quick Guide to Organizing Computational Biology Projects W. S. Noble, PLoS Computational Biology, 5 : e1000424, 2009 1. structuration d’un projet en bioinformatique 2. reproductibilité des résultats 3. documentation PP Université Paris Diderot - Paris 7 8
  • 9. Organisation des fichiers et répertoires W. S. Noble, PLoS Computational Biology, 5 : e1000424, 2009 PP Université Paris Diderot - Paris 7 9
  • 10. Bien gérer un projet (bioinformatique) séparer données primaires, résultats et analyses script global pour regénérer simulations et analyses gestion des erreurs gestionnaires de versions sauvegardes ! PP Université Paris Diderot - Paris 7 10
  • 11. Bien gérer un projet (bioinformatique) 2 documentation générale – cahier de laboratoire documentation ponctuelle (README) documentation des scripts et programmes (commentaires + docstring/doxygen) PP Université Paris Diderot - Paris 7 11
  • 12. Cahier de laboratoire physique (papier) ou virtuel (notebook.html) horodatage obligatoire valeur légale y consigner toutes les simulations et tous les résultats (programmes utilisés et paramètres) répertoires et noms de fichiers perso (laboratoire / entreprise) © refaire simulations et analyses (sans vous) PP Université Paris Diderot - Paris 7 12
  • 13. Menu 1 Qu’est-ce qu’un projet ? 5 Gestionnaires de versions 2 Gestion de projet en bioinformatique 6 Documentation (automatique) de code 3 Outils pour le travail collaboratif 4 Comparaison de code source PP Université Paris Diderot - Paris 7 13
  • 14. Travail collaboratif travailler à plusieurs sur un même projet à des temps différents ou pas à des endroits différents ou pas outils pour discuter, échanger et comparer PP Université Paris Diderot - Paris 7 14
  • 15. Travail collaboratif discuter : MSN, Gtalk, Facebook, Skype... échanger : mail, clef USB, Dropbox... se réunir : Doodle (http://www.doodle.com/) PP Université Paris Diderot - Paris 7 15
  • 16. EtherPad édition collaborative simultanée en temps réel ietherpad http://ietherpad.com/ SplinePad http://pad.spline.de/ PrimaryPad http://primarypad.com/ TypeWithMe http://typewith.me/ services similaires Writeboard http://writeboard.com/ collabedit http://collabedit.com/ PP Université Paris Diderot - Paris 7 16
  • 17. EtherPad Adresse « publique » du type http://ietherpad.com/N3rtMQIpK PP Université Paris Diderot - Paris 7 17
  • 18. Menu 1 Qu’est-ce qu’un projet ? 5 Gestionnaires de versions 2 Gestion de projet en bioinformatique 6 Documentation (automatique) de code 3 Outils pour le travail collaboratif 4 Comparaison de code source PP Université Paris Diderot - Paris 7 18
  • 19. xxdiff xxdiff script1.py script2.py PP Université Paris Diderot - Paris 7 19
  • 20. Meld meld script1.py script2.py PP Université Paris Diderot - Paris 7 20
  • 21. Menu 1 Qu’est-ce qu’un projet ? 5 Gestionnaires de versions 2 Gestion de projet en bioinformatique 6 Documentation (automatique) de code 3 Outils pour le travail collaboratif 4 Comparaison de code source PP Université Paris Diderot - Paris 7 21
  • 22. Pourquoi ? login@host> cd test_projet_en_bazar/ login@host> ls 00README script (8e copie).py script_OLD.py script (12e copie).py script (autre copie).py script.py script_14042010.py script (copie).py script_ver1.py script-22032010.py script_LAST.py script_ver2.py script (7e copie).py script_NEW.py script_ver3_03052010.py PP Université Paris Diderot - Paris 7 22
  • 23. Oui mais ! login@host> ls -l total 60 -rw-r--r-- 1 poulain dsimb 38 2010-07-22 10:47 00README -rw-r--r-- 1 poulain dsimb 153 2010-07-22 10:45 script (12e copie).py -rw-r--r-- 1 poulain dsimb 75 2010-04-14 09:17 script_14042010.py -rw-r--r-- 1 poulain dsimb 51 2010-03-22 15:49 script-22032010.py -rw-r--r-- 1 poulain dsimb 124 2010-07-22 10:40 script (7e copie).py -rw-r--r-- 1 poulain dsimb 135 2010-07-22 11:12 script (8e copie).py -rw-r--r-- 1 poulain dsimb 95 2010-07-22 11:31 script (autre copie).py -rw-r--r-- 1 poulain dsimb 108 2010-07-22 12:05 script (copie).py -rw-r--r-- 1 poulain dsimb 153 2010-06-27 10:35 script_LAST.py -rw-r--r-- 1 poulain dsimb 176 2010-07-22 17:30 script_NEW.py -rw-r--r-- 1 poulain dsimb 69 2010-03-29 11:56 script_OLD.py -rw-r--r-- 1 poulain dsimb 27 2010-02-02 17:03 script.py -rw-r--r-- 1 poulain dsimb 131 2010-07-22 18:05 script_ver1.py -rw-r--r-- 1 poulain dsimb 167 2010-07-22 17:50 script_ver2.py -rw-r--r-- 1 poulain dsimb 80 2010-05-03 14:30 script_ver3_03052010.py PP Université Paris Diderot - Paris 7 23
  • 24. La solution les gestionnaires de versions archiver les différentes modifications apportées à des données textuelles .py .c .cpp .pl .java .html .xhtml .tex .txt PP Université Paris Diderot - Paris 7 24
  • 25. Gestionnaires de versions Version Control System (VCS) Deux principes : - Centralized Version Control System (CVCS) - Distributed Version Control System (DVCS) PP Université Paris Diderot - Paris 7 25
  • 26. Gestionnaires de versions (2) Centralized Version Control System (CVCS) - Concurrent Versions System (CVS) - subversion (svn) Distributed Version Control System (DVCS) PP Université Paris Diderot - Paris 7 26
  • 27. Ranger le bazar avec Bazaar http://bazaar.canonical.com/ - né en 2005 - supporté par Canonical (Ubuntu) - robuste - simple d’utilisation - développé en Python - adossé à la plateforme de développement https://launchpad.net/ Bazaar in five minutes http://doc.bazaar.canonical. com/bzr.dev/en/mini-tutorial/index.html PP Université Paris Diderot - Paris 7 27
  • 28. Initialisation de la branche login@host> mkdir projet login@host> cd projet login@host> bzr init Created a standalone tree (format: 2a) login@host> ls -a ./ ../ .bzr/ # définition identité login@host> bzr whoami "Prénom Nom <adresse.mail@provider>" # vérification login@host> bzr whoami Prénom Nom <adresse.mail@provider> PP Université Paris Diderot - Paris 7 28
  • 29. Liste des commandes login@host> bzr help Bazaar 2.1.1 -- a free distributed version-control tool http://bazaar-vcs.org/ Basic commands: bzr init makes this directory a versioned branch bzr branch make a copy of another branch bzr add make files or directories versioned bzr ignore ignore a file or pattern bzr mv move or rename a versioned file bzr status summarize changes in working copy bzr diff show detailed diffs bzr merge pull in changes from another branch bzr commit save some or all changes bzr send send changes via email bzr log show history of changes bzr check validate storage bzr help init more help on e.g. init command bzr help commands list all commands bzr help topics list all help topics PP Université Paris Diderot - Paris 7 29
  • 30. Ajout de fichier et statut login@host> vi script.py script.py # -*- coding: utf-8 -*- # projet Python print "début du projet" seq = "GWALILIPAGA" print "séquence :", seq login@host> ls -a ./ ../ .bzr/ script.py login@host> bzr status unknown: script.py PP Université Paris Diderot - Paris 7 30
  • 31. Ajout de fichier et statut (2) login@host> bzr add script.py adding script.py login@host> bzr status added: script.py script.py est maintenant « versionné » login@host> bzr commit -m "ajout de script.py" Committing to: /home/login/chemin/du/projet/ added script.py Committed revision 1. commit = enregistrement version et journal (log) de la branche bzr commit sans option -m lance un éditeur de texte PP Université Paris Diderot - Paris 7 31
  • 32. Suivi des modifications script.py (avant) script.py (après) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "début du projet" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = 0 for aa in seq: if aa == "A": compteur += 1 print compteur login@host> bzr status modified: script.py login@host> bzr commit -m "comptage des alanines" Committing to: /home/login/chemin/du/projet/ modified script.py Committed revision 2. PP Université Paris Diderot - Paris 7 32
  • 33. Suivi des modifications (2) script.py (avant) script.py (après) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = 0 compteur = 0 for aa in seq: for aa in seq: if aa == "A": if aa == "A": compteur += 1 compteur += 1 print compteur print "Nombre alanines :", compteur login@host> bzr status modified: script.py login@host> bzr commit -m "amélioration affichage résultat" Committing to: /home/login/chemin/du/projet/ modified script.py Committed revision 3. PP Université Paris Diderot - Paris 7 33
  • 34. Journal des modifications login@host> bzr log ------------------------------------------------------------ revno: 3 committer: Prénom Nom <adresse.mail@provider> branch nick: projet timestamp: Sat 2010-09-11 18:26:32 +0200 message: amélioration affichage résultat ------------------------------------------------------------ revno: 2 committer: Prénom Nom <adresse.mail@provider> branch nick: projet timestamp: Sat 2010-09-11 18:15:47 +0200 message: comptage des alanines ------------------------------------------------------------ revno: 1 committer: Prénom Nom <adresse.mail@provider> branch nick: projet timestamp: Sat 2010-09-11 18:00:45 +0200 message: ajout de script.py PP Université Paris Diderot - Paris 7 34
  • 35. Rappel des modifications login@host> bzr diff -r1..2 === modified file 'script.py' --- script.py 2010-09-11 16:00:45 +0000 +++ script.py 2010-09-11 16:15:47 +0000 @@ -1,7 +1,12 @@ # -*- coding: utf-8 -*- # projet Python -print "début du projet" +print "Comptage d'alanines" seq = "GWALILIPAGA" print "séquence :", seq +compteur = 0 +for aa in seq: + if aa == "A": + compteur += 1 +print compteur bzr diff -r..2 / bzr diff -r2.. PP Université Paris Diderot - Paris 7 35
  • 36. Rappel des modifications (bonus) login@host> bzr diff -r1..2 --using meld PP Université Paris Diderot - Paris 7 36
  • 37. Annulation de modifications script.py (avant) script.py (après) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = 0 for aa in seq: for aa in seq: compteur = 0 if aa == "A": if aa == "A": compteur += 1 compteur += 1 print "Nombre alanines :", compteur print "Nombre alanines :", compteur login@host> python script.py Comptage d'alanines séquence : GWALILIPAGA Nombre alanines : 1 oups ! PP Université Paris Diderot - Paris 7 37
  • 38. Annulation de modifications (2) login@host> bzr revert M script.py login@host> cat script.py # -*- coding: utf-8 -*- # projet Python print "Comptage d'alanines" seq = "GWALILIPAGA" print "séquence :", seq compteur = 0 for aa in seq: if aa == "A": compteur += 1 print "Nombre alanines :", compteur ouf ! Retour à l’état du dernier commit. PP Université Paris Diderot - Paris 7 38
  • 39. Annulation de modifications (3) script.py (avant) script.py (après) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = 0 for aa in seq: for aa in seq: compteur = 0 if aa == "A": if aa == "A": compteur += 1 compteur = 1 print "Nombre alanines :", compteur print "Nombre alanines :", compteur login@host> bzr commit -m "meilleur compteur" Committing to: /home/login/chemin/du/projet/ modified script.py Committed revision 4. login@host> python script.py Comptage d'alanines séquence : GWALILIPAGA Nombre alanines : 1 re-oups ! PP Université Paris Diderot - Paris 7 39
  • 40. Annulation de modifications (4) login@host> bzr revert script.py -r3 M script.py login@host> cat script.py # -*- coding: utf-8 -*- # projet Python print "Comptage d'alanines" seq = "GWALILIPAGA" print "séquence :", seq compteur = 0 for aa in seq: if aa == "A": compteur += 1 print "Nombre alanines :", compteur login@host> bzr status modified: script.py login@host> bzr commit -m "script.py - retour version 3" Committing to: /home/login/chemin/du/projet/ modified script.py Committed revision 5. re-ouf ! PP Université Paris Diderot - Paris 7 40
  • 41. Annulation de modifications (5) Si commit par erreur : bzr uncommit Pour enlever un fichier du gestionnaire de versions : - en le gardant sur le disque bzr remove --keep script.py - en le détruisant aussi sur le disque bzr remove --force script.py PP Université Paris Diderot - Paris 7 41
  • 42. Copie de branche login@host> cd .. login@host> bzr branch projet/ projet2 Branched 5 revision(s). login@host> cd projet2 login@host> ls script.py PP Université Paris Diderot - Paris 7 42
  • 43. Travail sur la nouvelle branche (projet2) script.py (avant) script.py (après) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = 0 compteur = seq.count("A") for aa in seq: print "Nombre alanines :", compteur if aa == "A": compteur += 1 print "Nombre alanines :", compteur login@host> bzr commit -m "count() au lieu de for" Committing to: /home/login/chemin/du/projet2/ modified script.py Committed revision 6. PP Université Paris Diderot - Paris 7 43
  • 44. Historique de la branche projet2 login@host> bzr log ------------------------------------------------------------ revno: 6 committer: Prénom Nom <adresse.mail@provider> branch nick: projet2 timestamp: Mon 2010-09-13 20:51:32 +0200 message: count() au lieu de for ------------------------------------------------------------ revno: 5 committer: Prénom Nom <adresse.mail@provider> branch nick: projet timestamp: Sun 2010-09-12 21:10:08 +0200 message: script.py - retour version 3 ------------------------------------------------------------ revno: 4 committer: Prénom Nom <adresse.mail@provider> branch nick: projet timestamp: Sun 2010-09-12 18:44:15 +0200 message: meilleur compteur ------------------------------------------------------------ PP Université Paris Diderot - Paris 7 44
  • 45. Fusion de branches login@host> cd ../projet login@host> bzr merge ../projet2/ M script.py All changes applied successfully. script.py # -*- coding: utf-8 -*- # projet Python print "Comptage d'alanines" seq = "GWALILIPAGA" print "séquence :", seq compteur = seq.count("A") print "Nombre alanines :", compteur login@host> bzr commit -m "ajout amélioration de projet2" Committing to: /home/login/chemin/du/projet/ modified script.py Committed revision 6. PP Université Paris Diderot - Paris 7 45
  • 46. Gestion des conflits script.py (projet) script.py (projet2) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = seq.count("A") compteur = seq.count("A") print "Nb ala :", compteur print "alanines :", compteur login@host> bzr merge ../projet2 M script.py Text conflict in script.py 1 conflicts encountered. login@host> ls script.py script.py.BASE script.py.OTHER script.py.THIS PP Université Paris Diderot - Paris 7 46
  • 47. Gestion des conflits (2) script.py (conflits) script.py.BASE (ancêtre commun) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = seq.count("A") compteur = seq.count("A") <<<<<<< TREE print "Nombre alanines :", compteur print "Nb ala :", compteur ======= print "alanines :", compteur >>>>>>> MERGE-SOURCE script.py.OTHER (branche projet2) script.py.THIS (branche projet) # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- # projet Python # projet Python print "Comptage d'alanines" print "Comptage d'alanines" seq = "GWALILIPAGA" seq = "GWALILIPAGA" print "séquence :", seq print "séquence :", seq compteur = seq.count("A") compteur = seq.count("A") print "alanines :", compteur print "Nb ala :", compteur PP Université Paris Diderot - Paris 7 47
  • 48. Gestion des conflits (3) On garde la version de projet : login@host> cp script.py.THIS script.py login@host> bzr resolve All conflicts resolved. login@host> ls script.py script.py # -*- coding: utf-8 -*- # projet Python print "Comptage d'alanines" seq = "GWALILIPAGA" print "séquence :", seq compteur = seq.count("A") print "Nb ala :", compteur login@host> bzr commit -m "merge with projet2" Committing to: /home/login/chemin/du/projet/ Committed revision 8. PP Université Paris Diderot - Paris 7 48
  • 49. Conclusion commit-ez souvent ! explorez les (très très très nombreuses) capacités de Bazaar PP Université Paris Diderot - Paris 7 49
  • 50. Menu 1 Qu’est-ce qu’un projet ? 5 Gestionnaires de versions 2 Gestion de projet en bioinformatique 6 Documentation (automatique) de code 3 Outils pour le travail collaboratif 4 Comparaison de code source PP Université Paris Diderot - Paris 7 50
  • 51. Principe Générer de la documentation 1. automatiquement 2. à partir du code source PP Université Paris Diderot - Paris 7 51
  • 52. pydoc – docstring testmod.py # -*- coding: utf-8 -*- ''' docstring pour le module testmod.py testmod est un module de test les docstrings sont de simples chaînes de caractères ''' class TestClasse(): """docstring pour la classe TestClasse""" def testmethode(self): "docstring pour la méthode testmethode" def testfonction(): "docstring pour la fonction testfonction" PP Université Paris Diderot - Paris 7 52
  • 53. pydoc – docstring 2 login@host> python Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import testmod >>> help(testmod) PP Université Paris Diderot - Paris 7 53
  • 54. Help on module testmod: NAME testmod FILE /chemin/du/module/testmod.py DESCRIPTION docstring pour le module testmod.py testmod est un module de test les docstrings sont de simples chaînes de caractères CLASSES TestClasse class TestClasse | docstring pour la classe TestClasse | | Methods defined here: | | testmethode(self) | docstring pour la méthode testmethode FUNCTIONS testfonction() docstring pour la fonction testfonction PP Université Paris Diderot - Paris 7 54
  • 55. Doxygen code source → documentation (variables, fonctions, classes) C, C++, Java, Python, PHP... HTML, LaTeX, RTF PP Université Paris Diderot - Paris 7 55
  • 56. Doxygen 2 paramètres via Doxyfile (complexe) DoxyWizard login@host> doxygen ... login@host> firefox html/index.html PP Université Paris Diderot - Paris 7 56
  • 57. Doxygen 3 PP Université Paris Diderot - Paris 7 57
  • 58. Doxygen 4 PP Université Paris Diderot - Paris 7 58
  • 59. Conclusion générale organisez-vous temps, arborescence documentez cahier de laboratoire, code investissez bzr, outils sauvegardez ! PP Université Paris Diderot - Paris 7 59
  • 60. Références A Quick Guide to Organizing Computational Biology Projects W. S. Noble, PLoS Computational Biology, 5 : e1000424, 2009 http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000424 Présentation bazaar http://www.slideshare.net/giordano/bazaar-dvcs-for-human-beings-3121638 Bazaar in five minutes http://doc.bazaar.canonical.com/bzr.dev/en/mini-tutorial/index.html Quick ref card http://doc.bazaar.canonical.com/latest/en/quick-reference/index.html bzr explorer http://doc.bazaar.canonical.com/explorer/en/visual-tour-gnome.html Doxygen http://www.stack.nl/~dimitri/doxygen/ PP Université Paris Diderot - Paris 7 60