Didacticiel :
Gephi pour la visualisation et l'analyse de graphes

Logo Gephi | |Tous droits réservés

Logo Gephi | | Tous droits réservés

Gephi est un logiciel de visualisation et d'analyse de graphes. Il est distribué sous les licences CDDL 1.0 et GPLv3, et est disponible sur les principaux systèmes d'exploitation.

Gephi est prévu d'emblée pour tous types de graphes (pas seulement en bioinformatique) dans les principaux formats. Tulip et Cytoscape sont des outils similaires. Cependant, chez moi Cytoscape demande plein de dépendances difficiles à satisfaire, et Tulip fait un segfault au lancement. Pour créer de petits graphes et placer les noeuds à la main (ou avec des algorithmes de layout simples) yED est assez efficace, mais il n'est pas libre et ne convient que pour de petits graphes. Si vous avez de l'expérience avec ceux-ci (ou d'autres), merci de laisser un commentaire pour nous en faire profiter.

La communauté Gephi comporte un bon noyau francophone, une partie importante des développeurs de Gephi étant également français (au début, Gephi était développé par des étudiants de l'UTC). Gephi est disponible en anglais, en français, en espagnol et en portuguais.

Organisation

Gephi est organisé en trois onglets (en haut, sous la barre de menus ; cf. infra) :

  • l'onglet laboratoire de données ("data laboratory") permet de voir et de modifier les noeuds et les arcs du graphe ainsi que leurs propriétés ;
  • l'onglet Vue d'ensemble ("overview") permet d'effectuer l'analyse et la plus grande partie de la mise en forme du graphe (application d'un algorithme de positionnement, couleur et taille des noeuds et des arcs...) ;
  • l'onglet pré-visualisation ("preview") permet de peaufiner la visualisation et de générer une belle image.
    Gephi : les trois modes Overview (à gauche), Data laboratory (au centre) et Preview (à droite).

Gephi : les trois modes Overview (à gauche), Data laboratory (au centre) et Preview (à droite).

Dans le cadre de la bioinformatique, on ne bidouille en général pas les données : elles sont ce qu'elles sont et il faut bien faire avec. On passe donc typiquement le plus clair de son temps sur l'onglet overview et on finit sur l'onglet de pré-visualisation.

Charger un graphe

Gephi supporte différents types de graphes : dirigés ou non, gros ou non, hiérarchiques (un noeud est lui-même un graphe, ce qui permet d'agréger une partie d'un graphe), dynamiques (les noeuds et la topologie varient au cours du temps)... Gephi supporte naturellement les principaux formats de fichier : GEXF, GraphML, dot...

Vous pouvez partir d'un projet vide et ajouter les noeuds et les arcs à la main, ou bien importer une feuille d'un tableur (toujours depuis l'onglet "data laboratory"), ou encore générer un graphe aléatoire à partir du menu "File".  Si vous voulez ajouter des noeuds ou des arcs à la main, vous pouvez le faire soit depuis l'onglet "data laboratory", soit depuis l'onglet "overview" en utilisant respectivement les boutons "node pencil" et "edge pencil" (en forme de crayon dans la barre d'outils verticale à gauche de la partie centrale).

Pour générer ou modifier vos graphes, vous pouvez typiquement utiliser des librairies pour votre langage de programmation préféré (par exemple networkx pour Python), mais c'est une autre histoire. NB: Gephi dispose aussi d'un plugin SemanticWebImport pour faire des requêtes SPARQL sur du RDF, mais on y reviendra aussi dans un autre article.

Pour la suite de la visite, nous allons utiliser demo-gephi.gexf. Ce graphe a été généré à partir de Reactome et montre une hiérarchie de voies métaboliques.

 

Analyser un graphe

Dans la partie Overview, le tiers droit de l'écran fournit :

  • en haut, dans la partie "Context" : un rappel des propriétés du graphe (dirigé ou non, nombre de noeuds, nombre d'arcs) ;
  • en bas, dans la partie "Statistics" : plein de mesures classiques : le degré moyen, la densité, l'excentricité,... Cliquez sur "Run" pour lancer ces mesures, puis sur le petit icône "View report" si vous avez besoin d'y revenir.

Visualiser un graphe

Pour visualiser un graphe, on en fixe les caractéristiques principales dans l'onglet overview, puis on génère une jolie version dans l'onglet preview (et on fait des allers-retours tant que l'on n'est pas satisfait).

Gephi : mode Overview et statistiques sur le graphe

Gephi : mode Overview et statistiques sur le graphe

Manipulation du graphe

Le bouton droit de la souris permet de déplacer le graphe latéralement ou de haut en bas.

La molette permet de zoomer.

Si vous êtes un peu perdu, il y a un bouton "center on graph" (une loupe avec une cible)  sur la gauche de la zone centrale. Cela permet de recentrer le graphe et d'adapter le zoom pour le voir en totalité.

Disposition des noeuds

Par défaut, le positionnement des noeuds se fait de façon aléatoire. Ce n'est pas forcément très plaisant, surtout pour les gros graphes.

Si vous laissez quelques secondes le pointeur de votre souris sur un noeud, celui-ci et ses voisins directs sont mis en valeur.

En gardant le bouton gauche enfoncé, vous pouvez déplacer le noeud. Évidemment, ça devient vite fastidieux au delà de trois noeuds, mais c'est parfois bien pratique pour faire de petits ajustements.

Gephi dispose d'algorithmes de layout qui prennent le positionnement en charge. Ca peut valoir la peine d'installer quelques greffons supplémentaires via le menu Outils. Chaque algorithme de layout a ses caractéristiques qui le rendent plus ou moins adapté au type de graphe. Yifan Hu, Yifan Hu multilevel, Openorb et Fruchtermann Reingold sont en général de bons candidats. Ici, on a appliqué Yifan Hu plusieurs fois de suite jusqu'à ce que la position des branches se stabilise. NB: on peut toujours ajuster ponctuellement à la main la position de certains noeuds après l'application du layout.

Gephi : portion de graphe après l'application du layout Yifan Hu

Gephi : portion de graphe après l'application du layout Yifan Hu

Couleur des noeuds

Il est possible de colorier les noeuds un par un à la main avec le bouton pot de peinture, dans la partie gauche de la zone centrale.

Il est également possible de déterminer automatiquement la couleur de chaque noeud en fonction de ses paramètres. En mode overview, sélectionnez l'onglet "ranking" en haut de la partie gauche de la fenêtre, cliquez sur le bouton "Nodes" (puisqu'on va colorier les noeuds) et sélectionnez la roue de couleur un peu à droite. Choisissez le paramètre à prendre en compte dans la liste déroulante juste en dessous et ajustez les seuils et les couleurs.

Gephi : coloration des noeuds en fonction de la valeur d'un de leur paramètre (contôles dans la partie supérieure gauche)

Gephi : coloration des noeuds en fonction de la valeur d'un de leur paramètre (contôles dans la partie supérieure gauche)

Enfin, il est possible de colorier les noeuds en fonction de propriétés topologiques du graphe (par exemple leur degré, c'est à dire leurs nombre de voisins ; dans la même liste déroulante que précédemment). On peut aussi constituer des groupes de noeuds topologiquement proches. Pour cela, il va falloir calculer des classes de modularité.

  • dans la partie droite de la fenêtre, sélectionnez l'onglet "Statistics" et lancez le calcul de modularité. Si vous obtenez trop de communautés, augmentez la valeur du paramètre de résolution
  • dans la partie gauche de la fenêtre, choisissez l'onglet "Partition", rafraîchissez éventuellement avec le bouton aux deux flèches vertes, puis sélectionnez "Modularity class" dans la liste déroulante
Gephi : coloration des noeuds selon leur classe de modularité

Gephi : coloration des noeuds selon leur classe de modularité

Taille des noeuds

De même que pour la couleur, il est possible de faire varier la taille des noeuds en fonction de la valeur d'un paramètre ou de la topologie. Dans la partie gauche de la fenêtre, sélectionnez à nouveau l'onglet "Ranking" puis le bouton "Nodes". Cette fois-ci, cliquez sur le bouton en forme de diamant pour faire varier la taille. Sélectionnez ensuite le paramètre à prendre en compte (par exemple le degré) et ajustez les bornes. On peut alors ajuster les positions en appliquant une ou plusieurs fois le layout "Expansion".

Gephi : modification de la taille des noeuds en fonction de leur degré

Gephi : modification de la taille des noeuds en fonction de leur degré

Gephi : modification de la taille des noeuds en fonction de leur degré puis application du layout Expansion pour ajuster les positions

Gephi : modification de la taille des noeuds en fonction de leur degré puis application du layout Expansion pour ajuster les positions

 Prévisualisation

En passant en mode preview, il est possible de régler certains paramètres finaux comme la représentation des arêtes sous forme courbe, la taille de la police pour les noms des noeuds, ou encore rendre celle-ci proportionnelle à la taille du noeud.

Gephi : mode preview

Gephi : mode preview

Pour les gros graphes, afficher les noms de tous les noeuds rend souvent la figure illisble. On pourrait appliquer à nouveau le layout d'expansion ou le layout noverlap qui supprime le recouvrement des noms, mais cela rendrait la taille des nom trop petite par rapport à la taille globale du graphe.

Gephi : mode preview avec les labels (sans filtrage)

Gephi : mode preview avec les labels (sans filtrage)

Filtrage

Jusqu'à présent, les opérations s'opéraient sur le graphe en entier. Il est également possible de ne sélectionner que certaines portions du graphe pour leur appliquer des transformations spécifiques. Ici, nous n'allons afficher les noms que des noeuds les plus gros (on avait rendu la taille des noeuds proportionnelle à leur degré).

Gephi : query for selecting the nodes with the highest degrees

Gephi : requête pour sélectionner les noeuds de plus haut degré

En mode overview, sélectionnez l'onglet "Filter" à droite de la fenêtre, et dans la rubrique "Topology" choisissez "Degree range".  Glissez-le jusque dans la partie "Queries" en bas à droite de la fenêtre (sous Mac, un simple clic suffit). Déplacez la glissière de la borne inférieure vers la droite de façon à ne pas retenir les noeuds de degré les plus faibles (vous voyez en même temps les conséquences sur l'histogramme du dessous). Cliquez ensuite sur le bouton "Select" (l'idée est d'afficher tous les noeuds, mais uniquement le nom des noeuds sélectionnés ; si vous aviez choisi "Filter", les noeuds de faible degré auraient été masqués). Assurez-vous que le bouton "Hide nodes/edges lables if not in filtered graph" (un A avec une flèche blanche) en haut à droite est bien séléctionné (NB: je n'arrive jamais à très bien savoir si ce bouton est activé ou non ; si ça ne marche pas, revenir ici et recliquer au cas où...). Il faut ensuite dérouler le menu qui se trouve dans la partie inférieure de la zone centrale, choisir l'onglet "Labels" et cocher "Node". Repassez en mode preview et cliquez sur le bouton "Refresh" en bas à gauche.

 

Gephi : preview mode after selecting the nodes with the highest degrees

Gephi : mode preview après avoir sélectionné les noeuds de plus haut degré

Gephi: detail du graphe en n'affichant que les noms des noeuds dont le degré est supérieur au seuil

Gephi: detail du graphe en n'affichant que les noms des noeuds dont le degré est supérieur au seuil

Remerciements

Merci à ook4mi, muraveill, Glock21 et Yoann M. pour les commentaires et discussions lors de l'édition de cet article.

15 commentaires sur “Gephi pour la visualisation et l'analyse de graphes

  1. \"Tulip fait un segfault au lancement\" -> LOL
    Quand on était en Master, compiler Tulip c\'était un peu le baptème du feu, leur manière de nous déniaiser. Pourtant je pensais que c\'était moins galère à compiler/installer maintenant. Visiblement, j\'étais dans l\'erreur.

    En tout cas ça a l\'air cool Gephi, il y a moyen de faire des plugins?

    Tulip a un truc très sympa aussi, un petit éditeur Python intégré avec des modules qui permettent de manipuler ses graphes en Python directement dans le logiciel, y a-t-il un truc similaire dans Gephi?

    • Oui, on peut écrire des plugins. Il y a un tuto sur le wiki Gephi (partie \"Programming with Gephi\") avec un quickstart et un tuto par type de plugin : layout, métrique, filtre...

      Il y a aussi un template pour faire rapidement un petit plugin.

      Enfin, oui, il y a un plugin pour faire des scripts (en python)

      • Nice 🙂 je testerai à l\'occase! Merci pour les précisions.

  2. A noter: j\'ai eu l\'occasion de faire un plugin pour cytoscape, c\'est en JAVA et c\'est assez simple aussi (il y a des tutos)

    • J\'avais donné un projet de plugin cytoscape à faire à mes étudiants de l\'an dernier, ils s\'y sont magistralement cassé les dents. Ils avaient eu de gros soucis de dépendances avec la version 2 du coup ils ont utilisé la 3. Sauf qu\'à l\'époque, les tutos étaient à 99% pour la 2, et la doc pour le développement de plugins sur la 3 était inexistante. Ça a probablement été alimenté depuis mais l\'expérience m\'est un peu restée en travers j\'avoue.

      • Ayant fait l\'expérience de développement sur Cytoscape 2.8.x et Cytoscape 3.x en projet étudiant, je dois avouer que la transition est très dure car toute l\'architecture de Cytoscape a changée. Les changements ne se voient pas car l\'interface n\'a pratiquement pas bougé mais les développeurs de Cytoscape ont presque fait table rase pour repartir sur une nouvelle base propre, nette et robuste : OSGi.
        Avec le temps de plus en plus de documentation apparaît et les forums cytoscape-discuss et cytoscape-helpdesk m\'ont apporté pas mal de réponses.

        Avec le passage à OSGi, les plug-in sont maintenant séparés du programme et des autres plug-in et donc on tombe effectivement moins sur des problèmes de dépendances en conflits. Un des gros avantages d\'OSGi est également de pouvoir relancer son plug-in très rapidement juste en le réinstallant (en copiant par dessus l\'ancien jar).
        Cette architecture apporte par contre aussi quelques complications notamment au chargement de classes via réflexivité (une pratique courante dans les librairies de parser XML) et aussi à l\'étape de packaging du plug-in qui doit être correctement configurer (déclaration des librairies et packages à inclure et à exclure).
        Mais globalement, le développement en version 3 est bien plus agréable, plus propre et robuste.

        Je poste le projet de plug-in Cytoscape 3 sur lequel je travaille si ça intéresse des gens: PPiMapBuilder

        • Merci pour ces précisions.

          Un petit tuto sur cytoscape ?

          • Un tutoriel d\'utilisation de Cytoscape ou de développement de plug-in Cytoscape 3?
            Sur l\'utilisation de Cytoscape je ne serais pas le mieux placé, j\'utilise assez peu de fonctions. Je me concentre sur les fonctionnalités liées au plug-in sur lequel je travaille.
            Si c\'est sur le développement, je ne suis pas sur de pouvoir faire un tutoriel prochainement étant actuellement en stage et actif sur d\'autres projets (PPiMapBuilder notamment).

            Cependant, si vraiment ça intéresse des gens, je peux m\'arranger pour travailler avec un ami (également sur le projet PPiMapBuilder) sur la rédaction d\'un tutoriel d\'introduction au développement de plug-in Cytoscape 3.

  3. Je trouve que les commentaires sur cytoscape et tulip sont vraiment en dehors de la plaque. Cytoscape est vraiment simple à installer et on peut aussi s\'en sortir avec tulip.

    Ensuite je suis content de découvrir un nouveau logiciel pour faire des graphs.
    Merci je testerai !

  4. ah et pour compléter l\'article il y a aussi igraph pour R : http://igraph.sourceforge.net/screenshots.html

  5. Petit changement du logiciel avec la nouvelle version (de 0.8 à 0.9) :
    -Fusion de l\'onglet partition et ranking, les options sont les mêmes
    -Disparition du boulot select pour filtrer selon les degrès du graph => la je trouve pas comment faire une opération équivalente

  6. comment on faire l\'intégration une base de donné scientifique exemple(NCBI ou PubMed ou Gen Bank )dans biopython puis transmis ce travail dans python et on travaille avec des commandes dans python pour interprété une séquence d\'ADN ou quelque chose

    • et comment installer biopython dans python dans windows 7 j\'ai pas peux faire ce travail car je suis biologiste si pas informaticiens svp aidez moi pour faire ce projet

  7. @Sonia:
    http://www.youube.com/watch?v=ddpYVA-7wq4

    ici tu peux juste voir en general comment on installe les packages (exemple: biopython) de python sur windows 7.

    Tu dois chercher le package biopython pour windows, le telecharger et suivre les instructions de la video.

    J espere que ca t aidera

  8. Bonjour
    j\'espère que vous pourriez m\'aider parce que je galère grave avec Gephi
    comment graphe des graphes d\'animation sur Gephi
    il y a t-il une interface à télécharger qui me permettra d\'avoir un graphe de gephi et à coté un onglet filtre qui permettra de jouer sur le graphe??

    Merci d\'avance pour votre réponse

Laisser un commentaire