samedi 21 mars 2015

Visualisation de données généalogiques avec Gephi 1/2


Visualisation de données généalogiques avec Gephi 1/2


 Je vais vous montrer comment je crée une visualisation de données généalogiques "intégrales". Il ne s'agit pas de dessiner mon arbre généalogique mais, à partir de données collectées de manière intégrale, de visualiser toutes les familles et les liens qui les unissent, ou non.
En image de titre vous pouvez avoir un aperçu de ce à quoi on peut aboutir.
Avant de revenir sur l'intérêt en fin de présentation, commençons !

 Ah ! Voilà un hic. Il va falloir utiliser pas moins de 6 programmes ou applications pour arriver à nos fins !
Une bonne nouvelle, on peut n'utiliser que des logiciels en version gratuite voire libre.
Une autre bonne nouvelle : aucune connaissance en programmation particulière. Il y a juste quelques aspects techniques pour le tableur mais qui ne vont pas bien loin.

1.  Elie est un logiciel gratuit de généalogie développé par mcs logiciels.
Il présente notamment une bonne gestion des parrains/marraines. L'équipe de développeurs est réactive et ouverte aux propositions.

 2. Visuged est une application de visualisation basique et classique de généalogie mais qui possède des propriétés intéressantes d'export. Visuged

3.  Tout tableur fera l'affaire.

4.  Editeur de texte basique.

5.  Pas d'autre option que cette application qui met en forme les données pour le logiciel qui suit.
(développé par Sciences Po !!!)

 Le logiciel dont la démonstration m'a donné l'idée qu'on pouvait l'utiliser à autre chose que les exemples donnés (analyse graphique de textes et bibliographies).http://gephi.github.io/

Voilà, tout est en place. Y a plus qu'à.

 ETAPE 1.

Avec votre logiciel de généalogie dans lequel vous saisissez les données récoltées vous pouvez faire un export au format "gedcom".
Vous pouvez surement paramétrer les données exportées. Il faut absolument que les numéros des parents et des individus soient exportés. Le reste est de la mise en forme. Sans export des noms et prénoms le résultat sera bien sûr illisible ...
Si votre logiciel permet un export au format "csv" vous pouvez sauter l'étape 2 !

 ETAPE 2.

Ouvrez votre fichier gedcom dans VISUGED.
Exportez Liste des individus.
Choisissez comme paramètres : numéro, nom, prénom, n° du père, n° de la mère, n° du conjoint (au minimum, d'autres informations peuvent être ajoutées si vous souhaitez les faire apparaître dans la visualisation). Vous obtiendrez un fichier "csv".

 ETAPE 3.

ouvrez le "csv" avec votre tableur préféré (capable de sauvegarder en "csv").
Il faut maintenant mettre les données dans une forme lisible pour table2net.
L'idée sera de croiser deux colonnes : une qui servira à créer les "nœuds" individuels (à priori un par individu) et l'autre qui servira à coder les liens qui peuvent exister entre eux.
On doit utiliser celle des "n° d'individu" pour la première (à priori différente du SOSA). Quand on saisit un nouvel individu dans une généalogie, le logiciel lui attribut un numéro d'ordre (le suivant en partant du nombre d'individus déjà existant). Dans le tableur, à l'ouverture les individus apparaissent dans cet ordre.
Vous devrez créer la deuxième colonne de toute pièce (plus quelques autres)
En effet, pour créer la visualisation, GEPHI n'utilise que deux colonnes principales (d'autres informations peuvent être affichées mais elles ne seront pas utilisées pour les calculs).
Pour représenter les liens entre les individus il faut donc trouver un moyen de les résumer tous en une seule case.
Il suffit donc de "concatener" les différents liens à des individus qui seront donc "référencés" pour ainsi dire dans une case.
dans open office calc on utilisera la fonction "concatener".
nous allons concaténer 4 cases : n° d'individu, n° du père, n° de la mère et n° du conjoint.
parfois ces cases sont vides mais ce n'est pas grave.
Table2net ne fera la différence entre ces 4 informations que si elles sont séparées d'un "dash", c'est à dire le "tiret du 6" ou "signe moins". Il faudra créer trois autres colonnes (entre chacune des 4 autres) avec des "moins" pour faire la concaténation (on ne fait que la première case bien sûr. Des reports et des copier/coller permettent de faire rapidement le reste).
On pourra ainsi entrer comme formule dans la case finale : =concatener(A1;A3;A4;A5;A6;A7;A8).
Il marquera un résultat comme : 143-12-13-0
Les cases A3, A5 et A7 contiennent les "-".
l'individu porte le numéro 143, son père le 12, sa mère le 13. Il n'est pas marié (dans la base) le n° de conjoint est donc 0.
Profitez en donc pour corriger les erreurs de tabulation. Supprimer les "accents" qui passent mal et vérifiez vos données. Les noms composés avec des espaces doivent être simplifiés. J'ai personnellement choisi de supprimer l'espace (ce qui demande quelques manipulations dans le tableur).
Laissez bien les noms des "têtes de colonnes" quitte à les renommer comme vous voulez.
Il faut absolument que le tableau soit "propre" pour les opérations suivantes, soit : "les bonnes données dans les bonnes cases".
Enregistrer au format "csv".


 Voilà ce que vous obtenez peut-être ...


 ETAPE 4.

Ouvrez le "csv" avec wordpad (ou un autre éditeur de texte, mais il faudra sauvegarder en csv ensuite aussi).
Il faut terminer la mise en forme des données pour table2net qui ne comprend pas le séparateur ";" qui est celui par défaut dans un tableur. Or tous les tableurs ne permettent pas de modifier cet élément.
Pas besoin de comprendre exactement de quoi je parle, je vous rassure (je n'en sais d'ailleurs pas beaucoup plus que ce que je dis).
Wordpad possède la fonction qu'il nous faut pour modifier directement le "code" dans lequel est écrit le fichier pour que les tableurs "sachent" dans quelles cases sont les données.
Vous allez utiliser la fonction "remplacer par"
Il faut saisir ";" "le point virgule" dans la case "chercher" et "," "la virgule" dans la case "remplacer par".
Cliquez sur "remplacer tout".
Sauvegardez. Vous pouvez fermer et le rouvrir pour vérifier que la manipulation est inscrite.

 ETAPE 5.

Allez sur le site de table2net, application de Sciences Po, rien de moins.
Elle va permettre de mettre en forme les données pour Gephi.
Vous pouvez ouvrir le fichier "csv" que l'application charge. Elle vous en donne un premier aperçu sur quelques lignes qui permet de voir s'il n'y pas eu de problème de mise en forme. Le rappel des têtes de colonnes vous permettra de bien désigner celles que l'on veut que l'application prenne en compte.
Vous allez choisir comme type (network) : citations.
Comme "nœuds" (nodes) choisissez : numéro (de l'individu). Comme attributs vous devriez choisir les nom et prénom au minimum, et d'autres si vous souhaitez pouvoir les consulter dans la visualisation. Attention, plus on ajoute de critères plus les visualisations sont lentes ...
Comme "liens" (links) choisissez la colonne que vous avez créée en concaténant. IMPORTANT : sélectionnez le "dash" comme séparateur (c'est le tiret du 6). Inutile d'ajouter des attributs.
Dans les options additionnelles ne choisissez rien pour l'instant.
Build the network ! (fichier "gexf").

 TADAA ! ETAPE 6. Etape finale.

Ouvrez "Gephi".
Attention, s'il ne s'ouvre pas c'est peut être un problème d'application "java" (qui gère l'environnement graphique). Au moment ou j'écris ces lignes (par exemple), alors que java 8 est sorti j'ai dû réinstaller la 7 pour Gephi ...
ATTENTION : Sur la première fenêtre qui vous informe de la quantité de données de votre fichier, il faut désélectionner "générer automatiquement les noeuds manquants" sinon, pour des données incohérentes en référence à un noeud qui n'existe pas il les créera (pour les "zéro" du tableur par exemple), cela peut rendre le résultat difficilement lisible.
Nous allons créer des variables qui pourront être utilisées pour la mise en forme.
Je ne maîtrise pas encore assez pour connaître les "vraiment utiles" des "moins utiles". N'hésitez pas en m'en faire retour (je ne suis pas mathématicien).
Si vous avez trop de données il est peut être utile de commencer par supprimer celles qui, de toute façon, ne seront pas utiles (on peut le faire d'ailleurs dans le tableur pour restreindre la visualisation).
Dans l'onglet (en haut) "laboratoire de données" vous pouvez supprimer des lignes inutiles.
Si vous aviez créé des individus "X" car pas encore documentés, ou si l'application a créé des lignes pour l'individu "0" qui va se retrouver avec tous les liens inexistants, vous pouvez les supprimer avant toute manipulation.
Dans le menu de droite "statistiques" je vous conseille de calculer (appuyer sur "exécuter") :
degré - modularité - composantes connexes et plus courts chemins. Ces données sont maintenant disponibles dans le "laboratoire".
Les nœuds sont ordonnés au hasard au départ.
Ils sont tous gris. Afin de commencer à les distinguer les uns des autres nous allons utiliser la fonction de gauche : "partition" et "nœuds". Cliquez sur les deux flèches (symbole "rafraichir").
Choisissez "nom" et validez. Chaque nœud a maintenant une couleur identique si l'individu porte le même nom (attention, strictement écrit pareil, ce qui pourra vous donner des idées pour des essais ultérieurs).
Nous pouvons également modifier la taille de chaque nœud en fonction d'un paramètre.
Onglet "classement", choisissez le paramètre. Degré est la somme de tous les liens passant par un nœud, betweeness centrality est une évaluation de son "importance" dans le système (je préfère celui-là). Cliquez sur le "diamant rouge" et validez. Vous distinguez maintenant parmi tous les individus ceux qui ont une importance particulière (surement dûe au nombre d'enfants s'il s'agit d'une généalogie familiale).
Nous allons utiliser "spatialisation" à gauche pour qu'ils commencent à se déplacer en prenant en compte les caractéristiques que je viens de vous faire calculer et les nombres de liens entre chaque nœud.
Si vous souhaitez éliminer certains nœuds mineurs (très peu de liens) vous pouvez retourner dans les données. Vous constaterez que le logiciel a ajouté une colonne pour chaque valeur que nous lui avons fait calculer. En classant dans la colonne "degré" vous repérerez peut-être des données qui ne sont pas nécessaires et que vous pouvez supprimer pour alléger la visualisation.
Dans "spatialisation " différentes fonctions permettent de modifier la position relative des nœuds selon des algorithmes paramétrables :
les 2 "force atlas" déplacent les nœuds en créant un système virtuel de "gravité" au centre, vers lequel sont attirés les nœuds au "poids" le plus élevé en fonction du nombre de liens qu'ils ont avec les autres. Ils sont freinés par les nœuds à faible poids auxquels ils sont reliés. Les petits systèmes sont donc repoussés en périphérie.
Pour tester les fonctions, je vous propose de commencer par un "force atlas" en augmentant la force de répulsion à 1000 si comme moi vous avez beaucoup de nœuds (1455 pour moi...).
Si vous attendez trop et que l'ensemble est trop étiré, utilisez "contraction". "Expansion" fera l'inverse mais d'une manière non pondérée contrairement aux autres algorithmes.
Faites en suite un "petit" "force atlas 2" avec la fonction "empêcher le recouvrement". Les nœuds ne se superposeront plus.
Essayez les autres fonctions. Lorsque l'on clique sur chaque option, une brève explication apparaît en bas (très succinte).

 Visualiser les individus.
Pour l'instant vous avez des ronds plus ou moins gros et de couleurs différentes (on peut évidemment changer les couleurs à sa convenance).
Nous allons maintenant afficher les noms des individus (chaque nœud en est un).
En bas de la fenêtre de visualisation sont des options de mise en forme de type "traitement de texte".
Appuyez sur le "T" majuscule pour afficher le label.
Si vous avez suivi mes conseils, c'est le numéro de l'individu qui apparaît dans chaque rond.
A droite de cette ligne d'options il y a un petit icône qui permet de développer cette zone, faites-le.
Dans l'onglet "label", le dernier, tout à droite il y a un menu "éditer", allons-y.
Décochez "label" et cochez "nom" et "prénom". Le résultat est immédiat.
Modifier la taille de la police dans le menu de mise en forme, où est indiqué le nom de cette police il y a une petite réglette à curseur déplaçable.
Une fois la taille des noms à votre convenance, pour clarifier tout cela, dans "spatialisation" vous pouvez choisir "ajustement des labels" et les nœuds bougeront pour que les labels de la taille choisie ne se chevauchent plus.
N'hésitez pas à regarder les autres options de mise en forme. On peut jouer sur l'attractivité des nœuds liés, leur répulsion. Etc.
En zoomant sur un système particulier vous pourrez mieux voir les liens qui relient les nœud. Il s'agit en fait de flèches sortantes ou entrantes. Si vous avez fait comme moi, les époux sont reliés par deux flèches de sens inverse (vous maîtrisez également l'épaisseur de trait des flèches). Un individu génère au moins une flèche sortante vers chacun de ses parents.
Lorsque l'on passe le pointeur sur un rond, restent affichés uniquement les nœuds qui ont un lien direct avec lui.
En cas d'un trop grand nombre de données on peut réduire le nombre de nœuds comme je l'ai dit plus haut et être plus sélectif sur leur pertinence.




 Épilogue

L'intérêt par rapport à la visualisation classique de tout logiciel de généalogie qui se respecte, c'est la possibilité de voir tous les individus d'un coup et d'une manière plus esthétique. L'inconvénient étant que cela peut être très confus au départ et que cela demande un travail de mise en forme qui peut être important. Cela dit, la bonne idée du logiciel c'est aussi que lorsque l'on met le pointeur sur un nœud, seuls ses voisins restent apparents.
Pour aller plus loin il faut vraiment tirer partie du caractère paramétrable du logiciel qui permet de mettre en évidence des informations (méta-informations) que l'on ne pouvait pas facilement voir avant.
Quelques exemples :
L'accès direct aux données permet de sélectionner et de se concentrer sur des individus, des lignées, des noms...
L'outil de recherche de liens dans la fenêtre principale à gauche (en forme d'avion) est également intéressant. Une fois sélectionné vous cliquez sur un premier nœud puis un deuxième, le logiciel vous matérialise le plus court chemin entre les deux (s'il existe).
La "carte de chaleur", en sélectionnant l'option "ne pas peindre les nœuds hors de portée", permet de voir toutes les connexions au nœud sélectionné colorées en fonction de leur "force" (contrairement à ceux mis en surbrillance par le passage du pointeur qui ne sont que les directs).
Dans un second article j'essaierai de montrer comment mettre en valeur des données plus riches grâce au tableur.

Références :

page de "Gephi"

Aucun commentaire:

Enregistrer un commentaire