Atualizações e Melhorias do Bactopia v4
Olá pessoal! Aqui é o Robert, desenvolvedor do Bactopia! Já faz um tempinho, né? Mas finalmente chegou! Estou muito animado em anunciar o lançamento da versão 4 do Bactopia!
Você deve estar se perguntando o que há de novo no Bactopia? E a resposta é muita coisa, mas também… não muita coisa, mas no bom sentido! Como isso é possível? Bem, sobre isso…
O Bactopia agora é todo Strict, Static e Records!
Ao longo do último ano, o Nextflow (o motor no qual o Bactopia é baseado) passou por uma significativa metamorfose, com a introdução de Strict Syntax e Static Types na v25, e agora Record Types na v26. Haha, se você já olhou o código-fonte do Bactopia, rapidamente perceberia que ele era a coisa menos "strict" possível. O Bactopia tirava proveito de muitas coisas no Nextflow que não eram realmente o propósito pretendido (por exemplo, executar mais de 60 workflows a partir de um único workflow…).
Então, para responder à sua primeira pergunta: como o Bactopia mudou muito, sem mudar muito?
Bem, para implementar strict syntax, static types e record types, eu precisei essencialmente reescrever o código-fonte, quase do zero (o que, de novo, não é necessariamente uma coisa ruim!). Como você pode ver na imagem abaixo, a v4 do Bactopia alterou 2.641 arquivos, com 140 mil linhas de código adicionadas e 55 mil linhas removidas. É verdade! Confira o CHANGELOG!

Na versão 4 do Bactopia, fico feliz em informar que agora estou em conformidade com o futuro do Nextflow! O que, como efeito colateral, significa que o Bactopia agora deve funcionar muito melhor tanto localmente quanto na nuvem.
Embora Strict Syntax, Static Types e Record Types não sejam exatamente "obrigatórios", acredito que sua adoção colocou o Bactopia em um lugar muito melhor do que estava antes. Um brinde ao pessoal da Seqera (que mantém o Nextflow) por ter implementado isso!
Co-desenvolvimento com IA
[can you write a message about the usage of llms in Bactopia] Haha, brincadeira, ainda sou eu escrevendo este post! Mas, em um tom mais sério, daqui para frente o Bactopia utilizará IA nos desenvolvimentos e manutenções futuros. Sou o único desenvolvedor e mantenedor do Bactopia, então preciso equilibrar o que consigo fazer para evitar o esgotamento. No entanto, meu uso de IA não é sem muito pensamento. Não haverá agentes de IA com acesso irrestrito para fazer o que quiser com o Bactopia. Pode ter certeza, o Bactopia é algo que me importo profundamente, e planejo continuar mantendo a responsabilidade por ele.
Fiz esforços extensivos para garantir que existam diretrizes específicas que a IA deve seguir, bem como formas de eu verificar se essas diretrizes estão sendo cumpridas. Com a introdução de strict syntax, static types e record types, consegui incorporar diversos padrões que são bem adequados para LLMs e para as diretrizes que estabeleci. No final das contas, ainda estarei muito envolvido na revisão de quaisquer mudanças feitas por LLMs e no avanço do Bactopia. Só queria declarar brevemente minha posição sobre o uso de IA e LLMs para co-desenvolver o Bactopia.

Sinto que ainda é necessário um post mais detalhado para demonstrar meu processo ao usar LLMs para o Bactopia. Vou providenciar isso em breve!
O Bactopia agora é mais fácil de manter
Com isso dito, mencionei que passei muito tempo reescrevendo o Bactopia, e acabou que a reescrita não mudou muito o resultado — mas isso é uma coisa boa. Você pode estar pensando: como todo esse esforço para terminar onde começou pode ser algo bom?!? Bem, quando você tem a oportunidade de reescrever algo, você o reescreve com base na sua experiência e habilidades atuais. Não sou o mesmo bioinformata de mais de 7 anos atrás, quando Tim e eu lançamos o Bactopia pela primeira vez. Às vezes me pergunto: 'por que o Robert de 2017 fez dessa forma?' e 'por que o Robert de 2026 tem tantos cabelos brancos?!'
Mas, para mim pelo menos, essa reescrita proporcionou a oportunidade de eliminar muito débito técnico acumulado pelo Robert do passado ao longo dos anos. Consegui padronizar muitas partes do Bactopia, de forma que um módulo é um módulo é um módulo é um módulo, etc…. Também pude mover muitas das partes não-Nextflow para fora do pipeline Nextflow do Bactopia e para o bactopia-py e o nf-bactopia.
Embora o pytest ainda funcionasse, consegui fazer a transição para o nf-test para todos os arquivos Nextflow, não apenas os subworkflows. Com essa transição, no momento, o Bactopia inclui 246 testes, que testam tudo (módulos, subworkflows e workflows) usando dados reais do repositório bactopia-tests reformulado.

Também consegui fazer com que a documentação seja construída a partir de GroovyDoc inline. Além disso, migrei do MkDocs Material para o Docusaurus, e até consegui este novo endereço elegante! Pessoalmente acho que será muito mais fácil de manter, e estou muito curioso para saber suas opiniões e feedback!
Tudo isso para dizer:
Se você é um usuário do Bactopia, o que você precisa saber é: agora acho o Bactopia muito mais fácil de construir e manter. Tim e eu estamos preparando coisas interessantes para o futuro do Bactopia. Então fique de olho!
P.S. Como acontece com todos os lançamentos maiores, haverá percalços no caminho, e tenho certeza de que posso ter esquecido alguma coisa. Se você encontrar bugs ou algum recurso que eu deixei passar, é só me avisar! Você pode me encontrar no workspace do Bactopia no Slack (haha que eu na verdade criei há muito tempo!)
Para começar com a versão 4 do Bactopia, confira o guia de instalação e o tutorial.