Seis dicas para tornar público o software do seu laboratório

Seis dicas para tornar público o software do seu laboratório

Quando os neurologistas computacionais Carsen Stringer e Marius Pachitariu construíram o Cellpose, um software que identifica e delineia células automaticamente em imagens de microscopia, seu objetivo era divulgá-lo publicamente para qualquer pessoa usar. Eles fizeram isso em 2020 (ver go.nature.com/3bbeey3). Mas isso não significa que foi uma navegação tranquila.

As pessoas muitas vezes subestimam o quão difícil é divulgar publicamente uma ferramenta, diz Stringer, que, com Pachitariu, trabalha no Janelia Research Campus do Howard Hughes Medical Institute em Ashburn, Virgínia. Há uma grande diferença entre um programa que funciona tecnicamente e outro que é robusto, bem documentado e com uma interface de usuário refinada. A experiência de Stringer e Pachitariu na construção de duas ferramentas anteriores de neurociência, Suite2p e Kilosort, significava que eles sabiam no que estavam se metendo. Mas o Cellpose era mais popular do que eles esperavam e foram pegos de surpresa pelo volume de consultas dos usuários, diz ela.

Do ponto de vista do engajamento, esse é um bom problema para se ter. Ainda dessa maneira, os pesquisadores podem facilitar suas vidas. Natureza conversou com Stringer e outros desenvolvedores de software científico para aprender dicas para lançar sem problemas uma ferramenta de laboratório para uso público. Aqui está o que eles disseram.

Antecipe o tempo de manutenção

O software não é estático; ele precisa ser mantido. Isso significa resolver bugs e solicitações de recursos extras, trabalhar com colaboradores e responder perguntas dos usuários. É muito trabalhoso, mas é dessa maneira que as ferramentas melhoram, diz a cientista da computação Anna Kreshuk, do Laboratório Europeu de Biologia Molecular em Heidelberg, Alemanha.

Kreshuk trabalha desde 2012 em elásticoum programa que analisa imagens de microscopia usando aprendizado de máquina interativo. (O projeto foi iniciado por outro pesquisador um ano antes, diz ela.) A diferença entre uma ferramenta que é útil principalmente para você e uma ferramenta pública, diz ela, é a manutenção: “apenas repetir o feedback das pessoas que tentam usá-lo e então descobrir que é realmente muito inconveniente, e então consertar isso e então iterar novamente”.

Stringer estima que são necessárias entre 5 e 15 horas por semana para manter a maioria das ferramentas de software – menos se você estiver focado na manutenção, mais se estiver tentando melhorar o programa – e Cellpose, que requer cerca de 10 horas por semana de um programa. O tempo do estudante de doutorado fica nessa faixa, diz ela. (O aluno é pago como consultor.) O bioinformático Titus Brown, da Universidade da Califórnia, Davis, dedica 20–30% de seu tempo à manutenção do Sourmash (NT Pierce e outros. F1000 Res. 81006; 2019), uma ferramenta para comparação de genoma e análise metagenômica. Por outro lado, Ilastik tem um desenvolvedor dedicado em tempo integral, diz Kreshuk.

Na verdade, o software científico é muitas vezes desenvolvido por estudantes de doutoramento ou pós-doutorados para resolver um problema premente, mas se planeia tornar uma ferramenta pública, talvez seja primordial pensar maior. “Se você quiser continuar no jogo seriamente”, diz Kreshuk, “é bom pensar em quando você vai contratar o primeiro desenvolvedor de software profissional para trabalhar nisso e como vai pagar por isso, porque eles não trabalhe por salários acadêmicos.”

Simplifique a instalação

Um bom software deve ser fácil de usar e nada prejudica mais a experiência dos usuários em potencial do que um processo de instalação difícil. “Os problemas de instalação são o principal motivo pelo qual as pessoas serão dissuadidas”, diz Stringer. Brown concorda com esse sentimento: “Se estou interessado na sua ferramenta e demoro mais de um minuto para instalar, não estou mais interessado na sua ferramenta”.

Em vez de simplesmente postar código no serviço online de compartilhamento de código GitHub, crie pacotes binários prontos para instalação para diferentes sistemas operacionais. Trabalhar com repositórios de pacotes existentes, como PyPI para programas escritos na linguagem de programação Python ou Bioconductor para código escrito em R, pode fornecer controle de qualidade e um local central para download.

Minimizar dependências ou outras ferramentas de software que os usuários precisam ter instaladas para que sua ferramenta funcione assim como pode simplificar a instalação. Cellpose tem 11 dependências, incluindo a biblioteca de aprendizado de máquina PyTorch e a ferramenta de análise numérica NumPy, mas instala automaticamente aquelas que estão faltando. Ter menos dependências assim como reduz seu trabalho futuro, porque pode ser primordial atualizar seu programa à medida que as dependências mudam. “A parte mais difícil de lançar software é garantir que as dependências estejam atualizadas”, diz Stringer.

Alternativamente, permita que os usuários experimentem o software sem instalação. Os pesquisadores podem executar o Cellpose no site da ferramenta para ver se ela funciona com seus dados antes de decidirem instalá-la. Eles assim como podem executá-lo no sistema de notebook computacional baseado em nuvem do Google, Colab, que permite acesso a unidades remotas de processamento gráfico que os usuários podem não ter localmente, diz Stringer.

Considere sua interface

O software pode ter uma interface pouco intuitiva e confusa – e tudo bem, se você for o único que o usa. Caso contrário, talvez seja primordial investir um pouco de energia na “experiência do usuário”.

É preciso muito trabalho para projetar uma interface gráfica de usuário, diz Stringer, mas ter uma torna muito mais fácil para as pessoas começarem. Uma interface de linha de comando dá menos trabalho, mas requer um usuário mais experiente em tecnologia.

Cellpose possui uma interface gráfica de usuário e uma de linha de comando – a primeira permite aos usuários interagir diretamente com suas imagens, a última permite a automação. “A visualização de dados é muito elogiável para ver se há um bug ou uma tendência na saída do software”, explica Stringer. “Ter tudo abstrato e sem visualização pode tornar muito difícil ver se você tem problemas de qualidade de dados.”

Documento

Software comercial costumava vir com manuais impressos. Esses dias já se foram, mas a documentação continua sendo uma obrigação para software utilizável — mesmo que não seja divertido escrevê-la. “Tenho uma relação de amor/ódio com a documentação”, admite Brown. “É uma luta constante” documentar adequadamente o software. Mas é essencial.

No nível mais básico, os desenvolvedores devem indicar os requisitos computacionais da sua ferramenta (como memória e dependências), sua licença e até que ponto ela está sendo suportada, diz Brown. Os programas de código aberto assim como podem incluir se os desenvolvedores estão interessados ​​em contribuições ou não.

Para escrever documentação, Brown e Stringer usam Sphinx e Read the Docs. Essas ferramentas reúnem as 'docstrings' do software – pedaços de código que funcionam como comentários para documentar o restante do código – e “convertem-nos em um formato legível”, diz Stringer.

Existem outras maneiras de ensinar os usuários sobre sua ferramenta assim como. Brown aconselha escrever um guia de início rápido, que é uma versão condensada de um manual apenas com o essencial. Ou você pode criar um tutorial em vídeo, como Stringer fez para Cellpose. “Eu não sabia como os tutoriais em vídeo podem ser úteis”, diz ela sobre sua apresentação de 45 minutos, que acumulou mais de 27 mil visualizações. Segundo Stringer, seu vídeo segue a fórmula que ela usa para palestras presenciais: “Apresente algumas informações básicas sobre como a ferramenta funciona, um caso de uso e depois mostre como funciona na prática”.

Utilize o GitHub

O controle de versão é crucial no progresso de software porque rastreia como e quando o código foi alterado (e por que e por quem), mantém uma versão atual clara do software e permite que os desenvolvedores revertam facilmente alterações indesejadas se, por exemplo, um colaborador alterar o código de uma forma que quebra a ferramenta.

Um dos sistemas de controle de versão mais populares é o Git. Git é uma ferramenta de linha de comando integrada na maioria dos ambientes de progresso modernos e muitos desenvolvedores a utilizam em conjunto com o GitHub. Mas o GitHub é mais do que apenas um repositório: ele assim como permite que os usuários enviem alterações e problemas de código, o que “torna mais fácil ver como as pessoas estão enfrentando dificuldades com o software e o que você precisa melhorar”, diz Stringer. Ele assim como conecta os desenvolvedores entre si.

Para quem está pensando em transições de carreira, há outro benefício: o GitHub fornece um registro do seu trabalho. Os empregadores frequentemente examinam seu histórico do GitHub ao considerar candidatos a empregos, diz Stringer.

Automatize seus testes

Depois que seu software funcionar, você deseja ter certeza de que está funcionando corretamente. Esse é o trabalho dos testes de software – uma tarefa que muitas vezes é automatizada por meio de serviços de “integração contínua”. A cada mudança de código, esses serviços, que incluem Travis CI e GitHub Actions, executam uma série de testes definidos pelo usuário e sinalizam quando eles falham.

Cellpose inicialmente usava Travis CI, mas agora usa GitHub Actions, porque o software é gratuito para ferramentas de código aberto e integrado ao GitHub. Ele tem tudo que a equipe Cellpose precisa, diz Stringer: testes em diferentes sistemas operacionais e versões do Python, bem como verificação de problemas de instalação.

Resumindo: preparar o software para uso público dá trabalho, mas construir ferramentas públicas promove a transparência, a construção de comunidades e, em última análise, a ciência. “O presente e o futuro da compreensão biológica dependem do software”, diz Brown. “Não faremos progressos na biologia se não conseguirmos analisar os nossos dados.”

E há outras vantagens. Por dentro de do progresso do Sourmash e da adição de recursos solicitados pelos usuários, muitos dos quais usam o software de maneiras que ele nunca previu, Brown diz que ele e sua equipe expandiram suas ideias sobre os tipos de problemas científicos que podem investigar. Por exemplo, Sourmash é surpreendentemente bom na classificação taxonômica de espécies em dados de sequenciamento metagenômico de microrganismos. Quando Brown investigou, descobriu que as características dos genomas microbianos em que a ferramenta se concentra parecem estar ligadas à forma como esses genomas evoluem.

Brown diz que vale a pena continuar desenvolvendo software — e dedicando o tempo primordial para manter ferramentas públicas, “porque continuo aprendendo coisas novas que acho que não poderia ter aprendido de outra maneira”.

Fonte Desta Notícia

Compartilhar:
Go up
Sair da versão mobile