Esta práctica tiene como objetivo explorar la visualización de redes dinámicas usando GEPHI y R
Haremos un ejercicio para visualizar 2 tipos de redes temporales. Para ello, usaremos los tutoriales presentados por Young Joon Oh en este video y en este otro.
PARTE 1.
Para el primer caso, utilizaremos datos del estudio de Vanhems et al. (2013) "Estimating potential infection transmission routes in hospital wards using wearable proximity sensors". Estos datos representan contactos (acercamientos a menos de 1.5 metros) entre personal hospitalario (46) y 29 pacientes en un hospital geriátrico a lo largo de 4 días y 4 noches. Los datos representan 14,037 contactos que fueron registrados a partir de sensores colocados en gafetes en el frente de las personas, de modo que sólo incluyen acercamientos de frente. Los sensores tomaban registros en intervalos de 20 segundos.
Por favor descarga los siguientes archivos:
hcw_edges.csv (tabla de vínculos)
hcw_nodes.csv (tabal de nodos)
3. Abre los archivos en excel u otro programa afin, para explorar su estructura. Verás que la tabla de nodos tiene dos columnas: id (identificador del nodo), status (indica el tipo de actor: MED=médic@s; NUR=enfermer@s; ADM=administrativ@s y PAT=pacientes). La tabla de vínculos tiene 4: Source, Target, time_start (el comienzo del intervalo de 20 segundos en el que se registró el contacto) y time_end (el final del intervalo de 20 segundos en el que se documentó el contacto).
4. Abre GEPHI
5. Abre la tabla de nodos (hcw_nodes.csv) como hemos hecho en prácticas previas (declárandola como red dirigida).
6. A continuación abre la tabla de vínculos (hcw_edges), asegurándote de incluirla en el mismo espacio de trabajo que los nodos. En el primer cuadro de diálogo, asegúrate que la opción de "Representación temporal" tenga activa la opción Intervalos, pues este es el tipo de información temporal que tienen los datos (también declara la red como dirigida).
7. Una vez que tanto nodos como vínculos están en un mismo espacio de trabajo, vuelve a la tabla de vínculos.
8. Para que GEPHI pueda interpretar el tiempo en los datos, tenemos que generar una columna que identifique los intervalos de tiempo. Para ello, en el Laboratorio de datos, en la tabla de vínculos, elige la opción "Mezclar columnas (Merge columns)" en la barra inferior de la ventana. Se abrirá un cuadro de diálogo. Elige las columnas time_start y time_end que verás del lado izquierdo (columnas disponibles) y luego la flecha con dirección al cuadro del lado derecho (columnas a mezclar). Después, en la opción de "Estrategias de mezclado disponibles" elige "Crear intervalo de tiempo" y luego "ok".
9. En el cuadro que se abre a continuación asegúrate que la "Columna de tiempo inicial" tenga seleccionada la columna "time_start" y la "Columna de tiempo final" tenga indicada la columna "time_end". Después selecciona OK y se cerrará el cuadro de diálogo.
10. En este punto verás una columna llamada Interval en la tabla de vínculos.
11. Ahora en el panel de vista general, modifica la visualización para que el color de los nodos represente el tipo de actor (columna Status de la tabla de nodos) y el tamaño de los nodos represente el grado (sugerencia: comienza con 30 como tamaño mínimo y 200 como tamaño máximo y ajusta según consideres para generar una buena visualización).
12. Usa el algoritmo de Fruchterman Reingold para establecer la disposición de los nodos.
13. En este punto, cualquier métrica que apliques, contemplará todos los vínculos de la red.
14. Ahora activa la opción "Activar línea temporal" en la parte inferior de la ventana. Verás que aparece una línea temporal y un control de reproducción. Ahí usa el mouse para mover los límites de la ventana temporal que se desplegará (rectángulo gris). Una vez establecida una ventana, puedes desplazarla con el mouse e ir viendo cómo cambia la red. Mira cómo cambia al cambiar el tamaño de la ventana (el intervalo temporal que estás observando). También examina cómo cambia la tabla de vínculos en el laboratorio de datos cuando mueves el tamaño de ventana.
15. Notarás que el tamaño de los nodos no cambia ya que siempre está mostrando el grado total contemplando el total del periodo. Para que esto se mueva de acuerdo con la ventana temporal desplegada, dirígete a la sección de apariencia donde estableces color y tamaño de los nodos. Del lado izquierdo del control de "Aplicar" que tiene una flecha verde, encontrarás un símbolo como dos anillos de una cadena. Pícalo para que la leyenda "Aplicar" cambie a "Autoaplicar" y dale "play".
16. En la barra inferior, a la izquierda del control de reproducción de la animación encontrarás un control de configuración (icono de un engrane). Da click derecho con el mouse y aparecerán 3 opciones. Elige "Configurar límites personalizados". En la sección de intervalo puedes determinar el tamaño de la ventana temporal. En comienzo elige 120 y en máximo escribe 3720.
17. Con ese tamaño de ventana, ahora busca en el panel de estadísticas, la sección "Dinámicas" y ejecuta la opción de # de Aristas. Observa el gráfico resultante.
18. Ahora guarda el proyecto en GEPHI antes del siguiente paso, pues puede ser muy demandante para la computadora. Una vez guardado, ejecuta la opción de Grado, con ese mismo tamaño de ventana. Esto puede llevar varios minutos.
19. Elige una ventana temporal determinada y exporta la imagen de la red, describiendo a qué ventana corresponde, además de cuántos nodos y vínculos están incluidos en esa ventana temporal, así como el porcentaje de vínculos que representan del total. También calcula el número de vínculos y grado dinámicos y guarda los dos gráficos resultantes para incluirlos en tu reporte con su respectiva interpretación, junto con la imagen de la red exportada.
PARTE 2. Redes temporales desde redes estáticas.
En este caso trabajaremos con datos del estudio de Isella et al. (2011) "What’s in a crowd? Analysis of face-to-face behavioral networks". Los datos representan redes de cercanía (1-1.5m) entre visitantes a una galería de ciencia. Los nodos representan los visitantes y los vínculos indican que los nodos estuvieron frente a frente a una distancia de 1-1.5m. El peso de los vínculos indica en cuántos intervalos de 20s fueron detectados en cercanía. Los datos originales corresponden a archivos gml (disponibles aquí: http://www.sociopatterns.org/datasets/infectious-sociopatterns/). Cada archivo corresponde a datos de un día. Young Joon Oh convirtió los archivos gml de redes estáticas en archivos gexf codificados para redes dinámicas. Si quieres conocer la manera en que hizo esto, revisa a partir del minuto 0:00:35 (y hasta 0:06:17) del video tutorial aquí.
Descarga los 21 archivos gexf que encontrarás aquí: aquí.
Abre GEPHI y dirígete a la sección Abrir, seleccionando los 21 archivos gexf que acabas de descargar. En el cuadro de diálogo, elige la opción "Unir en un nuevo espacio de trabajo", declarando la red como dirigida.
En apariencia, elige la opción de color de nodos y selecciona algún color Único para todos los nodos. Define el tamaño de los nodos de acuerdo con el grado.
Acomoda la red usando el algoritmo de distribución Yifan Hu Proportional, aumentando la distancia óptima a 200 y la fuerza relativa a 3.
Activa la línea de temporal en la parte inferior de la ventana.
En el control de configuración temporal (icono de engrane junto al control de reproducción) elige la opción Ver formato temporal y selecciona la opción "fecha". Esto hará que la línea temporal indique los 21 días segmentados por día. Juega con la ventana de tiempo y observa los cambios en la red.
Elige una ventana de tiempo de aproximadamente medio día y observa cómo cambia la red. Selecciona una visualización de esa ventana e inclúyela en tu reporte.
Para profundizar sobre el tema puedes revisar este otro tutorial: https://seinecle.github.io/gephi-tutorials/generated-html/converting-a-network-with-dates-into-dynamic.html
PARTE 3. Redes dinámicas en R (Statnet)
Para esta sección descarga los siguientes archivos de nodos y vínculos y el script y colócalos en una misma carpeta. Luego abre el script y sigue las indicaciones.
Lista de vínculos: Dataset1-Media-example-edges.csv
Tabla de nodos: Dataset1-Media-examples-nodes.csv
Script: ARSUNAM2024_P8_TEMPORALES.R
OPCIONAL (PUNTO EXTRA). PYTHON
Revisa el siguiente tutorial para visualización de redes temporales en python usando teneto. Incluye dos de las visualizaciones que generes en tu reporte explicando lo que representan.
Tutorial de visualización en python: https://teneto.readthedocs.io/en/latest/tutorial/plotting_a_temporal_network.html
FIN
REPORTE (entregarse el 22 de mayo por correo electrónico antes de las 10:00 pm)
El reporte de esta práctica debe incluir:
(Imagen de la red en una ventana temporal particular, de acuerdo con el punto 19 de la parte 1 de la práctica.
Imagen de los gráficos de las métricas dinámicas de número de Aristas y Grado, con su respectiva interpretación (como se menciona en el punto 19 de la de la parte 1 de la práctica).
Presenta una visualización de la red completa de los visitantes a la galería de ciencia (PARTE 2 de la práctica). Incluye una descripción de lo que se observa, interpretando qué pueden indicar los vínculos con mayor peso en la red.
Describe brevemente qué puedes observar sobre la dinámica de la red con la ventana temporal de medio día (punto 7 de la parte 2).
Presenta una visualización de la red con la ventana de medio día (punto 7 de la parte 2).
Presenta la visualización de la red agregada de mercaderes renacentistas (Script de R) en donde se muestran los pasos del nodo 13 a el resto de nodos en la red. Indica cuál es el nodo 13 y cuáles son los nodos que están a 3 pasos del mismos
A partir de la animación generada utilizando los datos de net3 (script de R), explica qué se observa en la animación (puedes apoyarte de imágenes) y adjunta el archivo resultante nombrado como se indica en el script: "UNAMARS2024_animacion1_tunombre".
Presenta las dos imágenes resultantes de las dos animaciones generadas con atributos dinámicos usando el grado y otra métrica (como se indica en el script de R).
BONO EXTRA: incluye dos de las visualizaciones que generaste con el tutorial de python, explicando lo que representan.