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.
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).
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.
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.
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
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".
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.
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.
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é).
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.
Remerciements
Merci à ook4mi, muraveill, Glock21 et Yoann M. pour les commentaires et discussions lors de l'édition de cet article.
Laisser un commentaire