Saltar al contenido principal
ActivePapers Almacena tus datos como documentos recomputables para que cualquier resultado publicado pueda ejecutarse de nuevo, verificarse y preservarse.

Algunos enlaces de este sitio son de afiliados: si compras a través de ellos, es posible que recibamos una comisión sin coste adicional para ti. Esto nunca afecta a nuestras recomendaciones. Consulta nuestra declaración de afiliados para más detalles. Divulgación de afiliados.

¿La investigación no es reproducible? Una guía práctica

La investigación no reproducible ocurre cuando un grupo independiente, con los mismos datos, código y métodos descritos, no puede obtener el mismo resultado, un problema documentado en todas las disciplinas que los científicos computacionales pueden atacar directamente porque el software, y no la técnica de laboratorio húmedo, suele ser el punto de falla. Estándares como el informe de las Academias Nacionales de 2019 Reproducibilidad y replicabilidad en la ciencia definen el vocabulario de trabajo, y las correcciones prácticas son concretas: control de versiones, dependencias fijadas, contenedorización y automatización de compilación.

  • Reproducibilidad y replicabilidad son distintas: reproducibilidad significa volver a ejecutar el mismo análisis en los mismos datos y obtener los mismos números; replicabilidad significa que un nuevo estudio llega a una conclusión consistente.
  • La mayoría de las investigaciones computacionales no son reproducibles debido a cuatro causas: código faltante o mutado, entornos de software no fijados, procedencia de datos no documentados y pasos manuales ocultos.
  • Una compilación reproducible es una transformación determinista de las entradas de origen a las salidas: la misma idea que las compilaciones reproducibles en el empaquetado de software, aplicada a los pipelines de análisis.
  • La solución mínima viable es un repositorio con un archivo de bloqueo, un único punto de entrada (make, Snakemake o un script) y un archivo README que un extraño pueda seguir sin hacerle preguntas.
  • Los contenedores (entornos Docker, Apptainer/Singularity, Conda) resuelven la deriva del entorno; no resuelven la limpieza de datos no documentados ni los algoritmos no deterministas.
  • La reproducibilidad es un espectro, no un binario; busque que “un extraño competente pueda regenerar sus figuras”, no la perfección.

Qué significa realmente “reproducible” (y qué no)

La investigación reproducible es la práctica de empaquetar un estudio para que un investigador independiente pueda regenerar sus resultados a partir de los datos y el código originales. La palabra tiene un significado técnico específico que difiere del uso cotidiano: en el sentido del diccionario, “reproducible” simplemente significa capaz de ser producido nuevamente, pero en ciencia computacional implica determinismo, procedencia y documentación suficiente para que la regeneración no dependa del conocimiento tácito de los autores originales.

La reproducibilidad en la investigación pertenece a una familia de términos relacionados que frecuentemente se confunden. El estudio de consenso de las Academias Nacionales de 2019 distingue la reproducibilidad computacional (mismos datos, mismo código, mismos resultados) de la replicabilidad (datos nuevos, hallazgos consistentes).

Los estadísticos añaden repetibilidad, lo que significa que el mismo analista obtiene el mismo resultado dos veces. Un estudio puede ser reproducible pero no replicable (el código regenera fielmente un resultado que un nuevo experimento no logra confirmar) y esta distinción es importante al diagnosticar una falla.

La variante ortográfica “reproducable” aparece a menudo en consultas de búsqueda y escritura informal, pero el inglés estándar usa “reproducible”. El sufijo se adjunta a la raíz “reproducir” en la forma “-ible”, correspondiente a “producible” y “deducible”. Las guías de estilo y los diccionarios sólo enumeran “reproducible”; Trate “reproducable” como un error de ortografía, aunque lo encontrará en publicaciones antiguas de foros y en manuscritos no nativos en inglés.

Por qué la investigación no es reproducible: los cuatro modos de fracaso

El código faltante o mutado representa una gran parte de los intentos fallidos de reproducción. Un escenario común: el artículo publicado describe un análisis, el autor correspondiente abandonó el laboratorio y el repositorio no existe, contiene una versión desactualizada o hace referencia a un conjunto de datos privado. El código que “funciona en mi máquina” pero que no tiene historial de versiones no se puede auditar y, sin un hash de confirmación, no hay forma de saber qué versión produjo la figura publicada.

Relacionado: — Rutas de ciencia de datos basadas en proyectos con una terminal guiada y conjuntos de datos reales.

Los entornos de software no fijados detienen la reproducción de forma silenciosa. Una pipeline de NumPy escrita con la versión 1.20 puede producir diferentes resultados de punto flotante, advertencias de obsolescencia o errores directos en 2.x.

Las trayectorias de dinámica molecular generadas con una compilación de GROMACS o LAMMPS pueden diferir de otra cuando cambian los indicadores del compilador, las bibliotecas FFT o la descomposición paralela. La solución es guardar las versiones exactas (un requirements.txt con hashes, un conda env export, un renv.lock para R o un resumen de imágenes del contenedor), no solo una lista de nombres de paquetes.

La procedencia de datos no documentados es el tercer modo de falla. La salida de instrumentos sin procesar, los archivos de reinicio de simulación y los archivos HDF5 a menudo pasan por múltiples pasos de limpieza y conversión que nunca se muestran en la sección de métodos.

Vale la pena echarle un vistazo: — Una suscripción para certificados de ciencia de datos y Python respaldados por la universidad.

Si un colaborador filtró manualmente los valores atípicos en una hoja de cálculo, este paso es invisible y no reproducible. Procedencia significa registrar de dónde vino cada entrada, qué transformaciones se aplicaron y en qué orden.

Los pasos manuales ocultos son el cuarto. Hacer clic en una GUI para exportar un gráfico, cambiar el nombre de los archivos manualmente o copiar números entre herramientas rompe la automatización. La prueba es simple: ¿alguien que nunca lo ha conocido podría ejecutar su proceso de principio a fin sin una llamada telefónica? Si la respuesta es no, los pasos manuales son el problema.

Cómo hacer que la investigación sea reproducible: un flujo de trabajo práctico

El control de versiones es la base. Git (o Mercurial para proyectos existentes) rastrea cada cambio realizado en el código, manuscritos y pequeños archivos de configuración. Haga commit temprano, escribe publicaciones significativas y marca la confirmación exacta que coincida con el artículo enviado. Para artefactos binarios grandes (trayectorias, archivos HDF5, pesos de modelos entrenados), utilice repositorios Git LFS, DVC o Zenodo/figshare con DOI en lugar de enviar gigabytes al repositorio.

Lo siguiente que viene es fijar dependencias. Los proyectos de Python deben proporcionar un archivo de bloqueo (pip-compile, Poetry o uv); Los proyectos R deben usar “renv”; Los proyectos de Julia tienen “Project.toml” y “Manifest.toml”.

Fije las dependencias transitivas, no solo las dependencias directas, porque un cambio profundo en tres niveles puede cambiar la salida digital. Registre el sistema operativo, el compilador y cualquier biblioteca específica de hardware (BLAS, CUDA) que afecte los resultados.

Un único punto de entrada convierte una carpeta de scripts en una canalización. La herramienta clásica es make: un Makefile declara objetivos, dependencias y comandos, y make reconstruye solo lo que cambió.

Relacionado: — Una amplia biblioteca técnica de libros, vídeos y formación en directo sobre informática científica..

Esta es la esencia de la investigación reproducible con Make: el gráfico de construcción documenta el flujo de trabajo y impone el orden. Las alternativas modernas incluyen Snakemake, Nextflow y targets (para R). Cualquiera de ellos supera un archivo README que dice “ejecute script1.py, luego script2.py, luego…”.

La contenedorización captura todo el entorno. Las imágenes de Docker, las imágenes de Apptainer/Singularity (comunes en clústeres de HPC donde Docker no está disponible) y los entornos Conda resuelven la deriva del entorno.

Un contenedor con un resumen fijado es la garantía más sólida de que su análisis se ejecuta de manera idéntica en una computadora portátil, un clúster y una máquina de revisor. La compensación es el tamaño de la imagen y el tiempo de construcción; una imagen base sencilla y construcciones de varias etapas hacen que ambos sean manejables.

Si estás de compras: — Cursos interactivos de Python y ciencia de datos que codifica directamente en el navegador.

La documentación cierra el círculo. Un README debe indicar los requisitos del software, el comando exacto para reproducir cada figura, el tiempo de ejecución esperado y el resultado esperado. Un archivo CITATION.cff o codemeta.json ayuda a otros a citar software correctamente. Cuando un paso sea verdaderamente interactivo, descríbalo de manera suficientemente específica para que el lector pueda repetirlo.

Investigación reproducible con R: un ejemplo concreto

R tiene uno de los ecosistemas de reproducibilidad más maduros, razón por la cual la “investigación reproducible en R” es una búsqueda común. El paquete renv captura las versiones del paquete en un archivo de bloqueo, por lo que renv::restore() reconstruye la biblioteca exacta con la que se desarrolló un proyecto. R Markdown y Quarto entrelazan código, resultados y prosa en un solo documento que se regenera cuando se teje, eliminando errores de copiar y pegar entre el análisis y el manuscrito.

Una estructura mínima de proyecto R se ve así: un renv.lock para dependencias, un directorio R/ para funciones, un directorio data-raw/ para scripts de ingesta, un directorio data/ para objetos procesados ​​y un Makefile o _targets.R que organiza la compilación. El paquete targets extiende el seguimiento de dependencias estilo make a R, omitiendo pasos cuyas entradas no han cambiado. Para un tratamiento más profundo, el libro Reproducible Research with R and RStudio de Christopher Gandrud es una referencia estándar, y R Programming for Data Science de Roger Peng y los materiales del curso de reproducibilidad de Johns Hopkins cubren el flujo de trabajo de principio a fin.

Los mismos principios se aplican a Python. Un pyproject.toml con dependencias fijadas, un flujo de trabajo Makefile o Snakemake y un manuscrito de Quarto o Jupyter Book le brindan el equivalente a la pila de R. Las herramientas difieren; la disciplina no.

¿Qué son las compilaciones reproducibles?

Las compilaciones reproducibles son una práctica de ingeniería de software en la que compilar el mismo código fuente con la misma cadena de herramientas produce un binario idéntico byte por byte. El concepto se originó en el mundo del software libre (los proyectos Debian y Tor fueron pioneros en él) y ahora es un estándar formal mantenido por el proyecto Reproducible Builds. La motivación es la confianza: si alguien puede reconstruir un binario y obtener el mismo hash, puede verificar que el binario distribuido coincida con la fuente publicada y no contenga modificaciones ocultas.

La analogía con los pipelines científicos es directa. Una compilación de análisis reproducible toma entradas de origen (datos sin procesar, código, configuración) y produce resultados (figuras, tablas, estadísticas) de manera determinista.

El no determinismo rompe esto, haciendo que la investigación no sea reproducible: semillas aleatorias no fijas, reducciones paralelas que se suman en orden variable, marcas de tiempo incrustadas en archivos de salida y operaciones de punto flotante que dependen del número de subprocesos causan variación entre ejecuciones. Reparar semillas, clasificarlas antes de reducirlas y eliminar las marcas de tiempo son remedios estándar.

No todas las fuentes de no determinismo pueden eliminarse. La dinámica molecular con aceleración de GPU puede producir trayectorias ligeramente diferentes en diferentes hardware debido a diferentes redondeos de coma flotante, y los métodos de Monte Carlo son inherentemente estocásticos. El enfoque honesto es documentar la variación esperada, informarla y garantizar que la conclusión científica sea sólida, no reclamar una identidad a nivel de bits que no se puede proporcionar.

Criterios para juzgar si un estudio es reproducible

CriterioDébilFuerte
Disponibilidad de código”Disponible bajo pedido”Repositorio público con una versión etiquetada y DOI
EntornoSólo nombres de paquetesLockfile o contenedor con resumen fijado
Punto de entradaScripts numerados, orden manualFlujo de trabajo make, Snakemake o targets
Procedencia de los datosPárrafo de métodosScripts de ingesta documentados y sumas de comprobación
DeterminismoAleatoriedad no sembradaSemillas fijas, variación esperada documentada
DocumentaciónAsume conocimiento del autorUn extraño puede regenerar cada figura

Utilice esto como una autoauditoría antes de enviarlo para garantizar que su investigación sea reproducible. La mayoría de las revistas y los financiadores ahora exigen una declaración de disponibilidad de datos y códigos, y algunas (incluidas varias revistas de cartera de AGU, PLOS y Nature) exigen que el código se deposite en un repositorio con un DOI. Cumplir con la columna “fuerte” es cada vez más una condición para la publicación, no una ventaja.

Objeciones comunes y compensaciones honestas

El costo del tiempo es la objeción más citada y es real. Empaquetar adecuadamente una pipeline puede llevar días para un proyecto ya “terminado”. El contraargumento es que el costo de no hacerlo se paga más tarde, a menudo porque un estudiante o colaborador pasa semanas realizando ingeniería inversa en un análisis.

Un camino intermedio pragmático: invierta inmediatamente en control de versiones y un archivo de bloqueo, y solo coloque en contenedores los proyectos que espera que otros reutilicen.

Los datos confidenciales o restringidos dificultan el intercambio. Los datos clínicos, de propiedad exclusiva y de ciertos instrumentos no se pueden publicar públicamente. En estos casos, la reproducibilidad significa publicar el código, el esquema y una muestra sintética o no identificada, junto con una descripción clara del procedimiento de acceso. El objetivo es que un investigador calificado con acceso legítimo pueda regenerar los resultados.

El código heredado es otra limitación. Es posible que las simulaciones de Fortran y C de la década de 1990 no se compilen en sistemas modernos sin parches. Envolverlos en un contenedor con una cadena de herramientas vieja suele ser más fácil que reescribirlos y conserva los números originales. Documente qué parches aplicó y por qué.

Finalmente, reproducibilidad no es lo mismo que corrección. Una canalización puede ser perfectamente reproducible y aun así estar equivocada: un error reproducido fielmente sigue siendo un error. La reproducibilidad es un requisito previo para el escrutinio, no un sustituto del mismo. La revisión por pares, la replicación independiente y el análisis de sensibilidad siguen siendo necesarios para garantizar que la investigación no sea reproducible solo en sus errores.

Preguntas frecuentes

¿Qué significa que la investigación no sea reproducible?

La investigación no es reproducible cuando un investigador independiente, utilizando los mismos datos y código, no puede regenerar los resultados publicados. La causa suele ser la falta de código, un entorno de software no fijado, un procesamiento de datos no documentado o pasos manuales que nunca se automatizaron. Esta es una propiedad de los artefactos, no un juicio sobre la honestidad de los autores originales.

¿Cuál es la diferencia entre reproducibilidad y replicabilidad?

Reproducibilidad significa volver a ejecutar el mismo análisis con los mismos datos y obtener el mismo resultado. La replicabilidad significa realizar un nuevo estudio (nuevos datos, nuevas muestras) y llegar a una conclusión coherente. El informe de las Academias Nacionales de 2019 trata estos conceptos como conceptos separados, y un estudio puede ser reproducible incluso si no se puede replicar.

¿Cómo puedo hacer que mi investigación sea reproducible?

Comience con el control de versiones (Git) y marque el commit que corresponde a su artículo. Ancle las dependencias con un archivo de bloqueo o una imagen de contenedor. Proporcione un único punto de entrada, como un flujo de trabajo “Makefile”, Snakemake o “targets”. Documente la procedencia de los datos y los resultados esperados en un archivo README. Pruebe todo en una máquina limpia antes de enviarlo.

¿Es “reproducible” una ortografía correcta?

No. El inglés estándar deletrea la palabra “reproducible”, formada por “reproduce” más el sufijo “-ible”. Los diccionarios y guías de estilo sólo mencionan “reproducible”. La variante “reproducable” aparece en escritos informales y en algunos textos no nativos en inglés, pero no se acepta en escritos científicos formales.

¿Qué son las compilaciones reproducibles en informática científica?

Las compilaciones reproducibles son compilaciones que producen resultados idénticos a partir de entradas idénticas, un estándar formalizado por el proyecto Reproducible Builds para empaquetado de software. En ciencia, el mismo principio se aplica a los pipelines de análisis: semillas aleatorias fijas, reducciones deterministas y cadenas de herramientas fijas permiten que los resultados se regeneren exactamente. Cuando la variación de punto flotante dependiente del hardware sea inevitable, documente el rango esperado.

¿La reproducibilidad requiere compartir todos mis datos?

No siempre. Los datos restringidos, clínicos o propietarios se pueden manejar mediante la publicación de código, esquemas y muestras sintéticas junto con un procedimiento de acceso documentado. Muchos financiadores y revistas exigen una declaración de disponibilidad de datos en lugar de datos abiertos. La prueba es si un investigador calificado con acceso legítimo podría regenerar sus resultados.

Lecturas y herramientas adicionales

Reproducibilidad y replicabilidad en la ciencia (2019) de las Academias Nacionales es la referencia conceptual autorizada para cuando la investigación no es reproducible. El proyecto Reproducible Builds documenta el estándar de ingeniería de software. Para conocer las herramientas de flujo de trabajo, consulte la documentación de GNU Make, Snakemake, Nextflow, targets, renv y Quarto. The Turing Way es un manual comunitario abierto que cubre prácticas de investigación reproducibles en todas las disciplinas, y el Software Sustainability Institute publica orientación práctica para ingenieros de software de investigación.

Preguntas frecuentes

¿Qué significa que la investigación no sea reproducible?

La investigación no es reproducible cuando un investigador independiente, utilizando los mismos datos y código, no puede regenerar los resultados publicados. La causa suele ser la falta de código, un entorno de software no fijado, un procesamiento de datos no documentado o pasos manuales que nunca se automatizaron. Esta es una propiedad de los artefactos, no un juicio sobre la honestidad de los autores originales.

¿Cuál es la diferencia entre reproducibilidad y replicabilidad?

Reproducibilidad significa volver a ejecutar el mismo análisis con los mismos datos y obtener el mismo resultado. La replicabilidad significa realizar un nuevo estudio (nuevos datos, nuevas muestras) y llegar a una conclusión coherente. El informe de las Academias Nacionales de 2019 trata estos conceptos como conceptos separados, y un estudio puede ser reproducible incluso si no se puede replicar.

¿Cómo hago que mi investigación sea reproducible?

Comience con el control de versiones (Git) y marque el compromiso que corresponde a su artículo. Anclar dependencias con un archivo de bloqueo o una imagen de contenedor. Proporcione un único punto de entrada, como un flujo de trabajo "Makefile", Snakemake o "objetivos". Documente la procedencia de los datos y los resultados esperados en un archivo README. Pruebe todo en una máquina limpia antes de enviarlo.

¿Es "reproducible" una ortografía correcta?

No. El inglés estándar deletrea la palabra "reproducible", formada a partir de "reproduce" más el sufijo "-ible". Los diccionarios y guías de estilo sólo incluyen la palabra "reproducible". La variante "reproducible" aparece en escritos informales y en algunos textos cuyo idioma no es el inglés nativo, pero no se acepta en escritos científicos formales.

¿Qué son las construcciones reproducibles en la informática científica?

Las compilaciones reproducibles son compilaciones que producen resultados idénticos a partir de entradas idénticas, un estándar formalizado por el proyecto Reproducible Builds para empaquetado de software. En ciencia, el mismo principio se aplica a los canales de análisis: semillas aleatorias fijas, reducciones deterministas y cadenas de herramientas fijas permiten que los resultados se regeneren exactamente. Cuando la variación de punto flotante dependiente del hardware sea inevitable, documente el rango esperado.

¿La reproducibilidad requiere compartir todos mis datos?

No siempre. Los datos restringidos, clínicos o propietarios se pueden manejar mediante la publicación de código, esquemas y muestras sintéticas junto con un procedimiento de acceso documentado. Muchos financiadores y revistas exigen una declaración de disponibilidad de datos en lugar de datos abiertos. La prueba es si un investigador calificado con acceso legítimo podría regenerar sus resultados. Lecturas y herramientas adicionales El libro Reproducibilidad y replicabilidad en ciencia de las Academias Nacionales (2019) es la referencia conceptual autorizada para cuando la investigación no es reproducible. El proyecto Reproducible Builds documenta el stand de ingeniería de software


Aprenda Python codificando en su navegador

Cursos interactivos de Python y ciencia de datos que codifica directamente en el navegador