Généalogie et graphes – I
Pour préparer le “challenge de A à Z” qui se déroulera en juin prochain, j’ai entrepris de pointer l’état d’avancement de la généalogie de mon père, du point de vue de la recherche de ses sosas. En réfléchissant à la manière de synthétiser les informations dont je disposais, j’ai repensé à une idée que j’avais en tête depuis déjà un certain temps, sans l’avoir concrétisée : essayer de visualiser cette généalogique au travers d’un outil de représentation de graphe.Pour reprendre la définition de la théorie des graphes donnée dans Wikipédia : “Un graphe est un ensemble de points, dont certaines paires sont directement reliées par un (ou plusieurs) lien(s). Les algorithmes élaborés pour résoudre des problèmes concernant les objets de cette théorie ont de nombreuses applications dans tous les domaines liés à la notion de réseau.”
Or un arbre généalogique est bien un réseau de liens (familiaux) établis entre des points (les personnes d’une famille).
Utilisation de Gephi
En creusant un peu la question voilà un an ou deux, j’avais été inspirée par des essais de cartographie généalogique publiés dans ces pages : http://physicsbjj.perso.sfr.fr/, et en particulier par les représentations réalisées avec le logiciel Gephi [1].
Concrètement, pour élaborer un graphe il faut fournir à Gephi deux tables :
- une table des nœuds comportant au minimum l’identifiant du nœud et un identifiant numérique (donné par le programme), informations que l’on peut compléter avec des labels (affichage du nœud sur la carte), une typologie…
- une table de liens qui décrivent les relations entre les nœuds décrits ci-dessus. Un lien comprend l’identification du nœud source, celle du nœud destination, le sens du lien (dirigé ou non), un identifiant numérique “Id” (donné par le programme), éventuellement des informations de poids (force du lien)
Avec ces tables, le logiciel construit un graphe en positionnant les nœuds les uns par rapport aux autres, grâce à différents algorithmes de spatialisation (selon des règles d’attraction ou de répulsion).
Outre l’outil, ce qui m’avait interpellée dans l’approche présentée sur le site signalé ci-dessus était la manière de considérer les “objets” d’une généalogie et leurs relations. Les nœuds du réseau sont en effet les personnes ET les unions. Deux personnes ne sont pas directement reliées entre elles, mais chaque personne est liée aux unions qui la concernent : celle de ses parents, dont elle est née, et la sienne, dont son nés ses enfants. C’est un peu différent du schéma habituel d’un arbre généalogique dans lequel les nœuds (souvent schématisés sous forme de rectangles) sont uniquement des personnes.
Application à l’arbre généalogique
J’ai donc entrepris de reproduire ce schéma avec mes propres données, modélisées en considérant que les nœuds du graphe sont des individus (exclusivement des sosas pour cet essai) et des unions, et que les liens sont les relations entre ces individus et ces unions. Schématiquement les liens s’établissent de la manière suivante :
En absence d’implexe
- un nœud union est lié à 3 nœuds individus :
- l’époux (sosa 2n)
- l’épouse (sosa 2n+1)
- l’enfant (sosa n)
- Un nœud individu (sosa n) est lié à 2* nœuds unions :
- l’union de ses parents (sosa 2n x sosa 2n+1), dont il est issu
- son union (sosa n x sosa n+1)
* A l’exception :
- de l’individu souche de l’arbre, qui n’est lié qu’à l’union de ses parents
- des sosas de “bout de chaîne” dont les ancêtres n’ont pas (encore) été trouvés, qui ne sont liés qu’à leur union
En cas d’implexe
- un nœud individu est toujours lié à 2** unions
- un nœud union est lié à 4 individus (ou plus si l’implexe est multiple) :
- l’époux (sosa 2n)
- l’épouse (sosa 2n+1)
- l’enfant (sosa n)
- l’enfant (sosa n’)
** A l’exception d’un individu sosa qui aurait eu plusieurs enfants eux-mêmes sosas, mais nés de plusieurs mariages, et qui serait de ce fait lié à plus de 2 unions (un cas dans mon arbre)
Et tout ça pour quoi ?
Bien sûr, j’entends la question : “quel est l’intérêt de ce mode de représentation en généalogie ?” Je me la suis moi-même posée et j’ai envie d’y répondre comme suit :
– en premier lieu bien sûr, savoir si cette présentation des données peut me permettre de voir des aspects de mon arbre que je n’avais pas perçus avec les logiciels généalogiques classiques
– satisfaire ma curiosité et me familiariser avec Gephi dans un contexte de loisir (et pas qu’au boulot)
– occuper mes soirées face à la pauvreté des programmes de TV
Dans un second article, je détaillerai la méthode et les résultats que j’ai obtenus. En avant-première, voilà un aperçu statique du graphe élaboré avec Gephi, pour les 452 sosas de l’arbre de mon père :
En savoir plus sur Gephi :
[1] Gephi : logiciel open source utilisé pour visualiser, analyser et explorer en temps réel des graphes de tout type. (https://gephi.org/)
Plusieurs tutoriels ou présentation disponibles sur internet permettent de découvrir Gephi, comme celui-ci
11 commenti
Brigitte S
Exactement le genre de chose que j’adore, meme si je ne sais jamais à quoi ca peut me servir
J’attends donc la suite pour savoir si en plus de m’amuser et d’occuper mes soirées, je vais en tirer quelque chose, et je me lance
En tout cas j’aime bien ce graphe, je le trouve visuellement réussi
venarbol
Ça pourrait presque être une œuvre d’art, ou un plan de métro 🙂
Elise
Je trouve cette façon de représenter sa généalogie très intéressante. J’aime beaucoup ta démarche, car si on ne voit pas toujours l’intérêt d’un outil au premier abord, le fait de le prendre en main donne souvent plein de nouvelles idées d’utilisation.
En tout cas ta présentation me donne bien envie d’essayer Gephi car j’adore découvrir de nouveaux outils et de nouveaux modes de représentation.
Merci beaucoup pour le partage, et j’ai hâte de découvrir ton article suivant !
Elise
venarbol
C’est vrai que je ne sais pas trop où je vais avec Gephi. Mais ma curiosité a été la plus forte… et j’ai déjà “découvert” qu’il y avait 8 implexes dans l’ascendance de mon père. Ces infos étaient bien sûr enregistrées dans mon logiciel de généalogie mais je n’avais pas vraiment réalisé cet état des implexes avant de voir le graphe.
Jean-Michel Girardot
Cette façon de représenter une généalogie était déjà courante au XVIIIème siècle.
venarbol
Sans doute, mais pour moi c’est plus qu’un simple mode de représentation. Je souhaite surtout utiliser les capacités de calcul des algorithmes de spatialisation pour mettre en évidence des caractéristiques que je n’aurais pas vues à l’œil nu. C’est bien là l’utilité des outils actuels de représentation de graphes. Les généalogistes du XVIIIe siècle devaient faire toutes ces observations AVANT de dessiner la représentation.
J.Louis Valory
Je profite de ce message pour saluer la qualité de votre site. Quelle passion avec ce sens du partage sans retenue..
Inconditionnel de Ancestris, je me sers ponctuellement de Gramps (avec son module Graphviz et Inkscape pour générer des graphes relationnels. En découvrant Gephi, je souhaite aller plus loin. Voici donc ma question : Quel outil, méthode utilisez-vous pour filtrer et exporter un gedcom au format csv.
Amicalement.
JLV
venarbol
Merci pour votre sympathique message. Pour ce qui est de l’export du gedcom en csv c’est bien là que le bât blesse pour le moment : je n’ai pas encore trouvé la méthode adéquate et j’ai dû passer par un export de généatique format tableur vers csv. Mais je cherche encore comment convertir directement le gedcom.
Elodie
Pas simple à lire … mais joli ;-). Cela me fait penser à l’appli vue lors des matins malins sur la généalogie descendante.
venarbol
J’avais moi aussi pensé à Gephi en voyant l’application présentée aux matins malins. C’est plus simple à lire quand l’image n’est pas réduite et statique comme ici. Et pour ce qui est de l’esthétique des graphes, elle a même inspiré un artiste contemporain : Mark Lombardi.
J.Louis Valory
J’ai trouvé ce site, mais le sujet dépasse mes compétences
http://flowingdata.com/2011/06/17/student-visualization-projects/
et
http://www.underyellowsun.com/geneHackman-No-Relation
http://flowingdata.com/2012/12/06/the-family-tree-for-all-in-the-family/