Reconstruction d'arbres phylogénétiques avec PHYLIP

  • Qu'est-ce que PHYLIP?
  • Quel est la séquences des manipulations à effectuer pour obtenir un arbre à partir de séquences nucléotidiques?
  • Quel est le format de données en entrée des programmes PHYLIP?
  • Comment aligner des séquences au format Fasta et obtenir un fichier au format PHYLIP?
  • Comment générer une matrice de distance à partir de séquences nucléotidiques?
  • Comment générer un arbre à partir de distances entre séquences?
  • Comment visualiser un arbre de manière graphique?

  • Qu'est-ce que PHYLIP?
    C'est une série de petits programmes permettant de faire de la reconstruction phylogénétique, c'est-à-dire de retrouver (ou du moins d'essayer de retrouver) l'arbre d'évolution d'une série de séquences nucléotidiques.

  • Quel est la séquences des manipulations à effectuer pour obtenir un arbre à partir de séquences nucléotidiques?
    1.
    aligner les séquences pour obtenir un fichier au format PHYLIP
    2. construire une matrice de distances à partir des séquences nucléotidiques
    3. construire un arbre à partir de ces distances
    4. visualiser l'arbre

  • Quel est le format de données en entrée des programmes PHYLIP?
    Il s'agit du format PHYLIP. En voici un exemple:
            7       50
    C1         GCCAACCCCA CGGTCACTCT GTTCCCGCCC TCCTGGAGCT CCAAGACAAG 
    C2         GCTGCCCCCT CGGTCACTCT GTTCCCGCCC TCCTGGAGCT TCAAGACAAG 
    C3         GCTGCCCCCT CGGTCACTCT GTTCCCACCC TCCTGGAGCT TCAAGACAAG 
    C4         GAGACACCTT CATCTCCTCT GACCCCAGAG GCAGGGAGCT CCAAGACAAG 
    C5         GCCACCCCCT TGGTCACTCT GTTC---CCC TCCTGGAGCT CCAAGACAAG 
    C6         GCTGCCCCAT CGGTCACTCT GTTCCCGCCC TCCTGGAGCT TCAAGACAAG 
    C7         GCTGCCCCCT CGGTCACTCT GTTCCCACCC TCCTGGAGCT TCAAGACAAG 
    
               GCCACACTAG TGTGTCTGAT CAGTGACTTC TACCCGGGAG CCTTGGAAGG 
               GCCACACTGG TGTGTCTCAT AAGTGACTTC TACCCGGGAG CCTTGGAAAG 
               GCCACACTGG TGTGT-TCAT AAGTGACTTC TACCCGGGAG CCCTGGAAGG 
               GCCACAATGG TGTGTCTCAT GAGTGACTTC TACCCGAGAG CCCTGGAAGA 
               GCCATGCTGG TGTGTCTCAT AAATGACTTC TACCCAGGAG CCATAGAAGG 
               GCCACACTGG TGTGCCTGAT CAGTGACTTC TACCCGGGAG CCCTGGAAGG 
               GCCACACTGG TGTGTCTCGT AAGTGACTTC TACCCGGGAG CCCTGGAAGG 
    

  • Comment aligner des séquences au format Fasta et obtenir un fichier au format PHYLIP?
    Il suffit d'utiliser Clustalw. Par exemple, pour aligner les séquences contenues dans iglc.seq
    [olly@mplpc16 olly]$ clustalw iglc.seq -output=phylip
    
    En sortie, le fichier iglc.phy contient les séquences alignées.

  • Comment générer une matrice de distance à partir de séquences nucléotidiques?
    Le programme dnadist permet de faire cela:
    [olly@mplpc16 olly]$ dnadist 
    dnadist:  can't read infile
    Please enter a new filename>
    
    Ici on rentrera un nom de fichier au format PHYLIP, par exemple iglc.phy
    Nucleic acid sequence Distance Matrix program, version 3.573c
    
    Settings for this run:
      D  Distance (Kimura, Jin/Nei, ML, J-C)?  Kimura 2-parameter
      T        Transition/transversion ratio?  2.0
      C   One category of substitution rates?  Yes
      L              Form of distance matrix?  Square
      M           Analyze multiple data sets?  No
      I          Input sequences interleaved?  Yes
      0   Terminal type (IBM PC, VT52, ANSI)?  ANSI
      1    Print out the data at start of run  No
      2  Print indications of progress of run  Yes
    
    Are these settings correct? (type Y or letter for one to change)
    
    Il est ici possible de changer le modèle gràce auquel seront calculées les distances en tapant D. Néanmoins le modèle "Kimura 2-parameter" fournit généralement des bons résultats sur la plupart des jeux de données. Si tous les paramètres sont correct, on tape "y" pour continuer et lancer le calcul.
    La matrice de distances ainsi calculée est stockée dans le fichier nommé outfile. En voici un exemple:
    [olly@mplpc16 olly]$ more outfile
        7
    C1          0.0000  0.0549  0.0703  0.2196  0.1673  0.0549  0.0701
    C2          0.0549  0.0000  0.0286  0.2206  0.1742  0.0435  0.0507
    C3          0.0703  0.0286  0.0000  0.2072  0.1834  0.0511  0.0508
    C4          0.2196  0.2206  0.2072  0.0000  0.2498  0.1986  0.1975
    C5          0.1673  0.1742  0.1834  0.2498  0.0000  0.1621  0.1656
    C6          0.0549  0.0435  0.0511  0.1986  0.1621  0.0000  0.0587
    C7          0.0701  0.0507  0.0508  0.1975  0.1656  0.0587  0.0000
    

  • Comment générer un arbre à partir de distances entre séquences?
    Le programme neighbor (qui implémente l'algorithme "Neighbor Joining") permet de faire cela. Mais tout d'abord il faut s'assurer que les distances sont stockées dans un fichier différent du fichier outfile (car celui-ci sera remplacé). Par exemple, pour renommer outfile en dists:
    [olly@mplpc16 olly]$ mv outfile dists
    
    On lance ensuite neighbor:
    [olly@mplpc16 olly]$ neighbor 
    neighbor:  can't read infile
    Please enter a new filename>
    
    Ici on tapera le nom du fichier contenant les distances...
    Neighbor-Joining/UPGMA method version 3.5
    
    Settings for this run:
      N       Neighbor-joining or UPGMA tree?  Neighbor-joining
      O                        Outgroup root?  No, use as outgroup species  1
      L         Lower-triangular data matrix?  No
      R         Upper-triangular data matrix?  No
      S                        Subreplicates?  No
      J     Randomize input order of species?  No. Use input order
      M           Analyze multiple data sets?  No
      0   Terminal type (IBM PC, VT52, ANSI)?  ANSI
      1    Print out the data at start of run  No
      2  Print indications of progress of run  Yes
      3                        Print out tree  Yes
      4       Write out trees onto tree file?  Yes
    
    Are these settings correct? (type Y or the letter for one to change)
    
    Normalement il n'y a rien à changer. On tape "y" pour calculer l'arbre. Cet arbre est stocké sous format Newick (non graphique) dans le fichier treefile, et sous forme plus compréhensible dans le fichier outfile.
    Par exemple:
    [olly@mplpc16 olly]$ more treefile
    (VR-V6:0.11682,VR-V8:0.06318,((VR-V1:0.06853,(VR-V2:0.01681,
    VR-V4:0.03669):0.03887):0.00814,((VR-V3:0.01653,(VR-V5:0.02734,
    VR-V5P:0.04446):0.00437):0.03987,VR-V7:0.06190):0.01172):0.00775);
    

  • Comment visualiser un arbre de manière graphique?
    Cela se fait en deux étape: La première consiste à générer un fichier Postscript à partir d'une arbre au format Newick. On utilise pour cela le programme drawtree fourni avec PHYLIP:
    [olly@mplpc16 olly]$ drawtree
    
    Si un fichier treefile est présent dans le répertoire, il sera automatiquement utilisé en entrée. Sinon il est demandé de spécifier un nom de fichier. Ensuite l'écran suivant s'affiche:
    Which plotter or printer will the tree be drawn on?
    (many other brands or models are compatible with these)
    
       type:       to choose one compatible with:
    
            L         Apple Laserwriter (with Postscript)
            M         MacDraw PICT format
            R         Rayshade 3D rendering program file
            J         Hewlett-Packard Laserjet
            K         TeKtronix 4010 graphics terminal
            H         Hewlett-Packard 7470 plotter
            D         DEC ReGIS graphics (VT240 terminal)
            B         Houston Instruments plotter
            E         Epson MX-80 dot-matrix printer
            C         Prowriter/Imagewriter dot-matrix printer
            O         Okidata dot-matrix printer
            T         Toshiba 24-pin dot-matrix printer
            P         PC Paintbrush monochrome PCX file format
            X         X Bitmap format                         
            F         FIG 2.0 format                          
            U         other: one you have inserted code for
     Choose one: 
    
    On choisira (et tapera) "l" pour sortir un fichier Postscript.
    Which type of screen will it be previewed on?
    
       type:       to choose one compatible with:
    
            N         will not be previewed
            K         TeKtronix 4010 graphics terminal
            D         DEC ReGIS graphics (VT240 terminal)
            U         other: one you have inserted code for
     Choose one: 
    
    Rien de particulier ici : on tape directement "n".
    Here are the settings: 
    
     (1)        Use branch lengths:  Yes
     (2)           Angle of labels:  Fixed angle of  0.0 degrees
     (3)          Rotation of tree:  90.0
     (4)     Angle of arc for tree:  360.0
     (5)   Iterate to improve tree:  Yes
     (6)    Scale of branch length:  Automatically rescaled
     (7)        Horizontal margins:  1.73 cm
     (7)          Vertical margins:  2.24 cm
     (8) Relative character height:  0.3333
     (9)       Enthusiasm constant:  0.11111
     (10)           Font          :  Hershey
    
    
     Do you want to accept these? (Yes or No)
     Type Y or N or the number (1-10) of the one to change:
    
    Un choix important est à effectuer ici : souhaite-t-on une répresentation avec ou sans longueurs de branches? Les longueurs de branches représentent la différence (la distance évolutive) entre espèces ou gènes. Elle apportent donc de l'information lors de la visualisation. Néanmoins si certaines de ces distances sont trop petites relativement aux autres, l'arbre obtenu peut être difficilement lisible du fait du chevauchement des noms de gènes et des branches. Donc:
    - pour obtenir un arbre sans longueurs de branche, taper "1" puis "y"
    - pour obtenir un arbre avec longueurs de branche, taper "y"
    Cela a pour effet de créer un fichier Postscript nommé plotfile.

    La seconde étape consiste à visionner ce fichier, avec un visualisateur Postcript (xpsview, gv, ghostview, ...). Par exemple:
    [olly@mplpc16 olly]$ xpsview plotfile