Pular para o conteúdo principal

Projetos de estágio

· Leitura de 5 minutos
Davi Marcon

Introdução

Equanto acadêmico de Biotecnologia na Universidade Federal do Pará (UFPa) (ResearchGate, Lattes CV , Orcid) realizei estágio voluntário na empresa Biosharp OÜ no primeiro semestre de 2021, o qual irei relatar resumidamente as principais atividades desenvolvidas neste período. Dentre estas, a principal foi adaptar o software Bactopia para a DSL-2 do Nextflow, além de trabalhar na manutenção de outros pipelines da BioSharp OÜ.

Contexto de Estágio

Logo após iniciar meu estágio na Biosharp, fui abientado ao fluxo de trabalho da empresa, utilizando workflows de desenvolvimento baseados em git-braches, fui familiarizado com as ferramentas utilizadas como conda, Docker, Nextflow e a as plataformas de execução de pipelines em nuvem( Gooogle Life Sciences e AWS) através da plataforma Nextflow Tower. Após essa introdção a metodologia de trabalho da empresa, fui apresentado ao software Bactopia.

O Bactopia é baseado na linguagem Nextflow, e tem como objetivo o processamento automatizado de genomas bacterianos (reads em formato fastq a partir da técnica de Whole Genome Sequencing - WGS), realizando diversos tipos de análises: controle de qualidade das reads, montagem contra o genoma de referência (mapping), montagem de novo, chamada de variantes (SNPs e INDELS), investigação de mutações associadas à resistência aos antimicrobianos, anotação funcional do genoma e análise filogenética.

Apesar de todas as funcionalidades, o Bactopia estava ainda na versão 1.6.4 e atualização para a DSL-2 era uma das metas para o desenvolvimento da versão 2.0.0. A atualização para DSL-2 permitiria ao Bactopia a flexibilização do workflow, com o uso de módulos flexíveis e facilmente modificados no lugar de processos estáticos. O uso desses moodulos permitira que a criação de sub-workflows e o a adição de módulos fosse possível sem interromper o workflow principal, além de tornar o código mais acessível para contribuições. A partir desta problemática, sob orientação de Abhinav Sharma, iniciei a trajetória de aplicação da DSL2 ao Bactopia.

Desenvolvimento

Inicialmente Bactopia continha todos os processos em seu script principal main.nf, com o uso da DSL2 o número de linhas pode ser reduzido pois permite a modularização dos processos (pelo modulos), com o uso da funcionalidade de importar modulos.

Modularização

Com o objetivo de reduzir o conteúdo do script principal e permitir a modificação de modulos sem interromper o fluxo de trabalho no script principal, separando a criação do workflow em hierarquia de workflow -> sub-workflow -> module eu dividi os modulos em pastas e sub-pastas com o seguinte template:

modules/
├── Quality Control
│   └── Fastqc
│   ├── process.nf
│   ├── bin
│   ├── nextflow.config
│   ├── README.md
│   ├── templates
│   ├── test_data
│   ├── test_params.yaml

Nessa nova estrutura tornamos cada processo independente, com a possibilidade de executá-los individualmente com testes e parâmetros próprios, e também com o uso de stubs para o teste rápido com arquivos sem conteúdo (mock data). Bioinformatics-lab/bactopia#4

Esses procedimentos (combinação de DSL-2 e stubs) permitem o desenvolvimento independente de módulos e o trabalho individualizado para cada processo, assim, o script main.nf pode ficar intacto enquanto novos módulos e novas configurações são adicionados.

Aproveitando-se desse sistema de testagem individual com nextflow, Robert Petit ( O desenvolvedor da ferramenta) implementou um sistema de testagem para cada módulo com a biblioteca pytest da linguagem python.

Além da modularização, cada processo precisou ter suas intruções de entrada e saída adaptados para o novo formato de uso de Channels do Nextflow, portanto a atualização para esse formato só foi possível graças a testagem individualizada para cada módulo.

O trabalho pode ser acompanhado na Pull request#3 feita no galho de desenvolvimento da Biosharp OÜ.

Repercussão do desenvolvimento

O objetivo do desenvolvimento de uma versão DLS2 para o bactopia era me ambientar ao uso de Nextflow para criação de pipelines. Mas durante o processo de modularização e atualização para a DSL mais recente, o desenvolvedor principal da ferramenta notou o trabalho e nos contactou via Github com o desejo de utilizar as mudanças na versão 2.0.

Após o contato de Robert, Abhinav me orientou e auxiliou com o procedimento de git rebase para adequação do trabalho e após os ajustes de Robert o desenvolvimento pode finalmente ser combinado para o branch principal de bactopia, e posteriormente para o desenolvimento da versão 2.0. O histórico dessas modificações pode ser observado no pull request a seguir: Bactopia#228

Outras atividades

Além do trabalho no software Bactopia, também participei na atualização de manutenção de código em pipelines Open Source. Esse trabalho foi incentivado como forma de introdução as colaborações abertas utilizando o GitHub, dentre os quais acompanhei análises de genoma dos organismos Legionella sp.; Mycobacterium tuberculosis (MTB) mono-resistente a droga isoniazida (INH); MTB multidrogra-ressistente (MDR) e extensivamente resistente (XDR), bem como identificação de novas espécies de Micobactérias Nao Tuberculosas (MNT). Quanto a estes pipelines, as principais modificações realizadas foram:

  • Criação de README acessível para usuários.
  • Adição de profiles pra execução em AWS, Azure e GCP e usando containers Docker ou pacotes Conda.
  • Criação de stubs para testes.
  • Criação de task files para execução.

Conclusão

Como conclusão do estágio na Biopsharp OÜ realizei contribuições para a atualização do Bactopia para a versão 2.0, o qual gerou uma produção científica no evento (Sequencing to Function: Analysis and Applications for the Future - Bactopia v2: Highly scalable, portable and customizable bacterial genome analysis ).

Além disso, adquiri diversos conhecimentos, dentre eles:

  • Programação na linguagem Nextflow.
  • Desenvolvimento de mentalidade engenheira crítica e empática.
  • Design de fluxo de pipeline científico para análise de genomas.
  • Colaboração baseada em Git e Github.
  • Computação utilizando infraestrutura em nuvem (AWS, GCP e Kubernetes).
  • Gerenciamento de projetos por JIRA e Freedcamp.

Este estágio foi de grande valor para a curriculo acâdemico, pois ampliou minhas habilidades nesta área, me apresentou novas colaborações e me motivou a obter continua atualização e novos conhecimentos em programação e Bioínformatica.