Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Estadística# Cálculo# Software matemático

Rang: Una herramienta para la investigación reproducible

Rang ayuda a los investigadores a documentar y recrear sus entornos computacionales para un análisis preciso.

― 8 minilectura


Rango: Asegura TuRango: Asegura TuInvestigaciónreproducibilidad en la investigación.Documenta entornos para garantizar la
Tabla de contenidos

Cuando los investigadores comparten su trabajo, a menudo se olvidan de incluir detalles sobre el entorno informático que usaron. Esto es importante porque si falta esta información, otros pueden tener problemas para usar las mismas herramientas y paquetes para recrear sus resultados después. El paquete de R llamado "rang" aborda este problema. Ayuda a crear una descripción completa del entorno computacional para que otros puedan reconstruirlo en un momento específico. El proceso se basa en una herramienta llamada Docker, que ha demostrado ser efectiva para el código de R desde 2001.

¿Qué es rang?

El paquete rang permite a los investigadores documentar y compartir el entorno que usaron en su trabajo. Esta documentación cumple con los estándares para la investigación reproducible, lo que significa que otros pueden volver a ejecutar los análisis y verificar los resultados. El objetivo principal de rang es ayudar a los investigadores, especialmente en campos como las ciencias sociales y la biología, al hacer que el código más antiguo se pueda ejecutar de nuevo.

Desafíos de la Reproducibilidad Computacional

Un gran problema con reproducir investigaciones es que los Entornos informáticos pueden cambiar con el tiempo. Esto incluye cambios en el sistema operativo, componentes de software, la versión específica de R utilizada y cualquier paquete de R y sus Versiones. Si alguno de estos cambia, puede afectar si el código se ejecuta correctamente. Por ejemplo, si un fragmento de código depende de una cierta versión de un paquete y esa versión ya no está disponible, puede fallar al ejecutarse correctamente.

El impacto del sistema operativo es algo limitado porque muchos lenguajes de programación, incluido R, funcionan en diferentes sistemas. Sin embargo, los otros componentes son más críticos. La versión de R y los paquetes instalados pueden cambiar con frecuencia, y las actualizaciones de esos paquetes pueden introducir cambios problemáticos, lo que significa que el código que dependía de versiones anteriores puede no funcionar más.

Contenerización como Solución

La comunidad de desarrollo de software ha estado abordando estos problemas a través de un método llamado contenerización. Esto implica envolver el software, sus bibliotecas y el sistema operativo en un entorno virtual para que el software pueda ejecutarse independientemente de lo que esté instalado en la computadora local de un usuario. Docker es una herramienta bien conocida que crea estos contenedores.

Para construir un contenedor, necesitas escribir una descripción sencilla del entorno requerido. Un archivo llamado Dockerfile contiene esta descripción. El Dockerfile enumera todos los componentes necesarios, y Docker lo usa para crear un paquete completo que puede ejecutarse en cualquier máquina con Docker instalado.

Aunque muchos recursos explican cómo usar Docker para la reproducibilidad en la investigación, crear un Dockerfile aún no es una práctica común entre los investigadores. Una razón para esto es que muchas personas en la investigación podrían no tener las habilidades para escribir un Dockerfile. Afortunadamente, hay herramientas disponibles para ayudar a automatizar el proceso, y rang es una de ellas.

Soluciones Existentes y sus Limitaciones

Ya existen algunas herramientas para ayudar a gestionar paquetes y entornos de R. Por ejemplo, el paquete renv permite a los usuarios registrar versiones específicas de paquetes, pero solo puede restaurar el entorno actual. También hay soluciones que dependen de un servicio llamado MRAN, que ofrece instantáneas históricas de paquetes de R. Sin embargo, MRAN tiene limitaciones, incluyendo el acceso a instantáneas solo desde un cierto momento y solo para paquetes de CRAN.

Otra herramienta, containerit, puede documentar el entorno actual como un Dockerfile, pero no fija las versiones exactas de los paquetes de R. Tanto dockta como groundhog tienen problemas similares, ya que todavía dependen de MRAN.

El paquete rang es único porque proporciona una solución integral sin necesidad de depender de MRAN u otros servicios comerciales. Puede restaurar todo el entorno, lo que lo hace efectivo tanto para investigaciones actuales como históricas. Esta capacidad permite que rang se utilice como una herramienta arqueológica, permitiendo a los investigadores volver a ejecutar análisis antiguos que pueden haberse perdido debido a cambios en el software o paquetes.

Cómo Usar rang

Usar rang implica dos funciones principales: resolve() y dockerize(). La función resolve() recopila información sobre los paquetes de R y sus dependencias en un momento específico. Por ejemplo, si quisieras ver qué paquetes se estaban usando en una fecha determinada, como el 16 de enero de 2020, llamarías a resolve() con los paquetes relevantes. La función revisa varias bases de datos para reunir toda la información necesaria.

Una vez que tengas la información resuelta, puedes usar la función dockerize() para crear un Dockerfile y cualquier otro script necesario. Esto te permite construir un contenedor que replica el entorno original, completo con los paquetes en las versiones especificadas.

Estudios de Caso de rang en Acción

Ejemplo 1: Análisis de Texto con quanteda

Un paquete de R bien conocido para el análisis de texto llamado quanteda tenía una versión específica que los usuarios necesitaban para replicar un estudio publicado en 2018. Si alguien intentaba ejecutar el código usando la última versión, fallaría porque las versiones más nuevas de los paquetes pueden eliminar funciones obsoletas. Usando rang, un investigador puede verificar las versiones de los paquetes desde la fecha de publicación original y crear un contenedor Docker. Esto les permite ejecutar el código original sin problemas, asegurando que el análisis sea preciso y replicable.

Ejemplo 2: Investigación en Ciencia Psicológica

En el campo de la psicología, un estudio publicado en una revista prestigiosa enfrentó problemas con las dependencias de paquetes. Los autores habían compartido su código y datos, pero cuando otros intentaron ejecutarlo, algunos paquetes estaban desaparecidos o no disponibles. Al usar rang, los usuarios pudieron resolver las dependencias y crear un entorno reproducible. Los scripts de R se ejecutaron sin problemas, y las figuras resultantes coincidieron con las del artículo original.

Ejemplo 3: Análisis Político

Un estudio que evaluaba scripts de R compartidos en línea encontró que muchos scripts no podían ejecutarse con éxito. Uno de estos scripts ya había sido rescatado por otra herramienta, pero los investigadores se preguntaban si rang podría hacer lo mismo. Al intentar reproducir el análisis con rang y la fecha de instantánea correcta, pudieron crear un contenedor Docker donde el script original se ejecutó perfectamente. Esto demostró la efectividad de rang para resucitar scripts más antiguos, incluso cuando se pensaba que estaban perdidos.

Ejemplo 4: Recuperando Paquetes Eliminados

Algunos paquetes han sido eliminados de CRAN, lo que hace imposible instalarlos de nuevo. Por ejemplo, un paquete de R llamado maxent, utilizado para aprendizaje automático, fue retirado después de unos años. Los investigadores pueden utilizar rang para recrear un entorno con una versión antigua de R que pueda ejecutar código que depende de maxent. Esta capacidad permite a los investigadores acceder y analizar estudios más antiguos que dependen de paquetes que ya no están disponibles.

Ejemplo 5: Paquetes de Bioconductor

De manera similar a CRAN, los paquetes de R en Bioconductor también pueden ser eliminados. Uno de esos paquetes llamado Sushi fue deprecado y retirado del repositorio. Sin embargo, los investigadores pudieron usar rang para recrear el entorno necesario para ejecutar un script que dependía de este paquete. Pueden generar nuevamente las visualizaciones necesarias, demostrando que rang también puede manejar paquetes de Bioconductor.

Preparando Compendios de Investigación

Más allá de ayudar con análisis antiguos, rang también se puede usar para crear compendios de investigación que probablemente mantendrán la reproducibilidad a largo plazo. Un caso reciente involucró un artículo publicado con datos y código bien documentados. Los investigadores usaron rang para escanear los materiales compartidos en busca de todos los paquetes de R utilizados y generaron exitosamente un compendio de investigación que debería durar en el futuro.

Este compendio de investigación contiene todos los componentes necesarios para reproducir el análisis, incluyendo versionado y documentación del entorno. No solo ayuda a mantener la reproducibilidad para futuros investigadores, sino que también sirve como un registro sólido del trabajo original.

Conclusión

Rang es una herramienta vital para los investigadores que buscan mantener la reproducibilidad en su trabajo. Al documentar y recrear entornos computacionales, ayuda a garantizar que los análisis puedan volver a ejecutarse con precisión, incluso años después. Ya sea para análisis históricos o para compendios de investigación actuales, rang aborda una necesidad crítica dentro de la comunidad investigadora.

Con su capacidad para generar contenedores Docker que encapsulan todos los componentes necesarios, rang se destaca como una solución para la investigación reproducible. Esta capacidad puede cambiar fundamentalmente cómo los investigadores comparten su trabajo, facilitando que otros verifiquen y amplíen estudios existentes.

En una época donde la reproducibilidad es más importante que nunca, rang proporciona una solución práctica que empodera a los investigadores para compartir sus hallazgos con confianza. Esto puede ayudar a mejorar la integridad de la investigación científica, beneficiando en última instancia a la comunidad académica más amplia y a la sociedad en general.

Fuente original

Título: RANG: Reconstructing reproducible R computational environments

Resumen: A complete declarative description of the computational environment is often missing when researchers share their materials. Without such description, software obsolescence and missing system components can jeopardize computational reproducibility in the future, even when data and computer code are available. The R package rang is a complete solution for generating the declarative description for other researchers to automatically reconstruct the computational environment at a specific time point. The reconstruction process, based on Docker, has been tested for R code as old as 2001. The declarative description generated by rang satisfies the definition of a reproducible research compendium and can be shared as such. In this contribution, we show how rang can be used to make otherwise unexecutable code, spanning from fields such as computational social science and bioinformatics, executable again. We also provide instructions on how to use rang to construct reproducible and shareable research compendia of current research. The package is currently available from CRAN (https://cran.r-project.org/web/packages/rang/index.html) and GitHub (https://github.com/chainsawriot/rang).

Autores: Chung-hong Chan, David Schoch

Última actualización: 2023-03-08 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2303.04758

Fuente PDF: https://arxiv.org/pdf/2303.04758

Licencia: https://creativecommons.org/licenses/by-sa/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Enlaces de referencia

Más de autores

Artículos similares