Tutorial do ActivePapers
Edição Python Edição JVM Edição Pharo Blog … biblioteca —> Tutorial do ActivePapers Este tutorial breve demonstra como inspecionar o conteúdo de um ActivePaper extrair código e documentação (incluindo gráficos) modificar parâmetros do cálculo modificar o código reexecutar os cálculos criar um ActivePaper do zero O arquivo de exemplo para este tutorial pode ser baixado do Figshare. Também é recomendável consultar a descrição no site do Figshare.
Você não precisa entender o que ele faz ou por quê, mas, se tiver interesse, fique à vontade para ler o artigo que descreve o trabalho, o qual trata do cálculo dos tensores de difusão translacional e rotacional de uma proteína em solução a partir de uma trajetória de Dinâmica Molecular. Copie o arquivo ActivePaper baixado para um diretório vazio. Abra uma janela de terminal e navegue até esse diretório. Ao digitar ls -l, você deverá ver algo como: -rw-r--r-- 1 hinsen staff 148133188 Sep 26 16:21 lysozyme_diffusion.ap ## Inspecionando o conteúdo O comando aptool ls produz uma longa lista de conjuntos de dados, começando com: code/correlation_functions code/diffusion_tensor code/identify_trajectories code/plots code/python-packages/fitting code/python-packages/molecular_structure code/python-packages/mosaic code/python-packages/quaternion code/python-packages/time_series code/python-packages/units code/thermal_averages code/trajectory_processing data/coordinate_trajectories/rotation_laboratory_frame_1 data/coordinate_trajectories/rotation_laboratory_frame_10 data/coordinate_trajectories/rotation_laboratory_frame_2 Mas como o aptool sabe qual arquivo ActivePaper você deseja examinar?
Bem, se houver apenas um arquivo com a extensão .ap no diretório atual, será esse que ele utilizará. É por isso que é recomendável usar um diretório separado para cada projeto ActivePaper. Se, por algum motivo, você não quiser fazer isso, poderá passar o nome do arquivo ActivePaper explicitamente: aptool ls -p lysozyme_diffusion.ap Você pode obter mais informações usando aptool ls -l, o que resulta em: 2013-06-07/09:13:05 calclet code/correlation_functions 2013-06-07/09:19:48 calclet code/diffusion_tensor 2013-06-07/10:02:29 calclet code/identify_trajectories 2013-06-12/08:03:48 calclet code/plots 2013-06-04/15:42:02 module code/python-packages/fitting 2013-05-02/15:11:53 module code/python-packages/molecular_structure 2013-06-14/15:46:18 reference code/python-packages/mosaic 2013-05-23/11:42:31 module code/python-packages/quaternion 2013-05-27/04:13:09 module code/python-packages/time_series 2013-05-02/15:12:07 module code/python-packages/units além de muitas outras linhas semelhantes.
A primeira coluna mostra a data e a hora da última modificação de cada conjunto de dados. A segunda coluna indica o tipo do conjunto de dados. A lista acima contém dois dos tipos destinados a código executável: calclet e module.
Existe um terceiro tipo, que não aparece nesta lista: importlet. Um module é exatamente o que um programador Python esperaria: um arquivo de código fonte Python a ser importado por outro código Python.
Os calclets e importlets são as duas variantes de scripts fornecidas pelo ActivePapers. O tipo mais comum é o calclet, que é um script Python com direitos restritos: ele não pode realizar nenhuma operação de E/S fora do arquivo ActivePaper em que está contido, o que significa que não pode acessar nem arquivos nem recursos de rede. Essas restrições garantem a reprodutibilidade (todos os dados de entrada estão garantidos dentro do ActivePaper) e protegem o usuário contra bugs e códigos maliciosos.
Relacionado: — Cursos interativos de Python e ciência de dados que você codifica diretamente no navegador.
No entanto, elas também significam que os calclets não podem ser usados para importar dados para o ActivePaper. É aí que entram os importlets: eles podem usar qualquer funcionalidade do Python e acessar qualquer recurso. Isso também significa que você não deve executar importlets de terceiros sem antes examiná-los.
A página [[Calclets]] explica como escrever calclets e importlets. Há mais um tipo de conjunto de dados na lista acima: o reference, que serve para referenciar conjuntos de dados em outros arquivos ActivePaper. Uma referência consiste em duas partes: uma referência ao arquivo e o nome do conjunto de dados dentro desse arquivo. A referência ao arquivo pode ser um DOI, para um arquivo publicado, ou um nome de arquivo local.
Obviamente, nomes de arquivos locais não fazem sentido no computador de outra pessoa; portanto, as referências locais são um pouco como os importlets: elas documentam a origem dos dados, mas não os disponibilizam. Vamos examinar as referências em nosso ActivePaper: aptool refs Encontramos um DOI e dez referências locais: doi:10.6084/m9.figshare.705829 local:lysozyme_spce_rbt_1 local:lysozyme_spce_rbt_10 local:lysozyme_spce_rbt_2 local:lysozyme_spce_rbt_3 local:lysozyme_spce_rbt_4 local:lysozyme_spce_rbt_5 local:lysozyme_spce_rbt_6 local:lysozyme_spce_rbt_7 local:lysozyme_spce_rbt_8 local:lysozyme_spce_rbt_9 O DOI refere-se à biblioteca pyMosaic, versão 0.1.1, conforme depositada no Figshare.
Vale a pena dar uma olhada: — Uma assinatura para certificados Python e de ciência de dados apoiados por universidades.
Os arquivos locais são as trajetórias de simulação analisadas no ActivePaper. Vamos obter mais informações sobre essas referências: aptool refs -v doi:10.6084/m9.figshare.705829 links: code/python-packages/mosaic local:lysozyme_spce_rbt_1 copies: data/center_of_mass data/orientation data/reference_structure data/time e assim por diante para os outros nove arquivos de entrada. Isso mostra que o DOI é usado em um link para o conjunto de dados de destino do arquivo (code/python-packages/mosaic), enquanto os arquivos locais foram usados como fonte para dados copiados para o próprio ActivePaper.
Assim, uma referência de cópia serve apenas para documentação; não há necessidade de ter uma cópia do arquivo referenciado. Voltando aos tipos de conjuntos de dados.
Existem mais alguns que não apareceram nas primeiras linhas de aptool ls -l; vamos observar algumas das linhas restantes: 2013-07-03/12:24:26 text documentation/README 2013-06-14/15:55:08 file documentation/c_rr_diagonals.pdf 2013-06-14/15:55:00 data data/correlation_function_integration_limit 2013-06-14/15:46:47 dummy data/coordinate_trajectories/rotation_laboratory_frame_1 Provavelmente você consegue adivinhar o que significa text. E file é exatamente o que um arquivo é no mundo Unix: uma sequência de bytes, sem nenhuma interpretação particular associada a eles.
Mais adiante, veremos como tal arquivo pode ser extraído. O significado de data talvez seja menos óbvio, especialmente como ele difere de um file. A resposta é que data é um conjunto de dados HDF5 arbitrário, caracterizado por um espaço de dados e um tipo de dados.
Pense nisso como um array, se preferir; na verdade, é bastante semelhante. Resta o dummy, que é um conjunto de dados inexistente. Mais precisamente, um conjunto de dados que deixou de existir. É um conjunto de dados que foi gerado por um calclet e depois removido explicitamente (usando aptool dummy ...) para reduzir o tamanho do arquivo. Se você quiser inspecioná-lo ou executar qualquer um dos calclets que o leem, precisará primeiro regenerá-lo reexecutando o calclet.
Então, vamos fazer isso: aptool update -v Isso atualiza tudo no ActivePaper que precisa ser atualizado: conjuntos de dados dummy, mas também conjuntos de dados desatualizados, ou seja, conjuntos de dados mais antigos que a versão atual do calclet que os produziu. A opção -v torna a execução detalhada, informando quais calclets são executados e por quê. Prepare-se para esperar um pouco; na minha máquina, a operação leva cerca de oito minutos.
Podemos ver que o tamanho do arquivo aumentou significativamente: ls -l -rw-r--r-- 1 hinsen staff 540352636 Oct 23 14:54 lysozyme_diffusion.ap Além disso, os conjuntos de dados anteriormente dummy agora são reais: aptool ls -l data/coordinate_trajectories/rotation_laboratory_frame_1 2013-10-23/14:45:29 data data/coordinate_trajectories/rotation_laboratory_frame_1 ## Extraindo os gráficos Se você observar a saída completa de aptool ls -l, notará alguns arquivos PDF sob documentation.
Para visualizá-los, extraia-os para arquivos reais: aptool checkout documentation Isso também trará o README, pois extrai tudo no grupo HDF5 documentation para um diretório local chamado, como você deve ter adivinhado, documentation. O grupo documentation em um ActivePaper destina-se a dados voltados para humanos; em geral, não é usado como entrada para cálculos.
Note que você pode, claro, fazer o checkout de arquivos individuais, por exemplo: aptool checkout documentation/README.txt O comando checkout extrai apenas os conjuntos de dados mais recentes que o arquivo correspondente no disco, caso este já exista. Assim, você pode editar arquivos extraídos sem que sejam sobrescritos. Veremos isso em ação imediatamente ao trabalhar com o código. ## Extraindo e modificando o código Em seguida, vamos examinar todo o código
Crie um portfólio de dados, projeto por projeto
Caminhos de ciência de dados baseados em projetos com um terminal guiado e conjuntos de dados reais