Gephi - Una herramienta para visualizacion de grafos

Hace unos dias encontre Gephi, que es un programa de código abierto para la visualización y consulta de grafos. Tiene la particularidad que permite manejar grafos grandes (de miles de nodos) con una muy buena performance, cosa que no es muy comun en este tipo de herramientas.

Permite agrupar nodos del grafo, pintarlos de diferntes colores, darle tamaños proporcionales a indicadores, hacer los arcos entre nodos mas gruesos dependiendo de diverso factores, etc.

A pesar que esta en una versión alpha, muestra muy buena calidad, y permite la importación de archivos en los formatos mas comunes para grafos.

Hace poco incorporaron también los archivos separados por comas, haciendo mas fácil aun la lectura de dichos grafos.

Por ejemplo la KB de GXWiki puede verse así:


Permite ver de mas cerca parte del grafo, en forma vectorial sin perder detalles del mismo.
Desde hace tiempo tengo ganas de tener algún tipo de diagramador que me permita ver los objetos de la KB  como grafo y navegar a través de los objetos para entender mejor la relaciones entre ellos.
Es la primera vez que veo que se puede hacer con buena performance.

Por si alguien le interesa la consulta SQL que use para lograr el archivo csv (tiene que ponerse en minúsculas) sobre una KB GeneXus X es:



SELECT     ev1.EntityVersionName  + ';' + ev2.EntityVersionName 
FROM         ModelCrossReference INNER JOIN
                      EntityType AS et1 INNER JOIN
                      Entity AS e1 INNER JOIN
                      EntityVersion AS ev1 ON e1.EntityTypeId = ev1.EntityTypeId AND e1.EntityId = ev1.EntityId AND e1.EntityLastVersionId = ev1.EntityVersionId ON 
                      et1.EntityTypeId = e1.EntityTypeId ON ModelCrossReference.ToEntityTypeId = ev1.EntityTypeId AND ModelCrossReference.ToEntityId = ev1.EntityId INNER JOIN
                      EntityType AS et2 INNER JOIN
                      Entity AS e2 INNER JOIN
                      EntityVersion AS ev2 ON e2.EntityTypeId = ev2.EntityTypeId AND e2.EntityId = ev2.EntityId AND e2.EntityLastVersionId = ev2.EntityVersionId ON 
                      et2.EntityTypeId = e2.EntityTypeId ON ModelCrossReference.FromEntityTypeId = ev2.EntityTypeId AND ModelCrossReference.FromEntityId = ev2.EntityId
WHERE     (et2.EntityTypeNamespace = 'Objects') AND (et1.EntityTypeNamespace = 'Objects') AND (ModelCrossReference.ModelId = 1) 


y se pueden usar los campos EntityTypeName (de et1 y et2) para filtrar los tipos de objetos que les interesen.

Si alguien llega hacer algún gafo interesante, estaría bueno que pusiera una foto con el mismo.
Hay un tutorial sencillo de como usar Gephi e informacion para desarrolladores que quieran meter codigo.

Un ejemplo de una KB de 6300 nodos, que le hacemos cambios todos los dias, vista muy de arriba..



Viendo lo complejo que es el grafo, parece un gran puzle de 6000 piezas. Le cambiamos las piezas todos los dias, las interfaces, el arbol de llamadas.. A mi me sirve ver en forma grafica este tipo de cosas, pues me ayuda a entender lo complejo que es lo que estamos armando y lo dificil que es predecir que puede afectar el tocar algo en el sistema.

Gephi esta en al alpha, y en algunas oportunidades no hace lo que uno espera... pero le veo buen potencial.

Comentarios

  1. Muy Interesante !!! y muy buen dato,
    gracias por compartirlo

    ResponderBorrar
  2. Excelente aporte!!

    Gephi tiene todo lo que otros no tienen :)

    Hace años vengo probando varios, y ninguno realmente "aguanta" o tiene lo que necesito.
    Chau GraphViz, Tulip, LGL...

    Prefiero invertir en Gephi, es Java, tiene una arquitectura muy buena, está prolija y la API está muy buena.. me permite extenderlo!! Genial!!
    Y claro.. es OpenSource LGPL.

    Creo que tiene todas las características necesarias para que puede perdurar en el tiempo (ya me imagino la cantidad de gente que está comenzando en I&D/Universidades a crear cosas en torno a la misma).

    Espero a futuro tener tiempo para trabajar en torno a Gephi, ya tengo algunas ideas para implementar (Exporters y Plugins).

    Gracias por el aporte!!.
    Ya voy a correr la sentencia SQL contra una KB de +10000 objetos GX :)

    ResponderBorrar
  3. Hi :)

    (sorry I don't speak Spanish)

    Just a detail, Gephi is not in LGPL, but in GPL. However we may release some core modules like the Graph API in LGPL in the future.

    Seeya!

    ResponderBorrar
  4. Hola, solo como actualización. Gephi esta en versión 0.8.2 y ya no es alpha y ya no es beta. Saludos

    ResponderBorrar
  5. No soy ducho en estas cuestiones, aunque por lo visto, puede ser lo que estoy necesitando. Tenès algùn tutorial de confianza para sugerir para operar con este soft? Gracias.-

    ResponderBorrar
  6. RGS Relojes, tal vez este tutorial de pueda servir
    https://www.youtube.com/watch?v=PHFNUGEMoRc

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.