L’analyse de réseaux avec R, les premiers pas

R est un logiciel libre, multiplateforme et qui permet de réaliser à peu près tous les traitements de données possibles dont, bien entendu, l’analyse de réseaux. Seul inconvénient, il fonctionne à l’aide de scripts et nécessite donc l’apprentissage d’un langage particulier. Pourquoi alors l’utiliser ? Parce qu’il s’agit d’un logiciel très puissant, qu’il permet de tout faire, et surtout parce que, une fois le langage maîtrisé, il permet de gagner un temps fou. Une fois le script écrit, obtenir toute une série de mesures sur un graphe prend quelques secondes alors que la même opération avec un logiciel presse boutons nécessite quelques dizaines de clics… Ce billet s’adresse aux personnes tentées par R mais qui n’osent pas encore franchir le pas.

La première partie explique comment installer R, l’interface RStudio (et son utilité), comment charger les modules (packages) d’analyse de réseaux et le fonctionnement de l’aide. La deuxième partie montre quelques manipulations basiques sur les graphes fournis en exemple avec les modules. Un second billet détaillera les procédures d’importation de ses propres données (sommets, liens et attributs) et les possibilités graphiques du logiciel (mise en ligne prévue pour fin avril).

Installer R et RStudio

Première étape : se rendre sur le site http://cran.r-project.org/ et télécharger la version de R compatible avec votre système d’exploitation. Puis se rendre sur le site http://www.rstudio.com/ et télécharger la dernière version de RStudio. RStudio est une interface graphique qui facilite l’utilisation de R en rendant un certain nombre de fonctions (rubriques d’aide, actualisation des modules etc.) beaucoup plus simples à utiliser. Elle n’est pas indispensable mais elle est fortement recommandée quand on débute avec R.

Une fois les deux logiciels téléchargés, installez-les (sous Windows, clic droit et exécuter en temps qu’administrateur). Les choix proposés par défaut sont généralement pertinents, vous pouvez donc les laisser. Lancer ensuite RStudio et vous obtenez une fenêtre de ce type (la capture a été effectuée sous environnement Windows 7, RStudio version 0.97.336). Quatre fenêtres sont ouvertes : celle en haut à gauche accueille les scripts, c’est-à-dire la suite d’instructions que vous allez exécuter ; les résultats apparaîtront dans la fenêtre en bas à gauche appelée la console. La fenêtre en haut à droite liste les jeux de données utilisés et l’historique des manipulations effectuées. Enfin, la fenêtre en bas à droite héberge les rubriques d’aide, les sorties graphiques et la liste des packages installés.

Interface de RStudio

Charger un package

R est un logiciel modulaire. Certains modules sont inclus par défaut lors de l’installation du logiciel, d’autres plus spécifiques doivent être installés. Pour débuter en analyse de réseaux, deux modules sont indispensables : le package statnet (qui est en réalité un ensemble de packages dépendants les uns des autres) et le package igraph. D’autres packages existent et plusieurs billets de ce blog en présentent certains (voir les billets sur le module intergraph, le module bipartite, le module QuACN ou le module qgraph).

statnet et igraph sont des packages inclus dans la version de base de R mais ils ne sont pas actifs au démarrage. Il convient donc de les charger à l’aide des fonctions library(statnet) et library(igraph). Attention, mais j’y reviendrai pas la suite, ces deux packages ne peuvent pas fonctionner ensemble. Pour exécuter une fonction, deux possibilités existent : la taper directement dans la console puis taper Entrée ; la taper dans un script et taper Ctrl + Entrée pour l’exécuter. Le résultat est exactement le même. Mais tout l’intérêt de R est de créer des scripts (des suites de commandes) qui peuvent être sauvegardés (ce sont de simples fichiers texte ayant l’extension .R) et réutilisés ensuite. Une bonne habitude est donc, à l’ouverture de RStudio, de créer un nouveau script à l’aide des menus déroulants File > Create new R script. Le menu File permet de créer les scripts, de les sauvegarder à l’endroit de son choix, de les ouvrir etc.

Créer un script avec RStudio

Au fait, pourquoi deux packages ? statnet est développé par des sociologues férus de modèles statistiques (ERGM) ; igraph est développé par des physiciens et des informaticiens. On trouve dans les deux les mesures les plus communes en analyse de réseaux mais certaines ne sont proposées que dans l’un de ces deux packages. Par ailleurs, la simplicité des commandes et la clarté des résultats varie d’un package à l’autre. A titre personnel, l’importation des données attributaires me semble beaucoup plus simple avec igraph mais je préfère les visualisations proposées par statnet. Mais ceci est affaire de goût… Autre avantage d’utiliser deux packages, ce qu’on ne parvient pas à faire avec l’un,  on réussit généralement à le faire avec l’autre.

Les rubriques d’aide

Dans RStudio, lorsque que vous chargez un package à l’aide de la commande library(nom_du_package), l’aide s’affiche dans un onglet de la fenêtre Help. Si vous avez besoin de savoir comment fonctionne une instruction, il suffit de la taper dans la console, de taper Ctrl + Entrée et la rubrique s’affiche alors dans la fenêtre Help. Quand les créateurs et/ou créatrices du package ont fait du bon boulot, vous trouvez une définition de la fonction, sa structure (éléments indispensables et optionnels), les éléments pris en entrée et ceux fournis en sortie et enfin un exemple d’utilisation. La rédaction de la documentation étant en grande partie normée, ces rubriques sont généralement de bonne qualité (mais en anglais évidemment…).

Aide d'igraph dans RStudio

Les rubriques d’aide sont  – avec les forums et listes de diffusion consacrés à R – sont vos meilleurs alliés pour progresser rapidement. Lorsque que vous utilisez un package pour la première fois, prendre le temps de regarder les différentes fonctions, d’examiner les jeux de données disponibles, de tester les scripts d’exemple proposés vous fera gagner un temps précieux.

Mais il est temps d’entrer dans le vif du sujet… La suite du billet suppose que vous avez installé R et RStudio… et c’est tout.

Pour les deux packages, les manipulations proposées sont les suivantes : chargement d’un jeu de données, calcul de la densité du graphe, du nombre et de la taille des composantes connexes, et enfin calcul de deux mesures de centralités des sommets (degré et intermédiarité, soit en bon anglais degree et betweenness). Comme indiqué plus haut, les aspects liés à la visualisation et à l’importation de ses propres billets seront abordés dans un second billet.

Manipulations basiques avec statnet

Le petit texte qui suit est un script, c’est-à-dire une liste d’instructions. Les étapes sont toujours les mêmes : nettoyer l’espace de travail (rm = remove), charger le package, charger un jeu de données puis effectuer les opérations souhaitées sur ce jeu de données. Quand on débute (et même après), il est vivement conseillé de commenter ses scripts : il suffit de placer un croisillon (AltGr + 3 sur Windows, Maj + @ sur Mac). Et c’est bien un croisillon et non un dièse1…) et ce qui est tapé ensuite n’est pas pris en compte par le logiciel.

Plusieurs jeux de données sont fournis avec statnet et l’exemple proposé ici utilise le jeu de données nommé faux.magnolia.high. Ce graphe simule les liens d’amitiés sur un campus américain (pour obtenir plus d’informations, taper ?faux.magnolia.high dans la console, Entrée et les détails s’affichent dans la fenêtre Help).

rm(list=ls()) #supprimer tous les objets importés ou créés auparavant
library(statnet) #chargement du package  statnet
data(« faux.magnolia.high ») #chargement du jeu de données
g <- faux.magnolia.high #attribution d’un nom court (facilite la saisie)
g  #informations de base sur le graphe

Taper le nom de l’objet g permet d’obtenir les informations suivantes : nombre de sommets (vertices = 1461), caractéristiques du graphe (ici on apprend qu’il est non-orienté, non multiple, ne comprend pas de boucles et qu’il ne s’agit pas d’un hypergraphe : directed = FALSE hyper = FALSE loops = FALSE multiple = FALSE bipartite = FALSE). On apprend enfin qu’il comprend 974 liens et qu’il n’y a pas de données manquantes (total edges= 974 missing edges= 0 non-missing edges= 974). Dernier point, mais qui ne sera pas utilisé dans ce billet, l’existence d’attributs (sur les sommets et/ou les liens) est indiqué : chaque sommet comprend un nom et des indications portant sur le niveau scolaire, le genre et l’ethnie (Vertex attribute names: Grade Race Sex vertex.names).

gden(g) #calcul de la densité
component.dist(g) #nombre et compositions des composantes connexes

Cette dernière fonction crée trois objets différents : un objet membership qui précise pour chaque sommet la composante connexe à laquelle il appartient ; un objet csize (component size) qui donne la taille de chacune des composantes connexes ; un objet cdist qui décrit la distribution des tailles des composantes connexes. Si je souhaite utiliser ces résultats ensuite – et la remarque s’applique aux opérations suivantes – j’ai tout intérêt à créer un objet qui va stocker ces résultats et me permettre de les réutiliser ensuite. La procédure est simple, je fais précéder l’instruction d’un nom (prendre un nom explicite est recommandé) et du petit symbole <-, ce qui donne la ligne de commande suivante. Les résultats ne s’affichent pas dans la console mais sont stockés – et réutilisables – dans l’objet comp.connexe.

comp.connexe <- component.dist(g)
deg <- degree(g) #calcul des degrés
summary(deg) #informations sur les degrés (min, Q1, médiane, moyenne, Q3 et max)
bet <- betweenness(g) #calcul de la centralité d’intermédiarité
summary(bet) #informations sur la centralité d’intermédiarité
tab <- as.data.frame(cbind(g$vertex.names, deg, bet)) #création d’un tableau

Cette dernière ligne appelle un petit commentaire : je crée un tableau de données (as.data.frame) qui consiste à coller côte à côte 3 colonnes (cbind), ces 3 colonnes étant le nom des sommets (g$vertex.names), leur degré (deg) et leur centralité d’intermédiarité (bet). Cette étape n’est pas obligatoire mais on peut préférer stocker tous les résultats concernant les sommets dans un même tableau plutôt que de multiplier les objets à manipuler.

Manipulations basiques avec igraph

Le mini-script qui suit réplique la même suite d’opérations mais avec le package igraph (et avec un jeu de données différent, le fameux Zachary karate club dataset). Comme vous le verrez, les noms des fonctions se ressemblent parfois fortement. Mais, statnet et igraph ne pouvant être utilisés de façon simultanée, il convient tout d’abord de détacher le package statnet puis de charger le package igraph.

rm(list=ls()) #nettoyer l’espace de travail
detach(package:statnet) #détacher le package statnet
library(igraph) #charger le package igraph
library(igraphdata)#charger les jeux de données du package igraph
data(karate) #charger le jeu de données du Zachary karate club
g <- karate #lui donner un nom plus court
g #principales propriétés

Taper g donne le résultat suivant : IGRAPH U-W- 34 78 — Zachary’s karate club network + attr: name (g/c), Citation (g/c), Author (g/c), Faction (v/n), weight (e/n). Ce qui en termes compréhensibles se traduit de la manière suivante : le graphe est non-orienté (U undirected) et valué (W weighted), il comprend 34 sommets et 78 liens, son nom est Zachary’s karate club network et il comprend un certain nombre d’attributs : sur le graphe (g : nom, auteur et citation), sur les sommets (v comme vertex ) et sur les lien (e comme edge).

graph.density(g) #densité du graphe
comp.connexe <- clusters(g) # composantes connexes

La fonction clusters crée trois objets : un objet membership qui indique à quelle composante appartient chaque sommet ; un objet csize indiquant la taille des composantes connexes et enfin un objet no donnant le nombre de composantes connexes. Le graphe étant ici connexe, les résultats de cette commande sont d’un intérêt relatif.

deg <- degree(g) #degré des sommets
bet <- betweenness(g) #centralité d’intermédiarité
tab <- as.data.frame(cbind(deg, bet)) #création d’un tableau
head(tab,10) #examen des 10 premières lignes du tableau

Et c’est tout pour aujourd’hui… Dernier conseil pour finir : avec R, il est important de prendre son temps et d’examiner les problèmes de manière séquentielle. Si vous abordez R pour la première fois, vous ne pouvez pas en deux heures apprendre à importer vos données, à lancer et interpréter un modèle ERGM puis à produire une superbe visualisation. Mais, avec des recours réguliers aux rubriques d’aide, de petits scripts (abondamment commentés) que vous enrichissez au fur et à mesure (j’ai créé un tableau avec 2 indicateurs, il est facile d’en ajouter…), votre progression sera rapide et efficace.

Ressources en ligne

Ayant déjà souvent écrit sur l’analyse de réseaux avec R – et je ne compte pas m’arrêter là -, je me permets de renvoyer à ce billet publié il y a quelques mois.

1 Robin Cura est la personne  qui m’a permis de comprendre l’étendue de mon ignorance sur cet aspect crucial. Et il a évidemment raison : ♯ est un dièse, # est un croisillon….

NodeXL : module convivial ou gadget inutile ?

logo du logiciel NodeXLIl y a des personnes qui ont parfois de drôles d’idées, et l’équipe qui développe NodeXL a eu l’idée saugrenue de développer un plug-in libre et gratuit permettant l’analyse de graphes, plug-in qui ne peut être utilisé qu’avec les versions récentes (2007 et plus) d’Excel. Et rien ne laisse supposer sur la page du projet une extension pour Libre Office ou Open Office, dommage. Ce billet est organisé en deux parties bien distinctes : la première explique comment utiliser l’outil ; la deuxième en souligne l’intérêt, intérêt variable selon vos pratiques logicielles en analyse de réseau.

L’installation est simple : dézipper le fichier, lancer le setup.exe et suivre les instructions. Il s’agit d’un .exe donc les utilisateurs de la suite Microsoft Office pour Mac ne peuvent l’installer. A moins évidemment d’installer aussi le système d’exploitation Windows après partition du disque dur ou l’installation d’un outil tel la Virtual Box.

Lancer le programme ouvre un classeur .xlsx dont les onglets présentent quelques particularités comme le montre la série de captures d’écran ci-dessous. Quatre feuilles sont présentes par défaut et, dans chacune, des colonnes vides attendent vos données.

Feuilles présentes à l'ouverture de NodeXl

menu de NodeXL

En haut de l’écran, l’onglet NodeXL présente les items suivants.

menu de NodeXL

menu de NodeXL

Il est bien entendu possible d’ajouter des feuilles au classeur, ou d’ajouter des colonnes à celles déjà existantes. Par contre, renommer l’une des feuilles ou colonnes présentes à l’ouverture ne permettra pas ensuite d’effectuer les analyses.

Deux options sont possibles pour intégrer ses données : entrer ses liens (feuille Edges) puis ses acteurs (feuille Vertices) ou, plus simplement, rentrer les liens puis générer automatiquement les acteurs : une fois les liens entrés, utiliser le menu Prepare Data > Get Vertices from Edges Worksheet. Cette dernière option suppose qu’il n’existe aucun sommet isolé. Il est possible d’importer des données issues d’Ucinet, de Pajek ou au format GraphML ; l’exportation est possible dans ces mêmes formats.

Les mesures disponibles s’obtiennent à l’aide du menu Graph Metrics. La liste d’indicateurs fournis est tout à fait correcte et cocher Select All permet d’obtenir rapidement tous les résultats qui se rangent automatiquement dans la feuille Overall Metrics. Autre particularité visible sur l’image, il est possible d’un simple clic de changer le caractère orienté ou non du graphe (Type > Directed ou Undirected).

Boite de dialogue Graph Metrics

Paramétrer la visualisation (seuillage des liens, aspects des sommets et des liens, algorithmes de visualisation) est très simple grâce à des menus et des fenêtres d’une grande clarté. En jouant 5 minutes avec, on sait l’utiliser et la facilité rappelle Netdraw. Mais s’il est possible de modifier les paramètres un à un, on gagne du temps en utilisant la fonction Autofill Columns qui ouvre la boîte de dialogue ci-dessous. Que ce soit pour les sommets, les liens ou les groupes (ensemble de sommets définis par un attribut déterminé au départ – genre, nationalité – ou issu de l’analyse – ensemble des sommets de degré 5 par exemple), on choisit le paramètre qui fera varier couleur, épaisseur, forme etc. etc.

boite de dialogue Autofill columns

La flèche Options permet de changer les paramètres par défaut (gamme de couleurs notamment). Une fois les choix effectués, on clique sur Autofill et le résultat apparaît dans la fenêtre graphique située à droite de l’écran. Si l’algorithme ne donne pas de résultat satisfaisant, il suffit d’en changer (choisir l’algorithme voulu dans Layout puis Refreh Graph) ou, si les modifications à apporter sont plus légères, on peut déplacer les sommets à la souris. L’image ci-dessous montre le type d’image rapidement obtenu.

Visualisation avec NodeXL

Module convivial ?…

Si vous n’avez jamais utilisé de logiciel d’analyse de graphe, si vous êtes sous environnement Windows et possédez une version Excel 2007 ou supérieure, ce module vous permettra rapidement d’analyser et de visualiser vos graphes. On trouve assez facilement sur le net des tutoriels permettant de récupérer des flux Twitter et autres pour les importer dans NodeXL (les concepteurs vendent aussi un manuel où ces procédures sont détaillées). Il y a quelques limites : l’analyse des graphes bipartis (représentant les liens entre deux groupes d’acteurs différents) n’est pas possible, les graphes ne peuvent être exportés qu’en format image et non en format vectoriel (cela signifie concrètement qu’il est impossible de modifier quoi que ce soit ensuite) et le choix des algorithmes est limité, certains produisant d’ailleurs des résultats étonnamment laids.

Les rubriques d’aide en local sont plutôt bien faites – exclusivement en anglais évidemment – même si certaines informations me semblent erronées : ainsi, pour en revenir au format des images, le manuel évoque un format vectoriel .xps modifiable avec Acrobat Reader. Or Acrobat Reader ne parvient pas à ouvrir les fichiers produits. Pas plus que la visionneuse Windows proposée d’ailleurs. Si j’insiste sur cet aspect, c’est parce qu’un graphe, comme toute image censée représenter une information (une carte par exemple) doit (devrait) comporter une légende (qui sont ces sommets ? ces liens ? à quoi correspondent  ces couleurs ?), une date, une source etc. Et cela impose donc un travail de mise en page a posteriori et un format d’exportation vectoriel.

Gadget inutile ?…

Si vous vous avez déjà utilisé un autre logiciel d’analyse de réseau, mon avis est beaucoup plus réservé. Les limites sont nombreuses : poids des liens non pris en compte dans les calculs, pas d’export en format vectoriel, algorithmes peu nombreux voire peu efficaces, pas de mesure pour les graphes bipartis, bugs fréquents et j’en oublie sans doute. Enfin, je termine en revenant au point de départ (NodeXL autorise les boucles, et les représente correctement) : concevoir un module libre et gratuit fonctionnant exclusivement sous logiciel privatif est absurde, à moins évidemment d’être financé par le logiciel en question (rien ne permet de l’affirmer sur la page du projet, c’est une simple supposition de ma part). Et comme il existe de multiples alternatives libres, l’intérêt de NodeXL apparaît très relatif…

Version testée : 1.0.1.229, environnement Excel 2010 et Windows 7. Un grand merci à Pascal Cristofoli, Bénédicte Garnier et Arnaud Bringé qui m’ont permis une prise en main rapide de cet outil. Ils et elle ne sont aucunement responsables des réserves exprimées ici.

L’analyse des réseaux personnels avec E-Net

logo du logiciel E-Net

E-Net est un logiciel développé par Borgatti depuis 2006 et dédié à l’analyse des réseaux personnels (ego-networks). Pour mémoire, un réseau personnel est classiquement défini ainsi : un acteur a, l’ensemble des acteurs auxquels cet acteur a est directement connecté (les alters) et l’ensemble des liens entre ces acteurs. Logiciel gratuit mais non libre, il fonctionne sous environnement Windows et la version 0.41 testée ici date du 29 septembre dernier.

 Le logiciel permet l’analyse de réseaux personnels stricto sensu ou l’analyse des ego-networks d’un réseau standard. Deux formats d’importation sont possibles dans le premier cas :

  • des formats texte ayant l’extension .vna
  • des fichiers .xls

La structure des fichiers .vna rappelle un peu celle des fichiers Pajek avec la liste des egos et leurs attributs, la liste des liens entre egos et alters et les attributs de ces derniers, et enfin les liens entre alters. Le petit exemple ci-dessous, extrait de la documentation, donne un exemple de structure des données.

*ego data
ID age    sex
01    32  male
02    67  female
03    ….
*alter data
From    To Friends Age
01    1-1    1     15
01    1-2    1     30
02    2-1    0     50

*Alter-alter data
From    to    knows
1-1    1-2    1

S’il s’agit d’un fichier excel, les données comprennent une ligne par ego et doivent être structurées ainsi :

Identifiant de l’ego 1, caractéristique 1, caract. 2…, Alter 1, caract. 1 de l’alter 1, caract. 2 de l’alter 1…

Deux fichiers d’exemple permettent de comprendre la logique de structuration des données et de se l’approprier rapidement.

Si le logiciel est utilisé pour étudier des ego-networks dans un réseau standard, ce dernier doit être au format Ucinet. Pour mémoire, dans Ucinet, il suffit de copier-coller une matrice depuis un tableur et de l’enregistrer en .net.

La fenêtre principale consiste en une poignée de menus déroulants et de fenêtres.

fenêtre principale E-Net

L’onglet Egos fait apparaître l’ensemble des egos et leurs attributs. Une fenêtre située à droite de l’écran permet de filtrer les Egos de façon très intuitive : si je veux n’étudier que les Egos dont le genre est 1, je tape genre = 1 puis Filter. La logique est la même pour les onglets Alters et Alters-Alters Ties.

Le menu Analyze permet notamment l’étude des alters en fonction d’attributs (table de contingence et test du chi2 avec Crosstabs), d’étudier les fréquences de liens ou de rechercher des trous structuraux. Si les alters possèdent des caractéristiques sous forme de variable continue (âge, revenu…), le logiciel calcule minimum et maximum, moyenne, écart-type et somme des modalités. Le menu Analyse > Heterogeneity permet le calcul de deux indices relatifs aux variables catégorielles, l’indice de Blau et l’indice d’Agresti. Les deux indices varient de 0 à 1 : 0 en cas d’homogénéité totale (ex. je suis une femme et toutes mes relations sont des femmes), 1 en cas d’hétérogénéité totale.

Menu Analyze d'E-Net

La visualisation propose peu d’algorithmes, ce qui est logique pour des ego-networks. Il est possible de faire défiler l’ensemble des sommets et leurs réseaux personnels respectifs à l’aide des flèches situées sur la droite de la fenêtre.

fenetre de visualisation E-Net

Si l’importation des données est aisée, l’exportation des résultats est on ne peut plus simple : il suffit de cliquer sur l’icône xls… et les résultats s’ouvrent aussitôt dans un fichier .xls

L’outil reste perfectible, notamment en ce qui concerne la rubrique d’aide : le format des données à importer est très clairement expliqué, mais cliquer sur la rubrique d’aide fait apparaître la fenêtre suivante :

rubrique d'aide du logiciel E-Net

Volontaire pour écrire l’aide d’un logiciel non libre disponible uniquement sous Windows ? C’est sûrement de l’humour californien… Blague à part, ne travaillant pas spécifiquement sur des réseaux personnels, je ne suis guère capable d’évaluer les manques du logiciel, n’hésitez donc pas à faire part de vos expériences.

 

Références

Site d’E-Net : https://sites.google.com/site/enetsoftware1/Home

Borgatti SP. 2006. E-Network Software for Ego-Network Analysis. Analytic Technologies: Lexington, KY.

Halgin D.S. et Borgatti S.P. 2012. An introduction to personal network analysis with E-Net, Connections, 31(1): 37 – 48.

Cytoscape, logiciel pour l’analyse des graphes (biologiques et autres)

logo du logiciel CytoscapeSi on en croit la page What is Cytoscape?, ce logiciel, open source et multi-plateformes, est dédié à l’analyse des graphes biologiques, et plus précisément à la visualisation des interactions moléculaires. Les réseaux biologiques étant formellement équivalents à tous les autres (sommets, liens et attributs), ce logiciel est évidemment adapté à tous les types de réseaux (simples ou non, bipartites ou one-mode, valués ou booléens), y compris les multigraphes ou les réseaux multiniveaux. Public depuis 2002 et la version 0.8, le logiciel, développé en Amérique du Nord (États-Unis et Canada) mais bénéficiant de soutiens plus larges (Institut Pasteur notamment), en est désormais à la version 2.8.3.

Téléchargement et documentation : http://www.cytoscape.org/

 

Import et export des données

Le format natif du logiciel bénéficie de l’extension .cys. Il s’agit en fait d’un fichier unique généré par le logiciel à partir de différents fichiers sources (.xls, .csv notamment).

L’importation de ses propres jeux de données est relativement simple dans la mesure où il suffit d’un fichier .xls, .txt ou .csv comportant deux colonnes (origine – destination) ou plus (attributs des liens seulement). Il suffit de préciser dans la boîte de dialogue l’origine (Source interaction) et la destination (Target interaction). Le type d’interaction proposé par défaut pp (soit protéine – protéine) convient pour la plupart des réseaux. Une boîte de dialogue permet de spécifier le séparateur de colonnes, la présence ou non de noms de colonnes etc. Pour une fois, la mise en forme des données ne devrait pas être trop chronophage.

Pour importer des attributs relatifs aux sommets, dérouler le menu File > Import > Attribute from Table.

Menu pour l’importation

menu d'importation du logiciel cytoscape

 Importation de tables (.xls, .txt, .csv)

importation de tables dans le logiciel cytoscape

Menu pour l’exportation

menu d'exportation du logiciel cytoscape

La taille des graphes étudiés ne devrait guère poser de problèmes : le manuel indique qu’avec 512 Mo de RAM (souvenirs, souvenirs…), le logiciel permet d’étudier des graphes de 20 000 (avec visualisation) à 70 000 sommets (sans visualisation).

Mesures

De nombreuses mesures, tant locales que globales, sont disponibles. Les plugins installés par défaut (et il y en a un nombre respectable, mais bien d’autres sont disponibles) permettent de recueillir de nombreuses données de façon simultanée. Et si on souhaite étudier tel ou tel type de graphe, on peut installer les plugins disponibles à l’adresse http://chianti.ucsd.edu/cyto_web/plugins/. Les mesures peuvent être exportées en bloc, et les nuages de points (avec ou sans courbe d’ajustement) peuvent être sauvegardés en format image ou vectoriel. Comme tous les logiciels récents, les mesures proposées viennent autant de la Social Network Analysis que de l’approche physicienne des réseaux.

plugins du logiciel cytoscape

 

Mesures disponibles via le plugin Netwok Analysis

mesures proposées par cytoscape

Les modifications (supprimer des boucles par exemple) peuvent être effectuées simultanément sur tous les graphes chargés lors d’une session (Plugins > Networks modification). En cas de manipulation hasardeuse, la commande Undo (Ctrl + Z) permet d’annuler celle-ci.

Les visualisations produites sont modifiables à l’envie, tant pour les liens (couleur, épaisseur, style, droits ou courbes) que pour les sommets ou l’algorithme de visualisation, et les résultats sont esthétiquement très satisfaisants. Il est possible de créer et d’enregistrer ses propres styles visuels afin de les réutiliser ultérieurement. Gadget qui peut être utile : il est possible d’importer une image (format .gif, .jpg ou .png) qui servira d’attribut à un ou plusieurs sommets.créer son style visuel avec Cytoscape

La sélection d’un sommet ou d’un ensemble de sommets se fait par simple clic de souris. Les algorithmes de visualisatipn peuvent être appliqués à l’ensemble du graphe (heureusement) ou à une sélection de sommets seulement. Certains sont originaux : ainsi le Attributes circle layout qui aligne sur un même cercle les sommets ayant le même attribut. Enfin, l’export peut se faire en format image ou vectoriel (.pdf, .svg, .eps, et .png notamment).

Exemple de visualisation avec Cytoscape

 

En conclusion (provisoire)

Les indications données ici ont pour seul objectif de faire connaître l’outil et de faciliter sa prise en main, mais les possibilités du logiciel sont beaucoup plus conséquentes et méritent largement d’être explorées. Même les personnes qui sont (comme moi…) lassées des logiciels clicodromes à produire de la belle image devraient être séduites par les capacités de cet outil. D’autant plus qu’il est possible de l’utiliser en lignes de commande !

 

Ressources, aide et tutoriels

La rubrique d’aide, accessible via l’icône bouée, est complète mais plutôt mal fichue, le texte étant mal formaté et obligeant à lire d’interminables lignes horizontales. Plusieurs tutoriaux sont accessibles sur le wiki http://opentutorials.cgl.ucsf.edu/index.php/Portal:Cytoscape. De nombreux jeux de données (biologiques) se trouvent à l’adresse http://www.pathguide.org/. Ils peuvent être importés directement dans le logiciel via le menu File > Import > Network from Web Services

Pour citer le logiciel : Shannon P, Markiel A, Ozier O, Baliga NS, Wang JT, Ramage D, Amin N, Schwikowski B, Ideker T., Cytoscape: a software environment for integrated models of biomolecular interaction networks. Genome Research, 2003 Nov, 13(11): 2498-504.

 

Note : le logiciel testé est la version 2.8.3 sous environnement Windows 7 – 64 bits.

Pigale, logiciel pour l’analyse des graphes planaires

Logo du logiciel PigaleSi les logiciels d’analyse de graphes sont très nombreux, les logiciels dédiés à l’analyse des graphes planaires le sont beaucoup moins.

Le logiciel Pigale (Public Implementation of a Graph Algorithm Library and Editor), développé par H. de Fraysseix  et P. Ossona de Mendez, fait partie de cette catégorie peu fournie. Libre et multi-plates-formes, il présente une autre originalité : son interface est en français (voir image ci-dessous).

 

Interface du logiciel Pigale

 Il est possible soit d’importer un graphe (formats .tgf, .txt ou .graphml) soit de le dessiner directement dans la fenêtre (Fichier > Nouveau graphe). L’exportation est possible dans les 3 formats cités précédemment. Les visualisations peuvent être exportées en format image ou vectoriel (.png, .jpg, .pdf, .svg, .ps). 

 Pour dessiner un graphe, cocher l’option Ajout/Eff du menu Boutons gauche  puis cliquer dans la fenêtre graphique pour ajouter les sommets. Pour tracer un lien, cliquer sur un sommet et maintenir la pression jusqu’au sommet cible. Les liens créés sont par défaut non orientés : il est possible dans un second temps de les orienter en cochant l’option Oriente avant de cliquer sur le sommet récepteur du lien. Ainsi, pour obtenir la figure ci-dessous, je crée deux sommets (Ajout/Eff), coche le bouton Oriente puis clique sur le sommet numéro 6.

L’orientation des liens peut être générée (ou supprimée) pour l’ensemble du graphe à l’aide du menu déroulant Orienter (commandes Tout orienter et Désorienter les arêtes). Les caractéristiques du graphe dessiné s’actualisent à chaque tracé dans la fenêtre Propriétés du graphe. Les analyses possibles en fonction du graphe tracé s’actualisent également : les options en noir sont accessibles, celles en rouge ne le sont pas.

Pour supprimer un sommet ou un lien, cliquer sur l’objet en maintenant Shift enfoncé. Il est possible de modifier l’aspect du graphe (liens courbes ou lignes brisées – voir les deux représentations du même graphe ci-dessous). Enfin, trois épaisseurs de ligne sont possibles (bouton Col/Thick).

Il est également possible de générer de nombreux types de graphes dont l’image ci-dessous ne donne qu’un petit échantillon.

Générer des graphes avec Pigale

 Je n’ai pas l’impression qu’il soit possible d’allouer des attributs aux sommets et/ou aux liens. Quant à savoir si la panoplie d’outils proposée est suffisamment complète ou si elle souffre de graves lacunes, j’avoue ne pas être capable de le déterminer, n’ayant qu’exceptionnellement travaillé sur des graphes planaires. En tout cas, l’outil est facile à prendre en main et constitue sans nul doute un bon support pédagogique pour des cours sur ce type de graphes.

La version de Pigale testée ici est  la version 1.3.11 (une version 3.12 est disponible mais l’installation sous Windows est un peu pénible).

Pigale : http://sourceforge.net/projects/pigale/

Un module R pour l’analyse des graphes bipartis : le package bipartite

Dans un tutoriel disponible sur Cours en ligne, j’ai présenté trois modules R pour l’analyse de réseaux (statnet, igraph et tnet). D’autres modules sont disponibles et ce court billet présente les principales fonctions du module bipartite (version 1.17). Les termes anglophones sont en italique, les commandes et les scripts R en gras.

Pour mémoire, un graphe biparti (bipartite, two-mode network ou affilliation network) représente les liens entre deux ensembles d’acteurs différents. L’un des jeux de données les plus étudiés de ce type est ainsi le graphe dit Davis’ Southern Women Club, à savoir le graphe symbolisant la participation de 18 femmes à 14 réunions dans une ville du sud des États-Unis dans les années 30 (ce jeu de données est disponible dans quasiment tous les logiciels d’analyse de réseau).

Le package bipartite étant développé par des écologues, les réseaux inclus concernent essentiellement des liens fleurs – pollinisateurs.

La structure des données en entrée doit être de forme matricielle, le package traitant des objets de type « matrix« . Le graphe peut être valué.

Contrairement à la plupart des modules qui proposent un (voire plusieurs) fonction(s) pour obtenir un seul indicateur, bipartite a l’excellente idée de proposer deux fonctions, l’une portant sur les sommets (specieslevel), l’autre sur l’ensemble du graphe (networklevel). Dans les deux cas, les mesures proposées sont nombreuses et mêlent indicateurs canoniques (densité, degré) et innovations de ces dix (quinze) dernières années (modularité). Certaines fonctions créent des graphiques bienvenus, telle la fonction degreedistr qui permet de représenter fréquence cumulée et droite de régression.

Résultat des commandes

data(Safariland)                   #réseau de pollinisation argentin

degreedistr(Safariland)

sortie graphique de la commande degreedistr

Il est également possible de comparer les caractéristiques du graphe étudié et celles de graphes aléatoires bipartis (voir script téléchargeable ci-dessous).

Les visualisations produites sont moins attrayantes que celles disponibles avec des réseaux one-mode et cela est logique dans la mesure où les algorithmes de visualisation pour les graphes bipartites sont – à ma connaissance – rares. Trois types sont disponibles (voir les sorties graphiques par défaut ci dessous) : matrice d’adjacence, graphe bipartite et graphe de co-occurence.

Résultat des commandes

data(Safariland)
visweb(Safariland)
résultat de la commande visweb

Résultat des commandes

data(Safariland)
plotweb(Safariland)
résultat de la commande plotweb

Résultat des commandes

data(Safariland)
plotPAC(Safariland)
résultat de la commande plotweb

Comme toujours avec R, le plus utile est encore de tester le package et de fouiller les rubriques d’aide des différentes fonctions. Le script téléchargeable ci-dessous présente les principales fonctions et les options de visualisation disponibles. Il ne prétend évidemment pas à l’exhaustivité.

Script R pour le package bipartite

Toute la documentation est ici : http://cran.r-project.org/web/packages/bipartite/index.html

Référence : Dormann, C.F., Gruber B. & Fründ, J. (2008). Introducing the  bipartite Package: Analysing Ecological Networks. R news Vol 8/2, 8-11.

Visone (visual social network)

Visone est un logiciel développé depuis 2001 à l’University de Konstanz et à l’Institut de technologie de the Karlsruhe. La version testée ici est la 2.6.5 (Java jar, 18 MB) du 5 mars 2012. Gratuit, le logiciel est multiplateforme (Linux, OSX et Windows) mais non Open source. L’installer suppose d’avoir un environnement Java installé sur son ordinateur (voir le tutoriel suivant ).

L’interface graphique ressemble beaucoup à celle d’autres logiciels (Tulip, Gephi etc) mais a l’avantage de proposer toutes les options possibles sur la même page.

Interface du logiciel Visone

Les algorithmes de visualisation proposés sont peu nombreux et souvent classiques (circle, random ou MDS notamment). Les outils d’analyse sont peu nombreux mais divers et piochent chez les physiciens comme chez les sociologues (notamment pour le clustering). Ils permettent d’étudier graphes booléens et valués. Les résultats ainsi que les graphes ouverts (ou directement dessinés grâce à la plume) sont stockés dans le dossier nommé attribute manager. Il est possible d’obtenir les résultats et d’appliquer un algorithme de visualisation de façon simultanée à tous les graphes ouverts.

Le format des fichiers est, pour le graphe, des fichiers  .graphml et pour les attributs des sommets et/ou des liens, des fichiers .csv. Il est possible d’importer et d’exporter dans les formats les plus courants (Ucinet, Pajek ou .gml) et l’exportation des visualisations est possible en format image comme en format vectoriel.

Point intéressant, le logiciel peut être connecté à R (voir ici), ce qui permet de lancer des modèles Siena (à ce sujet, voir la synthèse fmr n°13 consacrée à la modélisation statistiques des réseaux). Il permet également de créer des animations de façon relativement simple : il suffit de créer une network collection manager et de sélectionner les graphes à introduire dans l’animation, puis de cliquer sur la bobine.

Par contre, je n’ai pas trouvé d’indications concernant les tailles limites de graphes supportées par le logiciel (mais je n’ai pas encore tout lu).

Pour plus d’informations : http://www.visone.info/

Le convertisseur de matrices

Le convertisseur de matrices, développé par Isabelle Brémond au sein du laboratoire RESO (UMR 6590 CNRS – Université de Rennes 2), est  un petit outil très pratique pour transformer :

    • une liste de liens en matrice ou
    • une matrice en liste de liens (origine, destination, poids).

Il est donc très utile pour préparer une importation de données dans Pajek par exemple. Les formats en entrée et en sortie sont des fichiers .txt ou .csv. L’interface est simple et intuitive et la prise en main du logiciel demande… une poignée de secondes.

Menu pour choisir l’action à effectuer

Noms donnés par défaut au tableau 3 colonnes

Un bémol ? Il n’est utilisable pour le moment que sous environnement Windows (XP ou Vista,  je n’ai pas réussi à l’installer sous Windows 7 64 bits). On peut également regretter que cet utilitaire très pratique ne soit pas Open Source.

Pour plus de renseignements : cliquer ici.