Neste diário, existem 3 possibilidades distintas de reprodução dos experimentos.
Também consta dificuldades encontradas, recomendações e passos que podem ser úteis para um projeto de reprodutibilidade similar a este.
No início comecei instalando cada ferramenta individualmente (git, python, jupyter) mas depois cheguei a conclusão que é perda de tempo. Salvo casos mais específicos, eu indico a instalação direta do Anaconda, que contém todas as ferramentas necessárias neste projeto, inclusive a biblioteca scikit-learn.
Encontrei vários erros de compatibilidade e perdi muito tempo tentando reproduzir o experimento via Docker no Windows. Sendo assim, a maneira mais eficaz foi criar uma Virtual Machine com SO Ubuntu, mas criada contemplando os exatos procedimentos de instalação da sessão “1.) Reprodução no Ubuntu/Windows via Anaconda”. Contudo, antes de começar os testes, verifique se os arquivos locais da VM estão atualizados com o repositório git.
Assim, basta ter o VirtualBox 5.0 ou superior instalado no Windows, ou até mesmo em uma outra máquina Linux, e importar o arquivo “VM-Ubutu14.04_escience.ova” para então rodar e reproduzir o experimento, bastando apenas seguir a partir do passo 4 da sessão 1.
Para não iniciar instalação do ambiente reprodutível do zero, tendo que criar uma imagem e instalar cada ferramenta individualmente, aconselho a instalação do docker cliente e em seguida fazer o pull da imagem dataquestio/python2-starter, pois ela já contempla todo o ambiente integrado do anaconda.
Sendo assim, baixei a imagem dataquestio/python2-starter, iniciei o notebook e montei a estrutura do github. O projeto funcionou perfeitamente. Então, fiz o commit com um novo nome e push para minha conta no Docker Hub.
O teste da reprodutibilidade foi instalar somente o docker em uma máquina ubuntu que não tivesse nenhuma outra ferramenta e-science. Assim, baixei a imagem do Docker Hub e inicializei o notebook. Mas para minha surpresa, ele não continha nenhum dos dados que eu havia acrescentado. Acredito que meu erro foi não ter entendido que ele salva na imagem as instalações e configurações, mas não tais tipos de dados.
Conclui então que como a diferença da imagem original para a que eu havia alterado era apenas os dados (.ipynb, py files), resolvi não mais criar imagem nova e armazená-la no Docker Hub, mas simplesmente utilizar a imagem já existente juntamente com os dados do meu projeto clonados do GitHub.
No início tive algumas dificuldades para trabalhar com a parte textual do notebook. Depois descobri que é na verdade simples, bastando apenas utilizar a célula como tipo markdown para inserir textos.
Perdi certo tempo também insistindo em configurar um diretório padrão para inicializar o notebook via parte gráfica, ao clicar no ícone de inicialização. Apareciam pasta e arquivos indesejados e tentei sem sucesso fixar um diretório de abertura padrão. Depois descobri que é muito mais simples inicializar o notebook por linha de comando partindo da pasta desejada. Assim, se quero que somente as pastas do meu projeto clonado do gitHub apareçam na raiz do notebook no browser, basta entrar na pasta desejada e chamar o notebook. Ex: cd C:\Users\DELL\Projetos\enron-paper C:\Users\DELL\Projetos\enron-paper> jupyter notebook
Acredito que as opções 1 e 2 de reprodutibilidade aqui apresentadas são as mais convenientes para um projeto similar a este. Tanto para quem escreve o projeto, quanto quem somente reproduz. Talvez pela pouca experiência com o docker ou pela complexidade acrescentada, achei a opção 3 menos favorável.
Recomendo o uso do Anaconda, por disponibilizar o python, Jupyter Notebook, git, Spider e outros, tudo através de uma instalação simples e com ferramentas poderosas.
O Jupyter Notebook atendeu muito bem as expectativas.
????