Qual é a melhor maneira de fazer pesquisa reproduzível se você precisar de bibliotecas proprietárias?

19

A pesquisa reproduzível em computação visa disponibilizar a outros pesquisadores o código necessário para gerar os resultados em um artigo computacional, para que eles possam executar esse código para reproduzir os resultados nesse artigo. Gostaria de tornar toda a minha pesquisa reproduzível, mas estou enfrentando alguns problemas: alguns trabalhos em que estou trabalhando usam um pacote de diferenciação automática interno (chamado DAEPACK ) em uma biblioteca proprietária ( CHEMKIN- II ; termos de licença pouco claros).

Seria muito demorado substituir esses componentes de software por versões de código aberto. Existe uma substituição de código-fonte aberto para o CHEMKIN-II chamada Cantera , mas o Cantera está em C ++, enquanto o CHEMKIN-II está no Fortran 77. Seria necessário muito esforço para modificar o código do Cantera o suficiente para que pudesse ser processado automaticamente. ferramentas de diferenciação para C ++.

Dado que preciso desses pacotes proprietários, qual é a melhor maneira de tornar minha pesquisa o mais reproduzível possível, assumindo que os pesquisadores possam não ter acesso ao CHEMKIN-II? Como o DAEPACK é um tradutor de fonte a fonte, não preciso necessariamente distribuir o DAEPACK; Talvez eu consiga incluir sua saída, que seria arquivos de origem Fortran que calculam derivadas.

De maneira mais geral, se você precisar de software proprietário em seu trabalho e esse software proprietário não estiver amplamente disponível (por exemplo, MATLAB, Mathematica etc.), como você torna seu trabalho reproduzível?

Geoff Oxberry
fonte
O DAEPACK modifica o código fonte do CHEMKIN-II ou apenas usa o CHEMKIN-II internamente?
Dan
O DAEPACK analisa o código-fonte CHEMKIN-II e gera arquivos de origem Fortran que contêm sub-rotinas que calculam matrizes jacobianas, padrões de escarsidade e extensões de intervalo. Não modifica o código fonte; é como um compilador nesse sentido.
perfil completo de Geoff Oxberry
Se a saída do DAEPACK é uma fonte CHEMKIN-II modificada, por que você pode distribuí-la?
Dan
É um trabalho derivado, mas não está claro para mim se a fonte é modificada. Os nomes das variáveis ​​são copiados, mas por esse argumento, muitos dos programas que escrevi são "fonte CHEMKIN-II modificada". Eu teria que verificar esse ponto.
Geoff Oxberry
A licença CHEMKIN-II permite distribuir fontes não modificadas livremente e restringe a distribuição das alterações? Não consigo encontrar uma cópia da sua licença online.
Dan

Respostas:

13

Não creio que a definição de "pesquisa reproduzível" exija que o autor forneça gratuitamente todas as ferramentas necessárias para reproduzir os resultados obtidos. Se parte é proprietária, cabe ao usuário futuro, não ao autor, tomar as providências para adquirir o software necessário. (Você não esperaria ter que criar o software para outra pessoa reproduzir seus resultados, certo?) Você teria a responsabilidade, é claro, de especificar exatamente qual versão do software proprietário você usou, mas não é razoável esperar você deve tornar um código de pesquisa compatível com o software de código aberto apenas porque é de código aberto.

[Além disso, além de falar sobre a reprodutibilidade de um software quando parte dele é proprietário, acho que uma questão mais fundamental precisa ser abordada primeiro: o software fornece resultados reproduzíveis em diferentes instalações (por exemplo, para diferentes arquiteturas e Por exemplo, erros de arredondamento e diferenças nas alocações como resultado de diferentes números de processadores significa que muitos cálculos de simulação molecular fornecerão resultados diferentes apenas alterando o número de processadores incluídos na alocação (as médias estatísticas devem atingir o mesmo lugar, mas as trajetórias podem e provavelmente acabarão muito diferentes.)]

aeismail
fonte
2
Eu certamente concordo que a pesquisa reproduzível não obriga o autor a fornecer todo o software necessário gratuitamente. No entanto, o software que não está disponível publicamente representa um problema. Um dos objetivos do movimento de pesquisa reproduzível é ajudar a conscientizar esse problema na comunidade, incentivando as pessoas a tornar público o código de pesquisa, mesmo que não planejem fornecer qualquer suporte a ele, apenas por uma questão de reprodutibilidade.
khinsen
2
O código vendido comercialmente ainda está disponível. Se não é mais possível obter uma licença, é claro que isso é outra questão. Mas o autor original de um código não deve reescrever um código para acomodar outra biblioteca apenas para fins de reprodutibilidade. (Há um argumento a ser feito para a viabilidade código maior e uso, mas o argumento reprodutibilidade não é prima facie necessário - embora se possa argumentar como suficiente.)
aeismail
4

Eu nunca soube que "pesquisa reproduzível" significa que seus colegas leitores e cientistas deveriam apenas clicar em "Executar" (ou compilar ou o que você tem) para reproduzir inteiramente seus resultados. Se nada mais, isso mataria a pesquisa de qualquer pessoa que use um pacote de análise estatística proprietário ou tornaria as coisas "improdutíveis" se elas fossem feitas para uma plataforma ou linguagem que ficou fora de moda. Ou, nesse caso, alguém quer reproduzir seu código, mas não entende / usa o idioma que você usa.

CrossValidated teve uma discussão semelhante sobre o tópico - "reproduzível" significa que você pode replicar minha análise nos meus dados ou que o experimento em si pode ser executado novamente do zero e fornecer resultados confirmatórios. O link está aqui: /stats/14999/how-are-we-defining-reproducible-research

Acho que o elemento mais importante é descrever o que você fez no nível em que poderia ser recodificado por alguém que estivesse suficientemente interessado e, se ferramentas comerciais fossem usadas, essas ferramentas serão mencionadas. Porque isso serve aos interesses de replicar o experimento e verificar novamente se há erros de código.

Fomite
fonte
2

No seu caso, onde você pode nem ter o direito de distribuir qualquer código usado, uma descrição muito detalhada do algoritmo pode ser o melhor que você pode fazer. Dependendo da complexidade do seu código, alguém poderá reproduzir o que for do seu interesse a partir de quaisquer ferramentas disponíveis.

Caso contrário, pergunte e veja quanto do seu trabalho você pode liberar e, em seguida, libere-o.

Dan
fonte
Muito disso vem dessa conversa de bate-papo.
Dan
1

A melhor maneira de fazer pesquisas reproduzíveis é não depender de nada de vida curta, como códigos específicos em plataformas específicas. Ontem estávamos computando em cartões perfurados, hoje em elétrons em silício, amanhã pode ser em lasers com proteínas ou mesmo células vivas, depois de amanhã em pontos quânticos, e quem sabe o que será na próxima semana.

A pesquisa reproduzível deve esclarecer seus conceitos e idéias e não promover as ferramentas atualmente disponíveis, como hardware ou software, como pré-requisito para reproduzir os resultados da pesquisa. Os algoritmos utilizados devem ser detalhados de uma forma universal clara; A versão atual de um hardware, compilador ou pacote de software específico pode ser usada apenas como uma ferramenta para demonstrar os resultados da pesquisa.

Dominik Lark
fonte
Penso que precisamos de ambos - os conceitos e ideias para a compreensão humana e a interpretabilidade a longo prazo, e o código para a verificação a curto prazo.
khinsen
1

A publicação do código Fortran gerado parece uma solução muito boa no seu caso.

Como regra geral, acho que o uso de software não publicado é incompatível com os objetivos da pesquisa reproduzível. Essa é uma das razões pelas quais vejo a pesquisa reproduzível como uma meta de longo prazo, e não como algo que se poderia exigir para ser aplicado imediatamente.

Khinsen
fonte
1

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 publiquem pedaços de código executável 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, além de software 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 .

Hylke Koers
fonte