¿Cuál es la mejor manera de hacer una investigación reproducible si necesita bibliotecas propietarias?


19

La investigación reproducible en computación tiene como objetivo hacer que el código necesario para generar los resultados en un documento computacional esté disponible para otros investigadores para que puedan ejecutar este código para reproducir los resultados en ese documento. Me gustaría hacer que toda mi investigación sea reproducible, pero me encuentro con un pequeño inconveniente: un par de documentos en los que estoy trabajando usan un paquete de diferenciación automática interno (llamado DAEPACK ) en una biblioteca patentada ( CHEMKIN- II ; términos de licencia poco claros).

Sería demasiado lento reemplazar estos componentes de software con versiones de código abierto. Existe un reemplazo de código abierto para CHEMKIN-II llamado Cantera , pero Cantera está en C ++, mientras que CHEMKIN-II está en Fortran 77. Requeriría mucho esfuerzo modificar suficiente código de Cantera para que pudiera procesarse automáticamente. herramientas de diferenciación para C ++.

Dado que necesito estos paquetes patentados, ¿cuál es la mejor manera de hacer que mi investigación sea lo más reproducible posible, suponiendo que los investigadores no tengan acceso a CHEMKIN-II? Dado que DAEPACK es un traductor de fuente a fuente, no necesariamente necesito distribuir DAEPACK; Podría incluir su salida, que serían archivos fuente de Fortran que calculan derivados.

En términos más generales, si necesita software propietario en su trabajo y ese software propietario no está ampliamente disponible (es decir, no es MATLAB, Mathematica, etc.), ¿cómo hace que su trabajo sea reproducible?


¿DAEPACK modifica el código fuente de CHEMKIN-II, o simplemente usa CHEMKIN-II internamente?
Dan

DAEPACK analiza el código fuente CHEMKIN-II y genera archivos fuente Fortran que contienen subrutinas que calculan matrices jacobianas, patrones de dispersión y extensiones de intervalo. No modifica el código fuente; Es como un compilador en ese sentido.
Geoff Oxberry

Si la salida de DAEPACK es fuente CHEMKIN-II modificada, ¿por qué se le permite distribuirla?
Dan

Es un trabajo derivado, pero no me queda claro si se modifica la fuente. Los nombres de las variables se copian, pero según ese argumento, muchos de los programas que he escrito son "fuente CHEMKIN-II modificada". Tendría que verificar ese punto.
Geoff Oxberry

¿La licencia CHEMKIN-II le permite distribuir libremente la fuente no modificada y restringir cómo distribuye los cambios? No puedo encontrar una copia de su licencia en línea.
Dan

Respuestas:


13

No creo que la definición de "investigación reproducible" requiera que el autor proporcione gratuitamente todas las herramientas necesarias para reproducir los resultados obtenidos. Si algunos de ellos son de propiedad exclusiva, corresponde al futuro usuario, no al autor, hacer los arreglos para adquirir el software necesario. (No esperaría tener que construir el software para que otra persona reproduzca sus resultados, ¿verdad?) Tendría la responsabilidad, por supuesto, de especificar exactamente qué versión del software propietario utilizó, pero no es razonable esperar hacer que un código de investigación sea compatible con el software de código abierto solo porque es de código abierto

[Además, además de hablar sobre la reproducibilidad del software cuando parte de él es propietario, creo que primero debe abordarse una pregunta más fundamental: ¿el software proporciona resultados reproducibles en diferentes instalaciones (por ejemplo, para diferentes arquitecturas y Por ejemplo, los errores de redondeo y las diferencias en las asignaciones como resultado de diferentes números de procesadores significa que muchos cálculos de simulación molecular darán resultados diferentes simplemente cambiando el número de procesadores incluidos en la asignación. (Los promedios estadísticos deberían alcanzar el mismo lugar, pero las trayectorias pueden y probablemente terminarán siendo muy diferentes.]]


2
Ciertamente estoy de acuerdo en que la investigación reproducible no obliga al autor a proporcionar todo el software requerido de forma gratuita. Sin embargo, el software que no está disponible públicamente plantea un problema. Uno de los objetivos del movimiento de investigación reproducible es ayudar a crear una conciencia de este problema en la comunidad, alentando a las personas a hacer público el código de investigación, incluso si no planean brindar ningún apoyo, solo por el bien de la reproducibilidad.
khinsen

2
El código vendido comercialmente todavía está disponible. Si ya no es posible obtener una licencia, eso es, por supuesto, un asunto diferente. Pero el autor original de un código no debería tener que volver a escribir un código para acomodar otra biblioteca solo con fines de reproducibilidad. (Se debe argumentar a favor de una mayor viabilidad y uso del código, pero el argumento de reproducibilidad no es prima facie necesario, aunque podría argumentarse que es suficiente)
Aeismail

4

Nunca he sido de la opinión de que "investigación reproducible" significa que sus colegas lectores y científicos solo deberían hacer clic en "Ejecutar" (o compilar o lo que sea que tengan) para reproducir completamente sus resultados. Por lo menos, eso mataría la investigación de cualquiera que use un paquete de análisis estadístico patentado, o haga que las cosas sean "irreproducibles" si se hicieran para una plataforma o lenguaje que pasó de moda. O, para el caso, alguien quiere reproducir su código, pero no entiende / usa el lenguaje que usa.

CrossValidated tuvo una discusión similar sobre el tema: "reproducible" significa que puede replicar mi análisis en mis datos, o que el experimento en sí mismo se puede volver a ejecutar desde cero y proporcionar resultados confirmatorios. El enlace está aquí: /stats/14999/how-are-we-defining-reproducible-research

Creo que el elemento más importante es describir lo que hiciste en el nivel en el que alguien que estaba suficientemente interesado podría recodificarlo , y si se usaran herramientas comerciales, se mencionan esas herramientas. Porque eso sirve tanto para los intereses de replicar el experimento como para verificar los errores de código.


2

En su caso, donde es posible que ni siquiera tenga derechos para distribuir ninguno de los códigos que usó, una descripción muy detallada del algoritmo podría ser lo mejor que puede hacer. Dependiendo de cuán complejo sea su código, alguien podría reproducir lo que sea de su interés a partir de las herramientas que tenga disponibles.

De lo contrario, pregunte y vea cuánto de su trabajo puede liberar, y luego libérelo.


Mucho de esto proviene de esta conversación de chat.
Dan

1

La mejor manera de hacer una investigación reproducible es no confiar en nada de corta duración como códigos específicos en una plataforma específica. Ayer estábamos computando en tarjetas perforadas, hoy en electrones en silicio, mañana puede ser en láseres con proteínas o incluso células vivas, pasado mañana en puntos cuánticos, y quién sabe qué será la próxima semana.

La investigación reproducible debe aclarar sus conceptos e ideas y no promover las herramientas disponibles actualmente como hardware o software como un requisito previo para reproducir los resultados de la investigación. Los algoritmos utilizados deben detallarse en una forma universal clara; La versión actual de un paquete específico de hardware, compilador o software solo se puede utilizar como herramienta para demostrar los resultados de la investigación.


Creo que necesitamos ambos: los conceptos e ideas para la comprensión humana y la interpretabilidad a largo plazo, y el código para la verificación a corto plazo.
khinsen

1

Publicar el código Fortran generado suena como una muy buena solución en su caso.

Como regla general, creo que el uso de software no publicado es incompatible con los objetivos de la investigación reproducible. Esa es una de las razones por las que veo la investigación reproducible como un objetivo a largo plazo en lugar de algo que uno podría requerir que se aplique de inmediato.


1

Yo trabajo para Elsevier. Mi compañía ha comenzado a usar el marco Collage (desarrollado en respuesta al Gran desafío del papel ejecutable) en números de revistas para permitir a los autores publicar fragmentos de código ejecutable con su artículo. Esta característica facilita a los lectores reproducir los resultados informados en el artículo y reutilizar el material publicado para su propia investigación. Collage admite una amplia variedad de software propietario, además del software de código abierto; Puede encontrar más información en el video informativo aquí y en el sitio web de Collage Authoring Environment .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.