Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Gephi pour la visualisation et l'analyse de graphes

Logo Gephi | |Tous droits réservés
Logo Gephi | | Tous droits réser­vés

Gephi est un logi­ciel de visua­li­sa­tion et d'analyse de graphes. Il est dis­tri­bué sous les licences CDDL 1.0 et GPLv3, et est dis­po­nible sur les prin­ci­paux sys­tèmes d'exploitation.

Gephi est pré­vu d'emblée pour tous types de graphes (pas seule­ment en bio­in­for­ma­tique) dans les prin­ci­paux for­mats. Tulip et Cytos­cape sont des outils simi­laires. Cepen­dant, chez moi Cytos­cape demande plein de dépen­dances dif­fi­ciles à satis­faire, et Tulip fait un seg­fault au lan­ce­ment. Pour créer de petits graphes et pla­cer les noeuds à la main (ou avec des algo­rithmes de layout simples) yED est assez effi­cace, 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), mer­ci de lais­ser un com­men­taire pour nous en faire pro­fi­ter.

La com­mu­nau­té Gephi com­porte un bon noyau fran­co­phone, une par­tie impor­tante des déve­lop­peurs de Gephi étant éga­le­ment fran­çais (au début, Gephi était déve­lop­pé par des étu­diants de l'UTC). Gephi est dis­po­nible en anglais, en fran­çais, en espa­gnol et en por­tu­guais.

Organisation

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

  • l'onglet labo­ra­toire de don­nées ("data labo­ra­to­ry") per­met de voir et de modi­fier les noeuds et les arcs du graphe ain­si que leurs pro­prié­tés ;
  • l'onglet Vue d'ensemble ("over­view") per­met d'effectuer l'analyse et la plus grande par­tie de la mise en forme du graphe (appli­ca­tion d'un algo­rithme de posi­tion­ne­ment, cou­leur et taille des noeuds et des arcs…) ;
  • l'onglet pré-visua­li­sa­tion ("pre­view") per­met de peau­fi­ner la visua­li­sa­tion 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 Over­view (à gauche), Data labo­ra­to­ry (au centre) et Pre­view (à droite).

Dans le cadre de la bio­in­for­ma­tique, on ne bidouille en géné­ral pas les don­nées : elles sont ce qu'elles sont et il faut bien faire avec. On passe donc typi­que­ment le plus clair de son temps sur l'onglet over­view et on finit sur l'onglet de pré-visua­li­sa­tion.

Charger un graphe

Gephi sup­porte dif­fé­rents types de graphes : diri­gés ou non, gros ou non, hié­rar­chiques (un noeud est lui-même un graphe, ce qui per­met d'agréger une par­tie d'un graphe), dyna­miques (les noeuds et la topo­lo­gie varient au cours du temps)… Gephi sup­porte natu­rel­le­ment les prin­ci­paux for­mats de fichier : GEXF, Gra­phML, dot…

Vous pou­vez par­tir d'un pro­jet vide et ajou­ter les noeuds et les arcs à la main, ou bien impor­ter une feuille d'un tableur (tou­jours depuis l'onglet "data labo­ra­to­ry"), ou encore géné­rer un graphe aléa­toire à par­tir du menu "File".  Si vous vou­lez ajou­ter des noeuds ou des arcs à la main, vous pou­vez le faire soit depuis l'onglet "data labo­ra­to­ry", soit depuis l'onglet "over­view" en uti­li­sant res­pec­ti­ve­ment les bou­tons "node pen­cil" et "edge pen­cil" (en forme de crayon dans la barre d'outils ver­ti­cale à gauche de la par­tie cen­trale).

Pour géné­rer ou modi­fier vos graphes, vous pou­vez typi­que­ment uti­li­ser des librai­ries pour votre lan­gage de pro­gram­ma­tion pré­fé­ré (par exemple net­workx pour Python), mais c'est une autre his­toire. NB : Gephi dis­pose aus­si d'un plu­gin Seman­tic­We­bIm­port pour faire des requêtes SPARQL sur du RDF, mais on y revien­dra aus­si dans un autre article.

Pour la suite de la visite, nous allons uti­li­ser demo-gephi.gexf. Ce graphe a été géné­ré à par­tir de Reac­tome et montre une hié­rar­chie de voies méta­bo­liques.

Analyser un graphe

Dans la par­tie Over­view, le tiers droit de l'écran four­nit :

  • en haut, dans la par­tie "Context" : un rap­pel des pro­prié­tés du graphe (diri­gé ou non, nombre de noeuds, nombre d'arcs) ;
  • en bas, dans la par­tie "Sta­tis­tics" : plein de mesures clas­siques : le degré moyen, la den­si­té, l'excentricité,… Cli­quez sur "Run" pour lan­cer ces mesures, puis sur le petit icône "View report" si vous avez besoin d'y reve­nir.

Visualiser un graphe

Pour visua­li­ser un graphe, on en fixe les carac­té­ris­tiques prin­ci­pales dans l'onglet over­view, puis on génère une jolie ver­sion dans l'onglet pre­view (et on fait des allers-retours tant que l'on n'est pas satis­fait).

Gephi : mode Overview et statistiques sur le graphe
Gephi : mode Over­view et sta­tis­tiques sur le graphe

Manipulation du graphe

Le bou­ton droit de la sou­ris per­met de dépla­cer le graphe laté­ra­le­ment ou de haut en bas.

La molette per­met de zoo­mer.

Si vous êtes un peu per­du, il y a un bou­ton "cen­ter on graph" (une loupe avec une cible)  sur la gauche de la zone cen­trale. Cela per­met de recen­trer le graphe et d'adapter le zoom pour le voir en tota­li­té.

Disposition des noeuds

Par défaut, le posi­tion­ne­ment des noeuds se fait de façon aléa­toire. Ce n'est pas for­cé­ment très plai­sant, sur­tout pour les gros graphes.

Si vous lais­sez quelques secondes le poin­teur de votre sou­ris sur un noeud, celui-ci et ses voi­sins directs sont mis en valeur.

En gar­dant le bou­ton gauche enfon­cé, vous pou­vez dépla­cer le noeud. Évi­dem­ment, ça devient vite fas­ti­dieux au delà de trois noeuds, mais c'est par­fois bien pra­tique pour faire de petits ajus­te­ments.

Gephi dis­pose d'algorithmes de layout qui prennent le posi­tion­ne­ment en charge. Ca peut valoir la peine d'installer quelques gref­fons sup­plé­men­taires via le menu Outils. Chaque algo­rithme de layout a ses carac­té­ris­tiques qui le rendent plus ou moins adap­té au type de graphe. Yifan Hu, Yifan Hu mul­ti­le­vel, Ope­norb et Fruch­ter­mann Rein­gold sont en géné­ral de bons can­di­dats. Ici, on a appli­qué Yifan Hu plu­sieurs fois de suite jusqu'à ce que la posi­tion des branches se sta­bi­lise. NB : on peut tou­jours ajus­ter ponc­tuel­le­ment à la main la posi­tion de cer­tains noeuds après l'application du layout.

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

Couleur des noeuds

Il est pos­sible de colo­rier les noeuds un par un à la main avec le bou­ton pot de pein­ture, dans la par­tie gauche de la zone cen­trale.

Il est éga­le­ment pos­sible de déter­mi­ner auto­ma­ti­que­ment la cou­leur de chaque noeud en fonc­tion de ses para­mètres. En mode over­view, sélec­tion­nez l'onglet "ran­king" en haut de la par­tie gauche de la fenêtre, cli­quez sur le bou­ton "Nodes" (puisqu'on va colo­rier les noeuds) et sélec­tion­nez la roue de cou­leur un peu à droite. Choi­sis­sez le para­mètre à prendre en compte dans la liste dérou­lante juste en des­sous et ajus­tez les seuils et les cou­leurs.

Gephi : coloration des noeuds en fonction de la valeur d'un de leur paramètre (contôles dans la partie supérieure gauche)
Gephi : colo­ra­tion des noeuds en fonc­tion de la valeur d'un de leur para­mètre (contôles dans la par­tie supé­rieure gauche)

Enfin, il est pos­sible de colo­rier les noeuds en fonc­tion de pro­prié­tés topo­lo­giques du graphe (par exemple leur degré, c'est à dire leurs nombre de voi­sins ; dans la même liste dérou­lante que pré­cé­dem­ment). On peut aus­si consti­tuer des groupes de noeuds topo­lo­gi­que­ment proches. Pour cela, il va fal­loir cal­cu­ler des classes de modu­la­ri­té.

  • dans la par­tie droite de la fenêtre, sélec­tion­nez l'onglet "Sta­tis­tics" et lan­cez le cal­cul de modu­la­ri­té. Si vous obte­nez trop de com­mu­nau­tés, aug­men­tez la valeur du para­mètre de réso­lu­tion
  • dans la par­tie gauche de la fenêtre, choi­sis­sez l'onglet "Par­ti­tion", rafraî­chis­sez éven­tuel­le­ment avec le bou­ton aux deux flèches vertes, puis sélec­tion­nez "Modu­la­ri­ty class" dans la liste dérou­lante
Gephi : coloration des noeuds selon leur classe de modularité
Gephi : colo­ra­tion des noeuds selon leur classe de modu­la­ri­té

Taille des noeuds

De même que pour la cou­leur, il est pos­sible de faire varier la taille des noeuds en fonc­tion de la valeur d'un para­mètre ou de la topo­lo­gie. Dans la par­tie gauche de la fenêtre, sélec­tion­nez à nou­veau l'onglet "Ran­king" puis le bou­ton "Nodes". Cette fois-ci, cli­quez sur le bou­ton en forme de dia­mant pour faire varier la taille. Sélec­tion­nez ensuite le para­mètre à prendre en compte (par exemple le degré) et ajus­tez les bornes. On peut alors ajus­ter les posi­tions en appli­quant une ou plu­sieurs fois le layout "Expan­sion".

Gephi : modification de la taille des noeuds en fonction de leur degré
Gephi : modi­fi­ca­tion de la taille des noeuds en fonc­tion 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 : modi­fi­ca­tion de la taille des noeuds en fonc­tion de leur degré puis appli­ca­tion du layout Expan­sion pour ajus­ter les posi­tions

 Prévisualisation

En pas­sant en mode pre­view, il est pos­sible de régler cer­tains para­mètres finaux comme la repré­sen­ta­tion des arêtes sous forme courbe, la taille de la police pour les noms des noeuds, ou encore rendre celle-ci pro­por­tion­nelle à la taille du noeud.

Gephi : mode preview
Gephi : mode pre­view

Pour les gros graphes, affi­cher les noms de tous les noeuds rend sou­vent la figure illisble. On pour­rait appli­quer à nou­veau le layout d'expansion ou le layout nover­lap qui sup­prime le recou­vre­ment des noms, mais cela ren­drait la taille des nom trop petite par rap­port à la taille glo­bale du graphe.

Gephi : mode preview avec les labels (sans filtrage)
Gephi : mode pre­view avec les labels (sans fil­trage)

Filtrage

Jusqu'à pré­sent, les opé­ra­tions s'opéraient sur le graphe en entier. Il est éga­le­ment pos­sible de ne sélec­tion­ner que cer­taines por­tions du graphe pour leur appli­quer des trans­for­ma­tions spé­ci­fiques. Ici, nous n'allons affi­cher les noms que des noeuds les plus gros (on avait ren­du la taille des noeuds pro­por­tion­nelle à leur degré).

Gephi : query for selecting the nodes with the highest degrees
Gephi : requête pour sélec­tion­ner les noeuds de plus haut degré

En mode over­view, sélec­tion­nez l'onglet "Fil­ter" à droite de la fenêtre, et dans la rubrique "Topo­lo­gy" choi­sis­sez "Degree range".  Glis­sez-le jusque dans la par­tie "Que­ries" en bas à droite de la fenêtre (sous Mac, un simple clic suf­fit). Dépla­cez la glis­sière de la borne infé­rieure vers la droite de façon à ne pas rete­nir les noeuds de degré les plus faibles (vous voyez en même temps les consé­quences sur l'histogramme du des­sous). Cli­quez ensuite sur le bou­ton "Select" (l'idée est d'afficher tous les noeuds, mais uni­que­ment le nom des noeuds sélec­tion­nés ; si vous aviez choi­si "Fil­ter", les noeuds de faible degré auraient été mas­qués). Assu­rez-vous que le bou­ton "Hide nodes/​edges lables if not in fil­te­red graph" (un A avec une flèche blanche) en haut à droite est bien séléc­tion­né (NB : je n'arrive jamais à très bien savoir si ce bou­ton est acti­vé ou non ; si ça ne marche pas, reve­nir ici et recli­quer au cas où…). Il faut ensuite dérou­ler le menu qui se trouve dans la par­tie infé­rieure de la zone cen­trale, choi­sir l'onglet "Labels" et cocher "Node". Repas­sez en mode pre­view et cli­quez sur le bou­ton "Refresh" en bas à gauche.

Gephi : preview mode after selecting the nodes with the highest degrees
Gephi : mode pre­view après avoir sélec­tion­né 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

Mer­ci à ook4mi, mura­veill, Glock21 et Yoann M. pour les com­men­taires et dis­cus­sions lors de l'édition de cet article.

 

 

Vous avez aimé ? Dites-le nous !

Moyenne : 0 /​ 5. Nb de votes : 0

Pas encore de vote pour cet article.

Partagez cet article




Commentaires

15 réponses à “Gephi pour la visualisation et l'analyse de graphes”

  1. Nisaea_

    "Tulip fait un seg­fault au lan­ce­ment" -> LOL
    Quand on était en Mas­ter, com­pi­ler Tulip c'était un peu le bap­tème du feu, leur manière de nous déniai­ser. Pour­tant je pen­sais que c'était moins galère à compiler/​installer main­te­nant. Visi­ble­ment, j'étais dans l'erreur.

    En tout cas ça a l'air cool Gephi, il y a moyen de faire des plu­gins ?

    Tulip a un truc très sym­pa aus­si, un petit édi­teur Python inté­gré avec des modules qui per­mettent de mani­pu­ler ses graphes en Python direc­te­ment dans le logi­ciel, y a‑t-il un truc simi­laire dans Gephi ?

    1. Oui, on peut écrire des plu­gins. Il y a un tuto sur le wiki Gephi (par­tie "Pro­gram­ming with Gephi") avec un quicks­tart et un tuto par type de plu­gin : layout, métrique, filtre…

      Il y a aus­si un tem­plate pour faire rapi­de­ment un petit plu­gin.

      Enfin, oui, il y a un plu­gin pour faire des scripts (en python)

      1. Nisaea_

        Nice 🙂 je tes­te­rai à l'occase ! Mer­ci pour les pré­ci­sions.

  2. Avatar de cecile

    A noter : j'ai eu l'occasion de faire un plu­gin pour cytos­cape, c'est en JAVA et c'est assez simple aus­si (il y a des tutos)

    1. Nisaea_

      J'avais don­né un pro­jet de plu­gin cytos­cape à faire à mes étu­diants de l'an der­nier, ils s'y sont magis­tra­le­ment cas­sé les dents. Ils avaient eu de gros sou­cis de dépen­dances avec la ver­sion 2 du coup ils ont uti­li­sé la 3. Sauf qu'à l'époque, les tutos étaient à 99% pour la 2, et la doc pour le déve­lop­pe­ment de plu­gins sur la 3 était inexis­tante. Ça a pro­ba­ble­ment été ali­men­té depuis mais l'expérience m'est un peu res­tée en tra­vers j'avoue.

      1. Ayant fait l'expérience de déve­lop­pe­ment sur Cytos­cape 2.8.x et Cytos­cape 3.x en pro­jet étu­diant, je dois avouer que la tran­si­tion est très dure car toute l'architecture de Cytos­cape a chan­gée. Les chan­ge­ments ne se voient pas car l'interface n'a pra­ti­que­ment pas bou­gé mais les déve­lop­peurs de Cytos­cape ont presque fait table rase pour repar­tir sur une nou­velle base propre, nette et robuste : OSGi.
        Avec le temps de plus en plus de docu­men­ta­tion appa­raît et les forums cytos­cape-dis­cuss et cytos­cape-help­desk m'ont appor­té pas mal de réponses.

        Avec le pas­sage à OSGi, les plug-in sont main­te­nant sépa­rés du pro­gramme et des autres plug-in et donc on tombe effec­ti­ve­ment moins sur des pro­blèmes de dépen­dances en conflits. Un des gros avan­tages d'OSGi est éga­le­ment de pou­voir relan­cer son plug-in très rapi­de­ment juste en le réins­tal­lant (en copiant par des­sus l'ancien jar).
        Cette archi­tec­ture apporte par contre aus­si quelques com­pli­ca­tions notam­ment au char­ge­ment de classes via réflexi­vi­té (une pra­tique cou­rante dans les librai­ries de par­ser XML) et aus­si à l'étape de packa­ging du plug-in qui doit être cor­rec­te­ment confi­gu­rer (décla­ra­tion des librai­ries et packages à inclure et à exclure).
        Mais glo­ba­le­ment, le déve­lop­pe­ment en ver­sion 3 est bien plus agréable, plus propre et robuste.

        Je poste le pro­jet de plug-in Cytos­cape 3 sur lequel je tra­vaille si ça inté­resse des gens : PPi­Map­Buil­der

        1. Mer­ci pour ces pré­ci­sions.

          Un petit tuto sur cytos­cape ?

          1. Avatar de Gcornut

            Un tuto­riel d'utilisation de Cytos­cape ou de déve­lop­pe­ment de plug-in Cytos­cape 3 ?
            Sur l'utilisation de Cytos­cape je ne serais pas le mieux pla­cé, j'utilise assez peu de fonc­tions. Je me concentre sur les fonc­tion­na­li­tés liées au plug-in sur lequel je tra­vaille.
            Si c'est sur le déve­lop­pe­ment, je ne suis pas sur de pou­voir faire un tuto­riel pro­chai­ne­ment étant actuel­le­ment en stage et actif sur d'autres pro­jets (PPi­Map­Buil­der notam­ment).

            Cepen­dant, si vrai­ment ça inté­resse des gens, je peux m'arranger pour tra­vailler avec un ami (éga­le­ment sur le pro­jet PPi­Map­Buil­der) sur la rédac­tion d'un tuto­riel d'introduction au déve­lop­pe­ment de plug-in Cytos­cape 3.

  3. Avatar de magictrip
    magictrip

    Je trouve que les com­men­taires sur cytos­cape et tulip sont vrai­ment en dehors de la plaque. Cytos­cape est vrai­ment simple à ins­tal­ler et on peut aus­si s'en sor­tir avec tulip.

    Ensuite je suis content de décou­vrir un nou­veau logi­ciel pour faire des graphs.
    Mer­ci je tes­te­rai !

  4. Avatar de magictrip
    magictrip

    ah et pour com­plé­ter l'article il y a aus­si igraph pour R : http://​igraph​.sour​ce​forge​.net/​s​c​r​e​e​n​s​h​o​t​s​.​h​tml

  5. Mathurin
    Mathurin

    Petit chan­ge­ment du logi­ciel avec la nou­velle ver­sion (de 0.8 à 0.9) :
    ‑Fusion de l'onglet par­ti­tion et ran­king, les options sont les mêmes
    ‑Dis­pa­ri­tion du bou­lot select pour fil­trer selon les degrès du graph => la je trouve pas com­ment faire une opé­ra­tion équi­va­lente

  6. com­ment on faire l'intégration une base de don­né scien­ti­fique exemple(NCBI ou Pub­Med ou Gen Bank )dans bio­py­thon puis trans­mis ce tra­vail dans python et on tra­vaille avec des com­mandes dans python pour inter­pré­té une séquence d'ADN ou quelque chose

    1. et com­ment ins­tal­ler bio­py­thon dans python dans win­dows 7 j'ai pas peux faire ce tra­vail car je suis bio­lo­giste si pas infor­ma­ti­ciens svp aidez moi pour faire ce pro­jet

  7. Avatar de lansana
    lansana

    @Sonia :
    http://​www​.youube​.com/​w​a​t​c​h​?​v​=​d​d​p​Y​V​A​-​7​wq4

    ici tu peux juste voir en gene­ral com­ment on ins­talle les packages (exemple : bio­py­thon) de python sur win­dows 7.

    Tu dois cher­cher le package bio­py­thon pour win­dows, le tele­char­ger et suivre les ins­truc­tions de la video.

    J espere que ca t aide­ra

  8. Bon­jour
    j'espère que vous pour­riez m'aider parce que je galère grave avec Gephi
    com­ment graphe des graphes d'animation sur Gephi
    il y a t‑il une inter­face à télé­char­ger qui me per­met­tra d'avoir un graphe de gephi et à coté un onglet filtre qui per­met­tra de jouer sur le graphe??

    Mer­ci d'avance pour votre réponse

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.