Haciendo Ciencia Abierta

Clase 3

Ignacio Sarmiento-Barbieri
Gustavo Castillo Alvarez

2024-06-24

Corta encuesta para conocer sus necesidades:

Retomando clase anterior

Reproducible vs Replicable

Diciendo y haciendo

Acotando el problema

  • Reproducción computacional

“Kitzes (2017) describes a research project as being ‘computationally reproducible’ when “a second investigator (including you in the future) can recreate the final reported results of the project, including key quantitative findings, tables, and figures, given only a set of files and written instructions.”

(Clyburne-Sherin et al, 2019, pág. 1, énfasis añadido)

Computadoras, y más computadoras

¿Por qué nuestra obsesión con las computadoras?

La escritura hizo que ambos procesos [almacenamiento y transmisión de información] fueran mucho más potentes y fiables. Permitió el almacenamiento de información en concentraciones mucho mayores y durante periodos de tiempo mucho más largos de lo que nunca se había creído posible, e hizo posible la transmisión de información a distancias mucho mayores, con más matices y fidelidad, de lo que nunca se había creído posible.

Gillam (2002, pág. 4, trad. propia), Unicode Demystified

  • Las computadoras son la herramienta de tecnología de información de nuestros tiempos

La tecnología de la información no empezó con el ordenador, ni con el teléfono o el telégrafo. Empezó con el lenguaje escrito.

Gillam (2002, pág. 4, trad. propia), Unicode Demystified

Computación

Computación

Computación

Dependencias

Peso atómico del Radio

Notas de laboratorio de Pierre y Marie Curie, 22 de abril de 1902 del peso atómico del radio.

Estilo de código

“There are only two hard things in Computer Science: cache invalidation and naming things.” — Phil Karlton

  • Seguir guías de estilo de código: tidyverse, Google
  • ¿qué estilo escoger?
    • No importa, siempre y cuando sigas un estilo y seas consistente
# Bad
do_something_very_complicated("that", requires, many, arguments,
                              "some of which may be long"
                              )
# Good
do_something_very_complicated(
  something = "that",
  requires = many,
  arguments = "some of which may be long"
)

Documentos Reproducibles

Pero primero, Markdown

Es un lenguaje de marcado (light markup language). Ejemplo más complicado: HTML. Le da instrucciones a una computadora cómo visualizar el contenido, pero markdown es además fácil de leer.

ejemplo.md
# Título 1

## Título 2
El texto puede ser *cursiva*, **negrilla**, ~~tachado~~, o como código
`script.do`, e inclusive superíndice^2^ / subíndice~2~.
También puedo poner un enlace a [Google](https://www.google.com/) y 
hasta insertar tablas:

|Fruta | Color |
| ---| ---|
| Manzana | Roja |
| Pera | Verde |

Veamos un tutorial usando el editor online gratuito StackEdit

README.md

Los famosos README.md se escriben en Markdown. Veamos un ejemplo.

  • Acostumbrarnos a la sintáxis es crucial pues servirá para:
    • RMarkdown
    • Jupyter

Programación Literaria

  • Lo mejor de ambos mundos: código ejecutable y texto (lenguaje natural)
  • En palabras de Yihui Xie, creador de RMarkdown:
    • “Programming + Writing = Literate Programming (LP)”
  • Ejemplos:

RMarkdown

“If you discover that you have more comments than code, consider switching to R Markdown.” - The tidyverse style guide

  • Creado en 2015 por Yihui Xie
  • Funcional dentro del IDE de RStudio
  • Soporta R y python

Funcionamiento de R Markdown

Quarto

  • Creado el 2022 por Posit
    • El mismo año la compañía RStudio PBC cambia su nombre a Posit PBC para acoger otros servicios como pyton.
  • Esta presentación fue programada con Quarto, source.

Jupyter

  • Nace en 2014 por Fernando Pérez (U de Antioquia, UCBoulder) y Brian Granger
  • Dato: el nombre hace referencia a los 3 programas que soporta: Julia, python y R.
  • Guía para usar R en Jupyter

Demostración en Vivo

Encuesta

  • Para automatizar la adquisición de información debemos descargar los datos directamente de Zenodo, no desde nuestro computador.
zenodo.prefix <- "10.5072/zenodo" # Prefijo de Zenodo
zenodo.id <- "74458" # ID de la última versión
zenodo.api <- "https://sandbox.zenodo.org/api/records/" # API completo
  • Procesamos información de la encuesta, código escondido (Clase 05)

Resultados SO

  • Tuvimos 15 respuestas.
¿En qué SO está ahora?
Var1 Freq
macOS 5
Windows 10

Resultados: Herramientas

Proyecto Transversal

La vanguardia

¿Hacia dónde nos estamos moviendo?

  • No solo documentos reproducibles, sino entornos reproducibles.
  • Makefile
  • Dockerfiles
  • Libro The Turing Way

La próxima clase

  • Control de Versión (Git, github, gitlab)
  • Repositorios de Datos (OSF, Zenodo)

Eso es todo por hoy!