Melhorias ao Software de Código Aberto
Manter software de código aberto é um desafio difícil que frequentemente exige tempo e esforço substanciais, geralmente sem o benefício de reconhecimento ou apoio. A área de bioinformática não é exceção, pois depende fortemente de ferramentas mantidas por indivíduos com pouco ou nenhum suporte. O Bactopia não é diferente.
Reconhecendo esses desafios, projetei o Bactopia com o objetivo explícito de retribuir à comunidade. Para cumprir esse objetivo, incorporei vários requisitos de design fundamentais:
- As ferramentas devem ser de código aberto e gratuitas para uso.
- As ferramentas devem estar disponíveis no conda.
- As Bactopia Tools devem estar disponíveis no nf-core/modules.
- 11 ferramentas independentes, cada uma disponível no Bioconda
- 30 novas receitas Conda, 46 receitas atualizadas, e mais de 2.000 pull requests do Bioconda revisados.
- 68 contribuições para nf-core/modules
- 26 contribuições para outras ferramentas
Essas contribuições são para a comunidade em geral e não exigem que você use o Bactopia para aproveitá-las.
Ferramentas Independentes
Às vezes, ferramentas são desenvolvidas para aprimorar as capacidades do Bactopia, como o Dragonflye, que foi desenvolvido para adicionar suporte ao Nanopore. Essas ferramentas são projetadas para funcionar como ferramentas independentes. Abaixo estão 11 dessas ferramentas, originalmente criadas para o Bactopia, que você também pode usar independentemente do Bactopia.
| Ferramenta | Descrição |
|---|---|
| assembly-scan | Gera estatísticas básicas para uma montagem |
| dragonflye | Monta genomas de isolados bacterianos a partir de reads Nanopore |
| fastq-dl | Baixa arquivos FASTQ dos repositórios SRA ou ENA. |
| fastq-scan | Exibe estatísticas resumidas de FASTQ no formato JSON |
| GOBLIN | Gera proteínas confiáveis para complementar a anotação bacteriana |
| pasty | Uma ferramenta para sorogrupamento in silico de isolados de Pseudomonas aeruginosa |
| pbptyper | Tipador in silico de Proteína Ligante de Penicilina para Streptococcus pneumoniae |
| pmga | Um fork do PMGA para todas as espécies de Neisseria e Haemophilus influenzae |
| shovill-se | Um fork do Shovill que inclui suporte para reads de extremidade única |
| staphopia-sccmec | Uma versão independente do método de tipagem SCCmec do Staphopia |
| vcf-annotator | Adiciona anotações biológicas a variantes em um arquivo VCF fornecido |
Contribuições ao Bioconda
O Bactopia exige que as ferramentas sejam instaláveis com Conda para simplificar o processo
de instalação para os usuários. Esse requisito levou a um envolvimento mais profundo com a
comunidade Bioconda, não planejado, mas bem-vindo. O Bioconda é mais do que conda install;
é um recurso valioso que torna as ferramentas de bioinformática mais acessíveis à comunidade.
Toda vez que uma ferramenta é adicionada ao Bioconda, um contêiner Docker é criado pelo
Biocontainers, e uma imagem Singularity é criada pelo
Galaxy Project. Em essência, uma única receita contribui
significativamente para a comunidade em geral.
O Bactopia resultou em 30 novas receitas, 46 receitas atualizadas, e mais de 2.000 pull requests foram revisados.
Novas Receitas
O Bactopia levou à adição de 30 novas receitas ao Bioconda e ao conda-forge. Essas novas receitas permitem que os usuários comecem rapidamente a usar essas ferramentas em suas próprias análises, e incluem:
| Ferramenta | Descrição | Pull Request |
|---|---|---|
| Aspera Connect | cliente de transferência de alto desempenho | anaconda/rpetit3 |
| assembly-scan | Gera estatísticas básicas para uma montagem | bioconda/bioconda-recipes#11425 |
| bactopia | Um pipeline flexível para análise completa de genomas bacterianos | bioconda/bioconda-recipes#17434 |
| Dragonflye | Monta genomas de isolados bacterianos a partir de reads Nanopore | bioconda/bioconda-recipes#29696 |
| ena-dl | Baixa arquivos FASTQ do ENA | bioconda/bioconda-recipes#17354 |
| EToKi | todos os métodos relacionados ao Enterobase | bioconda/bioconda-recipes#37069 |
| executor | wrapper Python para subprocessos, amigável ao programador | conda-forge/staged-recipes#9457 |
| fastq-dl | Baixa arquivos FASTQ dos repositórios SRA ou ENA. | bioconda/bioconda-recipes#18252 |
| fastq-scan | Exibe estatísticas resumidas de FASTQ no formato JSON | bioconda/bioconda-recipes#11415 |
| GenoTyphi | atribui genótipos a genomas de Salmonella Typhi | bioconda/bioconda-recipes#25674 |
| GOBLIN | Gera proteínas confiáveis para complementar a anotação bacteriana | bioconda/bioconda-recipes#38922 |
| illumina-cleanup | Um pipeline simples para pré-processamento de arquivos FASTQ Illumina | bioconda/bioconda-recipes#11481 |
| ISMapper | software de mapeamento de sequências de inserção | bioconda/bioconda-recipes#14180 |
| mashpit | Plataforma de vigilância baseada em sketch | bioconda/bioconda-recipes#35199 |
| NextPolish | Polimento rápido e preciso de genomas gerados por reads longas | bioconda/bioconda-recipes#36582 |
| ParallelTask | Um motor de tarefas paralelas simples e leve | conda-forge/staged-recipes#19616 |
| ParallelTask | Um motor de tarefas paralelas simples e leve | conda-forge/staged-recipes#19616 |
| pasty | Uma ferramenta para sorogrupamento in silico de isolados de Pseudomonas aeruginosa | bioconda/bioconda-recipes#35930 |
| pbptyper | Tipador in silico de Proteína Ligante de Penicilina para Streptococcus pneumoniae | bioconda/bioconda-recipes#36222 |
| pHierCC | Agrupamento hierárquico de cgMLST | bioconda/bioconda-recipes#37070 |
| pmga | Versão de linha de comando do PMGA (PubMLST Genome Annotator) | bioconda/bioconda-recipes/#32801 |
| property-manager | variantes de propriedades úteis para programação em Python | conda-forge/staged-recipes#9442 |
| RFPlasmid | previsão de contigs de plasmídeos a partir de montagens | bioconda/bioconda-recipes#25849 |
| SerotypeFinder | Identifica o sorotipo em isolados de E. coli total ou parcialmente sequenciados | bioconda/bioconda-recipes#29718 |
| shovill-se | Um fork do Shovill que inclui suporte para reads de extremidade única | bioconda/bioconda-recipes#26040 |
| spaTyper | método computacional para encontrar tipos spa | bioconda/bioconda-recipes#26044 |
| sra-human-scrubber | Identifica e remove reads humanas de arquivos FASTQ | bioconda/bioconda-recipes#29926 |
| staphopia-sccmec | Uma versão independente do método de tipagem SCCmec do Staphopia | bioconda/bioconda-recipes#28214 |
| tbl2asn-forever | use o tbl2asn para sempre fingindo que ainda é 2019 | bioconda/bioconda-recipes#20073 |
| vcf-annotator | Adiciona anotações biológicas a variantes em um arquivo VCF fornecido | bioconda/bioconda-recipes#13417 |
Muitas vezes esquecido, é importante reiterar: toda receita adicionada ao Bioconda tem um contêiner Docker criado pelo Biocontainers, e um contêiner Singularity criado pelo Galaxy Project. Esses contêineres permitem análises reproduzíveis com controle de versão.
Melhorias e Correções
Um problema comum com as receitas do Bioconda é que a ferramenta funciona bem em um ambiente Conda, mas falha quando contêinerizada por diversos motivos. Quando esses problemas ocorrem com uma ferramenta usada pelo Bactopia, um esforço é feito para melhorar ou corrigir a receita do Bioconda. Abaixo está uma lista de correções e melhorias em algumas receitas do Bioconda:
Contribuições ao nf-core/modules
Quando o Bactopia fez a transição para o Nextflow DSL2, isso abriu as portas para a adoção de módulos do nf-core/modules. Esses módulos permitem que os usuários os integrem facilmente em seus próprios pipelines Nextflow DSL2. Para apoiar essa integração, decidi exigir que cada Bactopia Tool tivesse um módulo correspondente disponível no nf-core/modules. Se tal módulo não estiver disponível, ele será adicionado.
Ao adotar essa prática, foram feitas 68 contribuições ao nf-core/modules na forma de novos módulos, atualizações de módulos e ajustes de testes.
Outras Contribuições
Além do Bioconda e do nf-core/modules, o Bactopia fez 26 contribuições a outras ferramentas, incluindo:
| Ferramenta | Descrição | Pull Request |
|---|---|---|
| MOB-suite | fix hostrange() missing 1 required positional argument: 'database_directory' | phac-nml/mob-suite#149 |
| bioconda-utils | chore: update change visibility action | bioconda/bioconda-utils#873 |
| Prokka | Convert Travis CI to Github Actions | tseemann/prokka#662 |
| bioconda-utils | chore: add CI to changevisibility of private containers | bioconda/bioconda-utils#835 |
| bioconda-containers | Patch - small fix on merge command and quay toggle visibility | bioconda/bioconda-containers#54 |
| Shigatyper | Incorporate patches from Bioconda | CFSAN-Biostatistics/shigatyper#14 |
| EToKi | let tempfile determine where to put temp files | lskatz/EToKi#2 |
| EToKi | Allow multiple path parameters on the configure step | lskatz/EToKi#1 |
| Seroba | let tempfile determine temp dir location | sanger-pathogens/seroba#68 |
| pymummer | allow the user to specify temp dir or use the system default | sanger-pathogens/pymummer#36 |
| ShigaTyper | Fix install process | CFSAN-Biostatistics/shigatyper#10 |
| legsta | use grep -q to play nice with bioconda docker build | tseemann/legsta#17 |
| ShigaTyper | Add single-end and ONT support, add GitHub Actions, update readme | CFSAN-Biostatistics/shigatyper#9 |
| Ariba | Ignore comments column and drop Bio.Alphabet | sanger-pathogens/ariba#319 |
| BioContainers | Add ClonalFrameML and maskrc-svg multipackage | BioContainers/multi-package-containers#1923" |
| Kleborate | Add --kaptive_path to specify path to kaptive data | katholt/Kleborate#59 |
| Ariba | fix SPAdes version capture | sanger-pathogens/ariba#315 |
| AgrVATE | Fix for dots in sample names | VishnuRaghuram94/AgrVATE#9 |
| PIRATE | Add minimum feature length option | SionBayliss/PIRATE#53 |
| Ariba | Fix for changes in PubMLST url | sanger-pathogens/ariba#305 |
| Ariba | Solution 1: for fixing CARD download | sanger-pathogens/ariba#302 |
| bowtie2 | Rename VERSION to BOWTIE2_VERSION | BenLangmead/bowtie2#302 |
| phyloFlash | Improved single end support | HRGV/phyloFlash#102 |
| ISMapper | set min_range and max_range args to be a float | jhawkey/IS_mapper#38 |
| maskrc-svg | Add requirements.txt for python modules | kwongj/maskrc-svg#2 |
| Shovill | Added shovill-se for processing single-end reads | tseemann/shovill#105 |