Que material devo incluir em um artigo de revista (ou publicar on-line) para tornar minha pesquisa computacional reproduzível?


23

A reprodutibilidade se tornou cada vez mais importante na pesquisa em ciências computacionais. (Por exemplo, consulte este artigo de Roger Peng na Science ; também conheço outros artigos e sites da Web.) No entanto, não está claro para mim quanta informação devo incluir em um artigo de revista (ou online) para obter minha pesquisa computacional é reproduzível (supondo que não haja outros obstáculos, como acordos de propriedade intelectual). Existem diretrizes por aí e, se não, as pessoas poderiam sugerir que medidas os pesquisadores devem tomar para tornar reproduzível sua pesquisa em ciências computacionais?

De uso particular nas respostas, seriam possíveis maneiras de implementar essas sugestões - fluxos de trabalho, basicamente. Fluxos de trabalho independentes de sistema ou baseados em Linux são preferíveis. Além disso, discutir qualquer experiência pessoal relevante que você teve também seria útil.

No meu caso particular, estou escrevendo um artigo teórico com alguns exemplos de cálculos que são simples o suficiente para serem feitos no MATLAB. Eu acho que nesse caso, incluindo o script MATLAB, além de observar a versão específica do MATLAB na minha máquina, seria suficiente para garantir a reprodutibilidade. No entanto, tenho certeza de que existem cenários mais complicados por aí, e conselhos sobre como realizar pesquisas reproduzíveis seriam muito úteis para futuros projetos.

Respostas:


17

Em ordem aproximada de importância.

Código fonte

  1. Disponibilize o código que implementa os principais aspectos do seu algoritmo. Mesmo que o usuário não consiga criar ou executá-lo, ele pode ler exatamente o que é feito. Já notei várias vezes decisões simples que não foram documentadas em um artigo, mas que alguns minutos com o código fonte responderam conclusivamente.
  2. Torne-o executável. Isso envolve a documentação das versões das bibliotecas dependentes e geralmente exige que você escreva um código portátil. Verifique se ele se baseia em pelo menos uma máquina que não seja a sua (é fácil ter dependências ocultas se você nunca a criou em um ambiente limpo).
  3. Especifique a versão do código que foi usado. Se não for uma versão formalmente liberada (e às vezes até mesmo), documente o SHA1 da versão. (Isso naturalmente se aplica a DSCMs como Git e Mercurial, mas pode ser usado em qualquer lugar.) Essa é uma maneira muito confiável de garantir que alguém realmente tenha a mesma versão do código.
  4. Inclua parâmetros de configuração e host, incluindo fornecedor do compilador, versões e sinalizadores de otimização, bibliotecas do sistema como libc, tipo de CPU e tipo e topologia de memória (especialmente para estudos de desempenho).

Parâmetros de tempo de execução / arquivos de entrada

Inclua a especificação de entrada completa. Se foi gerado por um script, inclua esse script. Se houver dados enormes, documente como obter e processar os dados. Se o seu algoritmo tiver aleatoriedade, especifique o gerador de número aleatório e a semente que foi usada.

Scripts para gerar figuras e tabelas

É muito útil incluir esses scripts, tanto para esclarecer qualquer dúvida sobre o que as figuras realmente mostram quanto para permitir que o leitor experimente como as coisas mudam se eles mudarem os parâmetros ou modificarem o algoritmo.


Quão importante seria incluir testes de unidade? Quão bem eu devo documentar o código que incluo para reprodutibilidade?
amigos estão dizendo sobre geoff

Se você deseja apenas a reprodutibilidade dos resultados, testes de unidade e páginas de manual / manuais do usuário não são necessários. Se você está tentando atrair futuros co-autores ou usuários de seu software (citações ...), vale a pena escrever o software para reutilização e documentá-lo completamente. Note-se que, independentemente de seu software é destinado para outros usarem, testes e documentação pode muito bem salvar você tempo, a longo prazo, só porque ele permite que você se mover e experimentar com mais confiança.
perfil completo de Jed Brown

6

A maioria dos periódicos não está configurada para isso de maneira formal, mas recentemente fundamos o Archive of Numerical Software, que se destina especificamente a ter o código-fonte e tudo o mais necessário fazer parte do artigo. Confira: http://journals.tdl.org/ans Submissões são bem-vindas!


2
Supondo que você use o projeto de software para animais de estimação de algum membro do conselho editorial . Não posso deixar de sentir que esse requisito degrada a integridade do diário.
Jack Poulson

1
@JackPoulson: Este é um ponto que discutimos longamente entre os editores e que discutimos ainda mais com outros membros da comunidade. Acho que todos entendemos o seu ponto de vista, mas, ao mesmo tempo, sentimos que não podemos fazer de outra maneira por dois motivos: (i) Não sabemos onde encontrar revisores para o projeto aleatório X. (ii) Existe um certo consenso na comunidade de quais projetos são de alta qualidade e quais não são; não queríamos que a ANS se tornasse uma saída para todos os projetos que pretendem. Como declaramos na página da web, gostaríamos de incluir todos os pacotes de alta qualidade eventualmente.
precisa saber é o seguinte

2
Por que razão um revisor precisa estar familiarizado com o "projeto aleatório X" em vez do "campo aleatório X"? Trago isso à tona porque acho que o periódico está perdendo uma classe significativa de papéis, pois há sérias limitações sobre o que é possível implementar com a lista de pacotes fornecida. Por exemplo, não pode haver contribuições fundamentais para a computação paralela, pois qualquer coisa que envolva uma ligação para o MPI ou, pro céu, BLAS ou LAPACK, parece violar os padrões da revista. Eu ficaria feliz em falar sobre isso ainda mais offline.
21412 Jack Poulson

@JackPoulson: Até onde eu sei, se você quiser dar uma contribuição fundamental à computação paralela, além de escrever um artigo em outro periódico, também pode escrever um artigo "Introdução à Biblioteca" no ANS para garantir que sua biblioteca seja adicionado à lista aprovada de bibliotecas.
precisa saber é o seguinte

1
@GeoffOxberry: Wolfgang e eu tivemos uma conversa amigável, e a conclusão comum foi que a lista de bibliotecas de álgebra linear deveria ser bastante expandida, mas que o objetivo da revista é bibliotecas de "alta qualidade", em vez de simplesmente reprodutibilidade, e portanto, deve haver algum processo de verificação.
Jack Poulson

3

Em

Stodden, V. 2009. “O Marco Legal da Pesquisa Científica Reproduzível.” CiSE .

Victoria Stodden recomenda a publicação do "compêndio de pesquisa" completo e lista os seguintes componentes na p. 38:

  1. O trabalho de pesquisa
  2. Os dados - incluindo documentação e código para processar os dados
  3. O experimento - todo o código fonte; documentação, parâmetros, configurações e dependências do sistema operacional
  4. Os resultados do experimento - figuras, dados, arquivos de ilustração; e documentação e explicação do processamento dos resultados experimentais
  5. Qualquer material auxiliar

2

Pelo menos, o código-fonte e os dados que você usou para realizar suas experiências devem estar acessíveis em algum lugar. Adicione instruções para criar seu código, se necessário. Realmente, existem tão poucos periódicos de acesso aberto que não existe uma regra aberta e estabelecida.


2

Eu trabalho para a Elsevier. Minha empresa começou a usar a estrutura Collage (desenvolvida em resposta ao Executable Paper Grand Challenge) em edições de periódicos para permitir que os autores incluíssem todos os dados e códigos necessários para reproduzir os resultados e figuras em seus artigos. Esse recurso facilita a reprodução dos resultados relatados no artigo e a reutilização do material publicado para sua própria pesquisa. O Collage suporta uma ampla variedade de software proprietário e de código aberto; mais informações podem ser encontradas no vídeo informativo aqui e no site do ambiente de criação de colagens .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.