05:00
XII Congreso Colombiano de Botánica
Universidad de Antioquia
Universidad de Antioquia
«Constructo inclusivo que combina diversos movimientos y prácticas con el fin de que los conocimientos científicos multilingües estén abiertamente disponibles y sean accesibles para todos, así como reutilizables por todos, se incrementen las colaboraciones científicas y el intercambio de información en beneficio de la ciencia y la sociedad, y se abran los procesos de creación, evaluación y comunicación de los conocimientos científicos a los agentes sociales más allá de la comunidad científica tradicional. La ciencia abierta comprende todas las disciplinas científicas y todos los aspectos de las prácticas académicas, incluidas las ciencias básicas y aplicadas, las ciencias naturales y sociales y las humanidades, y se basa en los siguientes pilares clave: conocimiento científico abierto, infraestructuras de la ciencia abierta, comunicación científica, participación abierta de los agentes sociales y diálogo abierto con otros sistemas de conocimiento.» UNESCO (2021)
Imagen original (Da Silveira et al., 2023), https://zenodo.org/records/7858978. FAIR: Findable, Accessible, Interoperable, Reusable.
Reproducibilidad significa que los datos y el código de investigación están disponibles para que otros sean capaces de obtener los mismos resultados alcanzados en sus trabajos. Este concepto está íntimamente relacionado con el de replicabilidad, el acto de repetir una metodología científica con el objetivo de alcanzar conclusiones similares. Estos conceptos son elementos centrales de la investigación empírica.
Mejorar la reproducibilidad conduce a aumentar el rigor y la calidad de los trabajos científicos y, por tanto, a una mayor confianza en la ciencia. Bezjak et al. (2018)
Goodman et al. (2016) | Claerbout & Karrenbach (1992) | Association for Computing Machinery (2020) |
---|---|---|
Repetibilidad | ||
Reproducibilidad de los métodos | Reproducibilidad | Replicabilidad |
Reproducibilidad de los resultados | Replicabilidad | Reproducibilidad |
Reproducibilidad inferencial |
script_super-analisis.r
que se encuentra en la carpeta reproducibilidad
05:00
Si la primera línea de tu script R es
setwd("C:\Users\jenny\ruta\que\solo\yo\tengo")
Iré a tu oficina y LE PRENDERÉ FUEGO A TU ORDENADOR 🔥
Jenny Bryan
reprex
, readxl
, googlesheets4
, usethis
, entre otros.Algo similar ocurre con rm(list = ls())
.
setwd()
setwd()
establece el directorio de trabajo.
setwd("/Users/alex/github/r/etnobotanica-workshop")
La probabilidad de que setwd()
tenga el efecto deseado (hacer que las rutas de los archivos funcionen) para alguien que no sea su autor es del 0%. También es poco probable que funcione para el autor dentro de uno o dos años u ordenadores.
Las rutas fijas y absolutas, especialmente cuando están esparcidas por todo el código, hacen que un proyecto sea frágil. Este tipo de código no viaja bien a través del tiempo o del espacio.
rm(list = ls())
rm(list = ls())
elimina «todos» los objetos del entorno de trabajo actual.
Pensada para reiniciar las cosas, ya sea para reiniciar el análisis actual o para cambiar de un proyecto a otro. Pero hay mejores maneras de hacer ambas cosas: reiniciar R y Usar un IDE con soporte adecuado para proyectos.
Dada la intención, no va lo suficientemente lejos. Todo lo que hace es borrar objetos creados por el usuario del espacio de trabajo. Muchos otros cambios persisten de forma invisible y pueden tener profundos efectos posteriormente.
Aplicación que proporciona servicios integrales para facilitar el desarrollo de software.
Ventajas:
IDEs populares:
Siempre es recomendable trabajar en un espacio de trabajo desde cero, sin guardar o cargar cada vez. En RStudio se puede puede hacer de esta forma.
Siempre es recomendable reiniciar R de vez en cuando. En RStudio se puede hacer en Session > Restar R. Atajo de teclado: Ctrl-Shift-F10Ctrl-Shift-F10
Enfoque de organización que estructura todo el trabajo, código, datos y resultados relacionados con un proyecto en una única carpeta o estructura de carpetas organizada. Esta metodología facilita el manejo y la reproducibilidad de proyectos, especialmente en ciencia de datos, programación y análisis.
Gestionar tus proyectos de forma reproducible no sólo hace que tu ciencia reproducible, sino que te facilita la vida. @vsbuffalo
Un proyecto es una carpeta que contiene todos los archivos relevantes para un trabajo en particular.
Los proyectos permiten que las investigaciones sean reproducibles, portátiles y autocontenibles.
Trabajar con proyectos implica tener:
Los proyectos de RStudio facilitan la división del trabajo en varios contextos, con su propio directorio y espacio de trabajo, historial y documentos.
La barra de herramientas de proyectos se encuentra en la esquina superior derecha de RStudio. Muestra el nombre del proyecto actual, y tiene comandos para:
Documentos
un nuevo proyecto de RStudio05:00
Indican la ubicación de un archivo o directorio desde el directorio raíz del sistema de archivos. Dificulta la reproducibilidad ya que esa ruta sólo «funciona» en el equipo donde se haya creado.
/usuarios/yo/documentos/r/proyecto/scripts/super-analisis.R
Indican la ubicación de un archivo o directorio a partir de la posición actual del sistema operativo en el sistema de archivos.
scripts/super-analisis.R
here::here()
El objetivo del paquete here es facilitar la referenciación de archivos en flujos de trabajo orientados a proyectos1. here
utiliza el directorio de nivel superior de un proyecto para construir fácilmente rutas a archivos.
ejercicio
, que se encuentra en la carpeta reproducibilidad
01_script_rutas.R
que se encuentra en la carpeta scripts
15:00
Legible por máquinas
Legible por humanos
El nombre contiene información sobre el contenido
Relacionado al concepto de URL semántica2
Funciona bien con el orden predeterminado (alfanúmerico)
Poner algo numérico primero
Utilice ceros a la izquierda de otros números
Utilice la norma ISO 8601 para fechas: YYYY-MM-DD
2015-11-09_package-installation.R
2016-05-21_package-installation.R
2017-09-05_package-installation.R
2018-06-29_package-installation.R
2019-02-19_repair-default-library.R
2020-06-06_record-existing-pkgs.R
2021-06-15_git-config-analysis.R
2021-08-29-git-default-branch.R
2022-08-11_record-existing-pkgs.R
2013-06-26_BRAFWTNEGASSAY_Plasmid-Cellline-100-1MutantFraction_HO1.csv
2013-06-26_BRAFWTNEGASSAY_Plasmid-Cellline-100-1MutantFraction_HO2.csv
2013-06-26_BRAFWTNEGASSAY_Plasmid-Cellline-100-1MutantFraction_plateflle.csv
2014-02-26_BRAFWTNEGASSAY_FFPEDNA-CRC-1-41_A01.csv
2014-02-26_BRAFWTNEGASSAY_FFPEDNA-CRC-1-41_A02.csv
R no acepta todos los formatos listados. Formatos sugeridos: camelCase, flatcase, PascalCase, period.case, snake_case.
Un buen estilo de codificación es como una correcta puntuación: se puede prescindir de él, perofacilitalalectura. Todas las guías de estilo se basan fundamentalmente en opiniones. Algunas decisiones realmente facilitan el uso del código, pero muchas decisiones son arbitrarias. Lo más importante de una guía de estilo es que proporciona coherencia, lo que facilita la escritura del código porque hay que tomar menos decisiones.
Dos paquetes de R soportan la Guía de estilo del Tidyverse: styler
y lintr
.
15:00
No hay una estructura estándar para organizar un proyecto. Lo principal es que sea «organizado» y entendible por uno mismo y por otros.
La estructura de las carpetas y los nombres de los archivos deben ser:
datos
scripts
Hay varios paquetes que facilitan algunas de estas tareas: usethis
, rrtools
.
proyecto/
├── proyecto.Rproject # proyecto de RStudio
├── README.md # útil para describir el proyecto
├── code/
│ ├── functions
│ └── scripts
├── data/
│ ├── raw_data/ # los datos sin procesar
│ │ ├── muestreo.xlsx
│ ├── derived_data/ # los datos procesados
│ └── datos.csv
├── images/
├── output/
│ ├── report.pdf # el archivo exportado
├── report/
│ ├── apa.csl # el estilo de citas y referencias
│ ├── references.bib # la información de las referencias
│ └── report.qmd
├── tables/
└── templates/
No se trata solo de obtener resultados reproducibles; los informes o manuscritos también deben serlo. Quarto es un sistema de publicación científica y técnica de código abierto. Puede entrelazar texto y código para producir resultados con un formato elegante en forma de documentos, páginas web, blogs, libros y mucho más. Los archivos de Quarto (.qmd
) son archivos de texto plano conformado por:
Al usar un documento de Quarto dentro de un proyecto, es importante ser consciente de la ubicación de los archivos utilizados; por eso, las rutas relativas son fundamentales. Por diseño, el directorio de trabajo para renderizar archivos de Quarto es el directorio del propio archivo, que no siempre es la raíz del proyecto (.Rproj).
Tenemos el siguiente proyecto. Queremos mostrar data.csv
en index.qmd
02_quarto_directorio-trabajo.qmd
que se encuentra en la carpeta scripts
03_quarto_rutas.qmd
que se encuentra en la carpeta scripts
15:00
Imágenes de Bryan et al. (2024).
Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. […] en realidad puedes hacer lo mismo con casi cualquier tipo de archivo que encuentres en una computadora. Chacon (2014)
Un método básico y rudimentario del control de versiones es tener copias de un mismo archivo.
Git es un sistema de control de versiones. Git gestiona la evolución de un conjunto de archivos -llamado repositorio- de una forma sana y muy estructurada. En un flujo de trabajo basado en Git, documentas y, opcionalmente, expones tu trabajo a medida que avanzas. La comunicación y la colaboración son las aplicaciones estrella del control de versiones. Bryan (2018).
GitHub es el mayor proveedor de alojamiento de repositorios Git, y es el punto de encuentro para que millones de desarrolladores colaboren en el desarrollo de sus proyectos. Un gran porcentaje de los repositorios Git se almacenan en GitHub, y muchos proyectos de código abierto lo utilizan para hospedar su Git, realizar su seguimiento de fallos, hacer revisiones de código y otras cosas. Chacon (2014).
Un entorno (environment) consiste en todas las dependencias necesarias para que el código se ejecute correctamente. Esto incluye el propio R, los paquetes de R y las dependencias del sistema. Puede ser difícil gestionar entornos reproducibles:
install.packages()
en tu entorno no hace nada, o no hace lo correcto.Estos retos pueden abordarse mediante una cuidadosa combinación de herramientas y estrategias. Acá sólo abordamos: la actualización segura de paquetes y la colaboración en equipo. Quedando por fuera el manejo de varias versiones de R y las dependencias del sistema, para lo cual es recomendable investigar sobre rig y Docker.
renv
renv
ayuda a crear entornos reproducibles para sus proyectos de R, haciendo los proyectos:
renv
proporciona a cada proyecto su propia biblioteca privada.renv
facilita la instalación de los paquetes de los que depende su proyecto.renv
registra las versiones exactas de los paquetes de los que depende, y asegura que esas versiones exactas son las que se instalan allá donde vaya.15:00