rOpenSci | Divide y venceras: de polar al Polarverse

Divide y venceras: de polar al Polarverse

“Solo soy un politólogo, parado frente a la consola de R , pidiendole que le ayude a terminar una tesis”

Corría el año 2015, un estudiante de maestría de Ciencia Política tenía que procesar datos para entregar su tésis y decidió aprovechar la oportunidad para aprender a usar R. Al largo y tortuoso camino del requisito académico se agregó un grado de dificultad extra: incorporar un software de programación desde cero, con una curva de aprendizaje algo empinada.

Años después reviso scripts del código de la tesis y me sonrío al ver extensas líneas de código para recodificar variables con esta una estructura como esta:


#PARTY LABELS A GOBERNADOR
# 0 VOTOS EN BLANCO
# 1 WAYAR GOBERNADOR  (WALTER WAYAR)
# 2 COALICION CIVICA (ARI) (ALBERTO ROLANDO TONDA)
# 3 FRENTE JUSTICIALISTA RENOVADOR DE LA VICOTRIA (JUAN MANUEL URTUBEY)
# 4 FRENTE OLMEDO GOBERNADOR  (ALFREDO OLMEDO)
# 5 MORELLO GOBERNADOR / PROYECTO SUR  (CARLOS FERNANDO MORELLO)
# 6 PARTIDO OBRERO (CLAUDIO DEL PLA)
# 7 UNION CIVICA RADICAL  (DIEGO MARINO)
# 8 MIJD (CARLOS ARIEL FERNANDEZ)


#RECODE TODOS LOS PARTY LABELS SEGUN ADHESIONES A LISTAS CON CANDIDATOS A GOBERNADOR
SALTA$ListaF[ SALTA$Lista == "VOTOS EN BLANCO" & SALTA$Year == 2011] <-9999
SALTA$ListaF[ SALTA$Lista == "AGRUPACION CRECIMIENTO SOLIDARIO" & SALTA$Year == 2011] <-3
SALTA$ListaF[ SALTA$Lista == "AGRUPACION DEMOCRATICA COMUNAL" & SALTA$Year == 2011] <-3
SALTA$ListaF[ SALTA$Lista == "AGRUPACION DEMOCRATICA TARTAGAL (ADETA)" & SALTA$Year == 2011] <-3
SALTA$ListaF[ SALTA$Lista == "AGRUPACION FEDERALISTA POPULAR MOSCONI" & SALTA$Year == 2011] <-1
SALTA$ListaF[ SALTA$Lista == "AGRUPACION FEDERALISTA POPULAR TARTAGAL" & SALTA$Year == 2011] <-3

Mirando en restropectiva, como a mis scripts, aprender R fue la mejor decisión que tomé en mi carrera profesional.

R desde entonces en una herramienta fundamental de mi día a día. Lo es en el ámbito académico y como docente universitario; en mis trabajos como consultor y analista; en mis tareas como funcionario público; en mis ratos libres, como un pasatiempo; y en mi trabajo actual, coordinando el equipo de Datos de Fundar, un think tank que estudia y elabora políticas públicas para el desarrollo sostenible e inclusivo de Argentina.

De todas las cualidades que tiene R, la comunidad fue el factor determinante en mi recorrido con este lenguaje de programación.

Al tiempo que finalizaba el primer paso de la tesis, me enteraba de la organización de la primera Conferencia Latinoamericana de R para I+D (LatinR), comunidad a la que le debo mi segundo (y tercero… y enesimo) paso en mi relación con R. En la primera conferencia presenté casos de uso para análisis político desde R, implementando grillas de Argentina para usar con ggplot como si fueran mapas con geofacet. En la segunda conferencia, presentamos la Shiny App Inteligencia Electoral para el análisis de resultados electorales de Argentina y pude participar del taller Desarrollo de Paquetes con Hadley Wickham. Fue éste el punto de partida ideal para empezar con la idea de empaquetar código yo mismo.

el hex logo del paquete de R geofecetAR a la izquierda y el de polAr a la derecha

🔗 El nacimiento de polAr

Con el objetivo de llegar a presentar en la tercera conferencia de LatinR, desarrollé geofacetAR, una versión pulida y con funciones para trabajar con el diseño de grillas como si fueran mapas de Argentina.

Se desató la pandemia por el Covid19. Y el aprendizaje de cómo desarrollar paquetes, en tiempos de confinamiento y muchas horas frente a la computadora, convirtieron el trabajo de procesamiento de datos electorales, de mi vida como politólogo y consultor, en un nuevo paquete: polAr; que el 16 de mayo de 2020 viajaba a CRAN.

🔗 El universo polAr

Si bien originalmente el paquete buscaba facilitar el acceso y herramientas para el análisis de datos electorales en Argentina, con el tiempo se fueron integrando otros flujos de trabajo y fuentes de datos (geográficos, discursos presidenciales y votaciones legislativas), con un incremento de dependencias y dificultad para administrar cada vez más funciones. Esto fue un tema relevante que discutimos en el panel Desarrollo de paquetes durante la tercera conferencia de LatinR (2020).

LatinR Confernce (2022) - Mesa Redonda de Desarrollo de Paquetes

polAr había alcanzado las 4000 descargas cuando recibo un correo electrónico del equipo de CRAN informando que debía ajustar una violación de política para que el paquete no fuera archivado. A pesar de enviar una nueva versión el paquete fue archivado sin una clara razón.

El polarverse

Sí la conversación en LatinR nos hizo pensar en la separación en múltiples paquetes como posibilidad, el archivado de CRAN nos dio la oportunidad de hacerlo. Le decisión fue generar flujos independientes de trabajo; estrategia que posibilitó poder ir avanzando con distintos ritmos, tomando decisiones específicas para cada tema, procurando abordarlo al mismo tiempo como parte de un conjunto, emulando el paradigma Tidyverse: una filosofía y gramática de funcionamiento similar para la colección de paquetes. El objetivo fue mejorar el desarrollo de aquello que derivó en el archivado de {polAr}.

Presentamos “Divide y Vencerás: de {polAr} al polarverse” en la cuarta conferencia de LatinR, mostrando este nuevo universo con cinco paquetes:

  1. 📦 opinAr: da acceso a datos de opinión pública y de gobierno de Argentina a partir del Indice de Confianza en el Gobierno que publica mensualmente la Universidad Torcuato Di Tella.

  2. 📦 electorAr facilita el acceso datos electorales de Argentina (para distintos niveles y con diferente agregación espacial) y funciones para computar indicadores relevantes.

  3. 📦 legislAr: permite descargar información desagregada de votaciones en las cámaras legislativas de Argentina, originadas por el proyecto Década Votada de Andy Tow.

  4. 📦 discursAr: pensado para obtener datos relativos a discursos políticos. En principio proveyendo acceso a discursos presidenciales en asambleas legislativas de inauguración de sesiones ordinarias.

  5. 📦 geoAr: permite acceder a datos y herramientas para flujos de trabajo espaciales desde R. Una ponencia sobre el paquete fue aceptada para la sexta conferencia de LatinR.

Adicionalmente trabajamos en una librería auxiliar llamada polarViz, para facilitar la tarea de visualización de los otros paquetes, y un metapaquete polArverseque emula el funcionamiento de tidyverse, para la carga del conjunto de librerías asociadas.

🔗 🌠 Encuentro de universos: el polArverse en R-Universe

Durante este proceso incorporamos R-Universe en el flujo de trabajo. Nos proveyó un espacio autónomo y autoadministrado en el cual publicar estos nuevos paquetes (no ya simplemente como repositorios de GitHub) y es de gran ayuda para el chequeo en diferentes sistemas operativos y versiones de software. Sin duda R-Universe es una herramienta relevante para el mejor mantenimiento del polArverse.

polAr R-Universe

🔗 Seguimos dando pasos importantes para nuestro universo:

En primer lugar, ¡volvimos a CRAN! En febrero de 2023 se envío geoAr que, como señalamos, permite acceder y facilitar el procesamiento de datos con relevancia espacial. Una versión en desarrollo (accesible desde r-universe) permite también interactuar con la API del Servicio de Normalización de Datos Geográficos de Argentina.

Por otro lado, incoporamos un histórico pendiente a la caja de herramientas polAr para trabajar con datos censales: censAr. El paquete,  actualmente en desarrollo, está basado en el código de censo2017, desarrollado por Mauricio “Pacha” Vargas y parte de la suite de rOpenSci.

🔗 Mi experiencia como desarrollador de software con R

  • Empecé a trabajar con este lengüaje - o dialécto, como gusta decir a un colega, a proposito del antecedente del S de Bell en la década de 1970- un poco por fortuna.

  • Rápidamente lo incorporé como herramienta de trabajo, en múltiples facetas: como analista, consultor, funcionario público y docente.

  • La comunidad de R - y en particular toda la experiencia alrededor de LatinR- fueron un factor determinante para mi experiencia. Sin lugar a dudas facilitando mucho el proceso.

  • Creo que es posible pensar en mejoras del proceso para hacer de CRAN un espacio mejor aún para el ecosistema R y hacer de la experiencia de desarrollo FOSS mas amena y predecible.

  • El surgimiento del proyecto R-Universe para mejorar la experiencia de publicación y descubrimiento de paquetes desarrollados en R resulta muy valioso.

El polarverse fue un proyecto paralelo en el que trabajé en mis momentos libres y sin financiamiento. Surgió casi lúdicamente, como un experimento para aprender a desarrollar software. Probamos exitosamente la publicación en CRAN. Nos frustramos y enojamos. Aprendimos. Sumamos nuevas herramientas.

Seguimos avanzando. De a poco. Ahora, con el apoyo y estimulo que supone en gran equipo de Fundar, en general, y del área de datos que me toca coordinar, en particular. “Lento, pero seguro”.