Detección de Comunidades y Coordenadas para Grafos de Conocimiento con Python y el Algoritmo Leiden

La creación y análisis de grafos de conocimiento ha ganado prominencia como método para estructurar y entender relaciones complejas entre entidades. Estos grafos, que representan información de manera interconectada, a menudo requieren herramientas para identificar grupos de entidades estrechamente relacionadas, conocidos como comunidades, y para visualizar su estructura espacial. Este artículo explora cómo utilizar las bibliotecas leidenalg e igraph en Python para generar coordenadas y detectar comunidades dentro de un grafo de conocimiento.

Fundamentos de los Algoritmos

Algoritmo de Leiden

El algoritmo de Leiden es una técnica avanzada de detección de comunidades en redes complejas, desarrollado como una mejora del algoritmo de Louvain. Su principal objetivo es identificar subgrupos de nodos fuertemente interconectados ("comunidades") dentro de una red. Publicado en 2020, el algoritmo de Leiden aborda algunas de las limitaciones del método de Louvain, ofreciendo particiones de comunidad de mayor calidad y garantizando que todas las comunidades encontradas estén bien conectadas internamente. Es particularmente valorado por su eficiencia y la estabilidad de sus resultados.

Biblioteca iGraph

igraph es una potente biblioteca multiplataforma diseñada para la creación, manipulación y análisis de estructuras de grafos. Soporta una amplia gama de algoritmos de teoría de grafos y herramientas de visualización, siendo compatible con lenguajes como R, Python y C. Su robustez lo convierte en una opción excelente para trabajar con grafos de conocimiento, desde la construcción inicial hasta el análisis complejo y la representación visual.

Preparación e Implementación en Python

Instalación de Dependencias

Se recomienda el uso de Python 3.8 o superior para la instalación de las bibliotecas necesarias:

pip install leidenalg
pip install python-louvain
pip install cairocffi

cairocffi es necesario para la funcionalidad de trazado y visualización de igraph.

Ejemplo Práctico para la Construcción y Análisis

El siguiente script de Python demuestra cómo construir un grafo a partir de datos predefinidos de entidades y sus relaciones, aplicar el algoritmo de Leiden para la detección de comunidades, y calcular las coordenadas espaciales para la visualización del grafo.

import igraph as ig
import leidenalg as la
import random

# Definición de entidades (nodos) y relaciones (aristas)
nodos_entidades = [
    'Ciencia de Materiales, Multidisciplinaria', 'Física Aplicada', 'Química Física',
    'Nanociencia y Nanotecnología', 'Química Multidisciplinaria', 'Física de la Materia Condensada',
    'Metalurgia e Ingeniería Metalúrgica', 'Ingeniería Multidisciplinaria', 'Energía y Combustibles',
    'Tecnología de la Construcción', 'Ingeniería Civil', 'Ingeniería Eléctrica y Electrónica',
    'Óptica', 'Cristalografía', 'Ciencia de Polímeros', 'Mecánica',
    'Electroquímica', 'Ingeniería Mecánica', 'Ciencia de Materiales, Recubrimientos y Películas',
    'Física Multidisciplinaria', 'Ingeniería de Manufactura', 'Ingeniería Química',
    'Física Atómica, Molecular y Química', 'Ciencia de Materiales, Caracterización y Pruebas',
    'Mineralogía', 'Instrumentación', 'Química Aplicada',
    'Ciencias de la Computación, Sistemas de Información', 'Bioquímica y Biología Molecular',
    'Minería y Procesamiento de Minerales', 'Ciencia y Tecnología Nuclear', 'Ciencia de Materiales, Cerámica',
    'Ciencia y Tecnología Verde y Sostenible', 'Ciencia de Materiales, Compuestos', 'Ingeniería Industrial',
    'Química Analítica', 'Espectroscopia', 'Geociencias, Multidisciplinaria',
    'Ingeniería Geológica', 'Termodinámica', 'Arqueología', 'Arte',
    'Humanidades, Multidisciplinaria', 'Microscopía', 'Ciencia de Materiales, Textiles',
    'Matemáticas, Aplicaciones Interdisciplinarias', 'Química Inorgánica y Nuclear',
    'Ciencia y Tecnología Cuántica', 'Ciencias Multidisciplinarias',
    'Biotecnología y Microbiología Aplicada', 'Ciencia de la Imagen y Tecnología Fotográfica',
    'Matemáticas Aplicadas', 'Educación, Disciplinas Científicas', 'Acústica'
]

relaciones_grafo = [
    ('Física Aplicada', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Química Física', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Nanociencia y Nanotecnología', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Química Multidisciplinaria', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Física de la Materia Condensada', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Multidisciplinaria', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Energía y Combustibles', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Tecnología de la Construcción', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Civil', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Eléctrica y Electrónica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Óptica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Cristalografía', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Polímeros', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Mecánica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Electroquímica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Mecánica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Materiales, Recubrimientos y Películas', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Física Multidisciplinaria', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería de Manufactura', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Química', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Física Atómica, Molecular y Química', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Materiales, Caracterización y Pruebas', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Mineralogía', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Instrumentación', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Química Aplicada', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencias de la Computación, Sistemas de Información', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Bioquímica y Biología Molecular', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Minería y Procesamiento de Minerales', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia y Tecnología Nuclear', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Materiales, Cerámica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia y Tecnología Verde y Sostenible', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Materiales, Compuestos', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Industrial', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Química Analítica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Espectroscopia', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Geociencias, Multidisciplinaria', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ingeniería Geológica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Termodinámica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Arqueología', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Arte', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Humanidades, Multidisciplinaria', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Microscopía', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Materiales, Textiles', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Matemáticas, Aplicaciones Interdisciplinarias', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Química Inorgánica y Nuclear', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia y Tecnología Cuántica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencias Multidisciplinarias', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Biotecnología y Microbiología Aplicada', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de la Imagen y Tecnología Fotográfica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Matemáticas Aplicadas', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Educación, Disciplinas Científicas', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Acústica', 'Ciencia de Materiales, Multidisciplinaria'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Física Aplicada'),
    ('Química Física', 'Física Aplicada'),
    ('Nanociencia y Nanotecnología', 'Física Aplicada'),
    ('Química Multidisciplinaria', 'Física Aplicada'),
    ('Física de la Materia Condensada', 'Física Aplicada'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Física Aplicada'),
    ('Ingeniería Multidisciplinaria', 'Física Aplicada'),
    ('Energía y Combustibles', 'Física Aplicada'),
    ('Ingeniería Eléctrica y Electrónica', 'Física Aplicada'),
    ('Óptica', 'Física Aplicada'),
    ('Cristalografía', 'Física Aplicada'),
    ('Ciencia de Polímeros', 'Física Aplicada'),
    ('Mecánica', 'Física Aplicada'),
    ('Ingeniería Mecánica', 'Física Aplicada'),
    ('Ciencia de Materiales, Recubrimientos y Películas', 'Física Aplicada'),
    ('Ingeniería Química', 'Física Aplicada'),
    ('Ciencia y Tecnología Cuántica', 'Física Aplicada'),
    ('Acústica', 'Física Aplicada'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Química Física'),
    ('Física Aplicada', 'Química Física'),
    ('Nanociencia y Nanotecnología', 'Química Física'),
    ('Química Multidisciplinaria', 'Química Física'),
    ('Física de la Materia Condensada', 'Química Física'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Química Física'),
    ('Energía y Combustibles', 'Química Física'),
    ('Cristalografía', 'Química Física'),
    ('Ciencia de Polímeros', 'Química Física'),
    ('Electroquímica', 'Química Física'),
    ('Física Multidisciplinaria', 'Química Física'),
    ('Ingeniería Química', 'Química Física'),
    ('Física Atómica, Molecular y Química', 'Química Física'),
    ('Mineralogía', 'Química Física'),
    ('Química Aplicada', 'Química Física'),
    ('Bioquímica y Biología Molecular', 'Química Física'),
    ('Ciencia y Tecnología Verde y Sostenible', 'Química Física'),
    ('Termodinámica', 'Química Física'),
    ('Química Inorgánica y Nuclear', 'Química Física'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Nanociencia y Nanotecnología'),
    ('Física Aplicada', 'Nanociencia y Nanotecnología'),
    ('Química Física', 'Nanociencia y Nanotecnología'),
    ('Química Multidisciplinaria', 'Nanociencia y Nanotecnología'),
    ('Física de la Materia Condensada', 'Nanociencia y Nanotecnología'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Nanociencia y Nanotecnología'),
    ('Energía y Combustibles', 'Nanociencia y Nanotecnología'),
    ('Ingeniería Eléctrica y Electrónica', 'Nanociencia y Nanotecnología'),
    ('Óptica', 'Nanociencia y Nanotecnología'),
    ('Electroquímica', 'Nanociencia y Nanotecnología'),
    ('Ingeniería Química', 'Nanociencia y Nanotecnología'),
    ('Física Atómica, Molecular y Química', 'Nanociencia y Nanotecnología'),
    ('Química Aplicada', 'Nanociencia y Nanotecnología'),
    ('Biotecnología y Microbiología Aplicada', 'Nanociencia y Nanotecnología'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Química Multidisciplinaria'),
    ('Física Aplicada', 'Química Multidisciplinaria'),
    ('Química Física', 'Química Multidisciplinaria'),
    ('Nanociencia y Nanotecnología', 'Química Multidisciplinaria'),
    ('Física de la Materia Condensada', 'Química Multidisciplinaria'),
    ('Ingeniería Multidisciplinaria', 'Química Multidisciplinaria'),
    ('Energía y Combustibles', 'Química Multidisciplinaria'),
    ('Cristalografía', 'Química Multidisciplinaria'),
    ('Física Multidisciplinaria', 'Química Multidisciplinaria'),
    ('Ciencia y Tecnología Verde y Sostenible', 'Química Multidisciplinaria'),
    ('Ciencia de Materiales, Textiles', 'Química Multidisciplinaria'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Física de la Materia Condensada'),
    ('Física Aplicada', 'Física de la Materia Condensada'),
    ('Química Física', 'Física de la Materia Condensada'),
    ('Nanociencia y Nanotecnología', 'Física de la Materia Condensada'),
    ('Química Multidisciplinaria', 'Física de la Materia Condensada'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Física de la Materia Condensada'),
    ('Energía y Combustibles', 'Física de la Materia Condensada'),
    ('Ingeniería Eléctrica y Electrónica', 'Física de la Materia Condensada'),
    ('Óptica', 'Física de la Materia Condensada'),
    ('Ciencia de Polímeros', 'Física de la Materia Condensada'),
    ('Mecánica', 'Física de la Materia Condensada'),
    ('Ciencia de Materiales, Recubrimientos y Películas', 'Física de la Materia Condensada'),
    ('Ciencia y Tecnología Cuántica', 'Física de la Materia Condensada'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Física Aplicada', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Química Física', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Nanociencia y Nanotecnología', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Física de la Materia Condensada', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Ingeniería Eléctrica y Electrónica', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Ingeniería de Manufactura', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Ciencia de Materiales, Caracterización y Pruebas', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Mineralogía', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Minería y Procesamiento de Minerales', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Termodinámica', 'Metalurgia e Ingeniería Metalúrgica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Multidisciplinaria'),
    ('Física Aplicada', 'Ingeniería Multidisciplinaria'),
    ('Química Multidisciplinaria', 'Ingeniería Multidisciplinaria'),
    ('Energía y Combustibles', 'Ingeniería Multidisciplinaria'),
    ('Mecánica', 'Ingeniería Multidisciplinaria'),
    ('Ingeniería Mecánica', 'Ingeniería Multidisciplinaria'),
    ('Ingeniería Química', 'Ingeniería Multidisciplinaria'),
    ('Termodinámica', 'Ingeniería Multidisciplinaria'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Energía y Combustibles'),
    ('Física Aplicada', 'Energía y Combustibles'),
    ('Química Física', 'Energía y Combustibles'),
    ('Nanociencia y Nanotecnología', 'Energía y Combustibles'),
    ('Química Multidisciplinaria', 'Energía y Combustibles'),
    ('Física de la Materia Condensada', 'Energía y Combustibles'),
    ('Ingeniería Multidisciplinaria', 'Energía y Combustibles'),
    ('Electroquímica', 'Energía y Combustibles'),
    ('Física Multidisciplinaria', 'Energía y Combustibles'),
    ('Ingeniería Química', 'Energía y Combustibles'),
    ('Ciencia y Tecnología Verde y Sostenible', 'Energía y Combustibles'),
    ('Termodinámica', 'Energía y Combustibles'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Tecnología de la Construcción'),
    ('Ingeniería Civil', 'Tecnología de la Construcción'),
    ('Ciencia y Tecnología Verde y Sostenible', 'Tecnología de la Construcción'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Civil'),
    ('Tecnología de la Construcción', 'Ingeniería Civil'),
    ('Ingeniería Mecánica', 'Ingeniería Civil'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Eléctrica y Electrónica'),
    ('Física Aplicada', 'Ingeniería Eléctrica y Electrónica'),
    ('Nanociencia y Nanotecnología', 'Ingeniería Eléctrica y Electrónica'),
    ('Física de la Materia Condensada', 'Ingeniería Eléctrica y Electrónica'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Ingeniería Eléctrica y Electrónica'),
    ('Óptica', 'Ingeniería Eléctrica y Electrónica'),
    ('Ingeniería de Manufactura', 'Ingeniería Eléctrica y Electrónica'),
    ('Ingeniería Química', 'Ingeniería Eléctrica y Electrónica'),
    ('Ciencia y Tecnología Cuántica', 'Ingeniería Eléctrica y Electrónica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Óptica'),
    ('Física Aplicada', 'Óptica'),
    ('Nanociencia y Nanotecnología', 'Óptica'),
    ('Física de la Materia Condensada', 'Óptica'),
    ('Ingeniería Eléctrica y Electrónica', 'Óptica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Cristalografía'),
    ('Física Aplicada', 'Cristalografía'),
    ('Química Física', 'Cristalografía'),
    ('Química Multidisciplinaria', 'Cristalografía'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de Polímeros'),
    ('Física Aplicada', 'Ciencia de Polímeros'),
    ('Química Física', 'Ciencia de Polímeros'),
    ('Física de la Materia Condensada', 'Ciencia de Polímeros'),
    ('Física Multidisciplinaria', 'Ciencia de Polímeros'),
    ('Ingeniería Química', 'Ciencia de Polímeros'),
    ('Bioquímica y Biología Molecular', 'Ciencia de Polímeros'),
    ('Ciencia y Tecnología Verde y Sostenible', 'Ciencia de Polímeros'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Mecánica'),
    ('Física Aplicada', 'Mecánica'),
    ('Física de la Materia Condensada', 'Mecánica'),
    ('Ingeniería Multidisciplinaria', 'Mecánica'),
    ('Ingeniería Mecánica', 'Mecánica'),
    ('Ingeniería Química', 'Mecánica'),
    ('Ciencia de Materiales, Caracterización y Pruebas', 'Mecánica'),
    ('Ciencia de Materiales, Compuestos', 'Mecánica'),
    ('Ingeniería Geológica', 'Mecánica'),
    ('Matemáticas, Aplicaciones Interdisciplinarias', 'Mecánica'),
    ('Ciencia de la Imagen y Tecnología Fotográfica', 'Mecánica'),
    ('Matemáticas Aplicadas', 'Mecánica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Electroquímica'),
    ('Química Física', 'Electroquímica'),
    ('Nanociencia y Nanotecnología', 'Electroquímica'),
    ('Energía y Combustibles', 'Electroquímica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Mecánica'),
    ('Física Aplicada', 'Ingeniería Mecánica'),
    ('Ingeniería Multidisciplinaria', 'Ingeniería Mecánica'),
    ('Ingeniería Civil', 'Ingeniería Mecánica'),
    ('Mecánica', 'Ingeniería Mecánica'),
    ('Ciencia de Materiales, Recubrimientos y Películas', 'Ingeniería Mecánica'),
    ('Ingeniería de Manufactura', 'Ingeniería Mecánica'),
    ('Ingeniería Química', 'Ingeniería Mecánica'),
    ('Instrumentación', 'Ingeniería Mecánica'),
    ('Matemáticas, Aplicaciones Interdisciplinarias', 'Ingeniería Mecánica'),
    ('Acústica', 'Ingeniería Mecánica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de Materiales, Recubrimientos y Películas'),
    ('Física Aplicada', 'Ciencia de Materiales, Recubrimientos y Películas'),
    ('Física de la Materia Condensada', 'Ciencia de Materiales, Recubrimientos y Películas'),
    ('Ingeniería Mecánica', 'Ciencia de Materiales, Recubrimientos y Películas'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Física Multidisciplinaria'),
    ('Química Física', 'Física Multidisciplinaria'),
    ('Química Multidisciplinaria', 'Física Multidisciplinaria'),
    ('Energía y Combustibles', 'Física Multidisciplinaria'),
    ('Ciencia de Polímeros', 'Física Multidisciplinaria'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería de Manufactura'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Ingeniería de Manufactura'),
    ('Ingeniería Eléctrica y Electrónica', 'Ingeniería de Manufactura'),
    ('Ingeniería Mecánica', 'Ingeniería de Manufactura'),
    ('Ingeniería Industrial', 'Ingeniería de Manufactura'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Química'),
    ('Física Aplicada', 'Ingeniería Química'),
    ('Química Física', 'Ingeniería Química'),
    ('Nanociencia y Nanotecnología', 'Ingeniería Química'),
    ('Ingeniería Multidisciplinaria', 'Ingeniería Química'),
    ('Energía y Combustibles', 'Ingeniería Química'),
    ('Ingeniería Eléctrica y Electrónica', 'Ingeniería Química'),
    ('Ciencia de Polímeros', 'Ingeniería Química'),
    ('Mecánica', 'Ingeniería Química'),
    ('Ingeniería Mecánica', 'Ingeniería Química'),
    ('Química Aplicada', 'Ingeniería Química'),
    ('Bioquímica y Biología Molecular', 'Ingeniería Química'),
    ('Termodinámica', 'Ingeniería Química'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Física Atómica, Molecular y Química'),
    ('Química Física', 'Física Atómica, Molecular y Química'),
    ('Nanociencia y Nanotecnología', 'Física Atómica, Molecular y Química'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de Materiales, Caracterización y Pruebas'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Ciencia de Materiales, Caracterización y Pruebas'),
    ('Mecánica', 'Ciencia de Materiales, Caracterización y Pruebas'),
    ('Ciencia de Materiales, Compuestos', 'Ciencia de Materiales, Caracterización y Pruebas'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Mineralogía'),
    ('Química Física', 'Mineralogía'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Mineralogía'),
    ('Minería y Procesamiento de Minerales', 'Mineralogía'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Instrumentación'),
    ('Ingeniería Mecánica', 'Instrumentación'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Química Aplicada'),
    ('Química Física', 'Química Aplicada'),
    ('Nanociencia y Nanotecnología', 'Química Aplicada'),
    ('Ingeniería Química', 'Química Aplicada'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencias de la Computación, Sistemas de Información'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Bioquímica y Biología Molecular'),
    ('Química Física', 'Bioquímica y Biología Molecular'),
    ('Ciencia de Polímeros', 'Bioquímica y Biología Molecular'),
    ('Ingeniería Química', 'Bioquímica y Biología Molecular'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Minería y Procesamiento de Minerales'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Minería y Procesamiento de Minerales'),
    ('Mineralogía', 'Minería y Procesamiento de Minerales'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia y Tecnología Nuclear'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de Materiales, Cerámica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia y Tecnología Verde y Sostenible'),
    ('Química Física', 'Ciencia y Tecnología Verde y Sostenible'),
    ('Química Multidisciplinaria', 'Ciencia y Tecnología Verde y Sostenible'),
    ('Energía y Combustibles', 'Ciencia y Tecnología Verde y Sostenible'),
    ('Tecnología de la Construcción', 'Ciencia y Tecnología Verde y Sostenible'),
    ('Ciencia de Polímeros', 'Ciencia y Tecnología Verde y Sostenible'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de Materiales, Compuestos'),
    ('Mecánica', 'Ciencia de Materiales, Compuestos'),
    ('Ciencia de Materiales, Caracterización y Pruebas', 'Ciencia de Materiales, Compuestos'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Industrial'),
    ('Ingeniería de Manufactura', 'Ingeniería Industrial'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Química Analítica'),
    ('Espectroscopia', 'Química Analítica'),
    ('Geociencias, Multidisciplinaria', 'Química Analítica'),
    ('Arqueología', 'Química Analítica'),
    ('Arte', 'Química Analítica'),
    ('Humanidades, Multidisciplinaria', 'Química Analítica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Espectroscopia'),
    ('Química Analítica', 'Espectroscopia'),
    ('Geociencias, Multidisciplinaria', 'Espectroscopia'),
    ('Arqueología', 'Espectroscopia'),
    ('Arte', 'Espectroscopia'),
    ('Humanidades, Multidisciplinaria', 'Espectroscopia'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Geociencias, Multidisciplinaria'),
    ('Química Analítica', 'Geociencias, Multidisciplinaria'),
    ('Espectroscopia', 'Geociencias, Multidisciplinaria'),
    ('Ingeniería Geológica', 'Geociencias, Multidisciplinaria'),
    ('Arqueología', 'Geociencias, Multidisciplinaria'),
    ('Arte', 'Geociencias, Multidisciplinaria'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ingeniería Geológica'),
    ('Mecánica', 'Ingeniería Geológica'),
    ('Geociencias, Multidisciplinaria', 'Ingeniería Geológica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Termodinámica'),
    ('Química Física', 'Termodinámica'),
    ('Metalurgia e Ingeniería Metalúrgica', 'Termodinámica'),
    ('Ingeniería Multidisciplinaria', 'Termodinámica'),
    ('Energía y Combustibles', 'Termodinámica'),
    ('Ingeniería Química', 'Termodinámica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Arqueología'),
    ('Química Analítica', 'Arqueología'),
    ('Espectroscopia', 'Arqueología'),
    ('Geociencias, Multidisciplinaria', 'Arqueología'),
    ('Arte', 'Arqueología'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Arte'),
    ('Química Analítica', 'Arte'),
    ('Espectroscopia', 'Arte'),
    ('Geociencias, Multidisciplinaria', 'Arte'),
    ('Arqueología', 'Arte'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Humanidades, Multidisciplinaria'),
    ('Química Analítica', 'Humanidades, Multidisciplinaria'),
    ('Espectroscopia', 'Humanidades, Multidisciplinaria'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Microscopía'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de Materiales, Textiles'),
    ('Química Multidisciplinaria', 'Ciencia de Materiales, Textiles'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Matemáticas, Aplicaciones Interdisciplinarias'),
    ('Mecánica', 'Matemáticas, Aplicaciones Interdisciplinarias'),
    ('Ingeniería Mecánica', 'Matemáticas, Aplicaciones Interdisciplinarias'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Química Inorgánica y Nuclear'),
    ('Química Física', 'Química Inorgánica y Nuclear'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia y Tecnología Cuántica'),
    ('Física Aplicada', 'Ciencia y Tecnología Cuántica'),
    ('Física de la Materia Condensada', 'Ciencia y Tecnología Cuántica'),
    ('Ingeniería Eléctrica y Electrónica', 'Ciencia y Tecnología Cuántica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencias Multidisciplinarias'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Biotecnología y Microbiología Aplicada'),
    ('Nanociencia y Nanotecnología', 'Biotecnología y Microbiología Aplicada'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Ciencia de la Imagen y Tecnología Fotográfica'),
    ('Mecánica', 'Ciencia de la Imagen y Tecnología Fotográfica'),
    ('Matemáticas Aplicadas', 'Ciencia de la Imagen y Tecnología Fotográfica'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Matemáticas Aplicadas'),
    ('Mecánica', 'Matemáticas Aplicadas'),
    ('Ciencia de la Imagen y Tecnología Fotográfica', 'Matemáticas Aplicadas'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Educación, Disciplinas Científicas'),
    ('Ciencia de Materiales, Multidisciplinaria', 'Acústica'),
    ('Física Aplicada', 'Acústica'),
    ('Ingeniería Mecánica', 'Acústica')
]


# Crear el objeto grafo
grafo_conocimiento = ig.Graph(directed=False)

# Añadir nodos al grafo
grafo_conocimiento.add_vertices(nodos_entidades)

# Añadir aristas al grafo
grafo_conocimiento.add_edges(relaciones_grafo)

# Configuración del algoritmo Leiden
# 'ModularityVertexPartition': Partición basada en la modularidad.
# 'RBConfigurationVertexPartition': Partición basada en el modelo de bloques aleatorios.
# 'CPMVertexPartition': Partición basada en el modelo de Potts constante (percolación de cliques).

# Establecer un tamaño máximo para las comunidades para influir en la granularidad
max_tam_comunidad = 10
# Usar una semilla para resultados reproducibles
semilla_aleatoria = 42 # Semilla para reproducibilidad

# Aplicar el algoritmo de Leiden para encontrar comunidades
# Se utiliza la partición por modularidad para optimizar la estructura de la comunidad.
particion_comunidades = la.find_partition(
    grafo_conocimiento,
    partition_type=la.ModularityVertexPartition,
    max_comm_size=max_tam_comunidad,
    seed=semilla_aleatoria
)

# Imprimir la partición de comunidades
print("Resultado de la detección de comunidades (índices):", particion_comunidades)

# Mapear nodos a su comunidad asignada
mapa_comunidades = {}
id_comunidad = 0
for indices_comunidad in particion_comunidades:
    for indice_nodo in indices_comunidad:
        nombre_nodo = nodos_entidades[indice_nodo]
        mapa_comunidades[nombre_nodo] = id_comunidad
    id_comunidad += 1
print("\nAsignación de nodos a comunidades:", mapa_comunidades)

# Calcular las coordenadas espaciales para la visualización del grafo
# Se utiliza el algoritmo de diseño Kamada-Kawai ('kk') para un diseño equilibrado.
disposicion_nodos = grafo_conocimiento.layout("kk")
coordenadas_raw = disposicion_nodos.coords

print("\nCoordenadas calculadas para los nodos del grafo:")
# Mapear los nombres de las entidades a sus coordenadas y comunidad
datos_coordenadas_json = {}
lista_coordenadas_xy = []

for i, entidad_nombre in enumerate(nodos_entidades):
    pos_x, pos_y = coordenadas_raw[i]
    obj_coordenada = {
        'identificador': i, # Un ID numérico para cada nodo
        'x': pos_x,
        'y': pos_y,
        'comunidad': mapa_comunidades.get(entidad_nombre, -1) # Añadir la comunidad asignada
    }
    datos_coordenadas_json[entidad_nombre] = obj_coordenada
    lista_coordenadas_xy.append([pos_x, pos_y])

print("\nCoordenadas X, Y y comunidad por nodo:")
print(datos_coordenadas_json)

# Opcional: Guardar una imagen del grafo con las comunidades resaltadas
# Los colores se asignan automáticamente a las comunidades por defecto en igraph.
try:
    # Asegúrese de que el directorio 'resultados' exista antes de ejecutar, o crearlo programáticamente
    # import os
    # os.makedirs("resultados", exist_ok=True)
    ig.plot(particion_comunidades, "resultados/grafo_conocimiento_con_comunidades.png", vertex_label=nodos_entidades, layout=disposicion_nodos)
    print("\nGrafo visualizado y guardado en 'resultados/grafo_conocimiento_con_comunidades.png'")
except Exception as e:
    print(f"\nError al intentar generar la visualización del grafo: {e}")
    print("Asegúrese de que el directorio 'resultados' exista y que 'cairocffi' esté correctamente instalado junto con sus dependencias gráficas (ej. Cairo).")

Etiquetas: Python igraph leidenalg GrafoDeConocimiento DeteccionDeComunidades

Publicado el 7-5 16:00