Pular para o conteúdo principal

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:

  1. As ferramentas devem ser de código aberto e gratuitas para uso.
  2. As ferramentas devem estar disponíveis no conda.
  3. As Bactopia Tools devem estar disponíveis no nf-core/modules.
O Bactopia forneceu mais de 181 contribuições para a comunidade de bioinformática
  • 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.

FerramentaDescrição
assembly-scanGera estatísticas básicas para uma montagem
dragonflyeMonta genomas de isolados bacterianos a partir de reads Nanopore
fastq-dlBaixa arquivos FASTQ dos repositórios SRA ou ENA.
fastq-scanExibe estatísticas resumidas de FASTQ no formato JSON
GOBLINGera proteínas confiáveis para complementar a anotação bacteriana
pastyUma ferramenta para sorogrupamento in silico de isolados de Pseudomonas aeruginosa
pbptyperTipador in silico de Proteína Ligante de Penicilina para Streptococcus pneumoniae
pmgaUm fork do PMGA para todas as espécies de Neisseria e Haemophilus influenzae
shovill-seUm fork do Shovill que inclui suporte para reads de extremidade única
staphopia-sccmecUma versão independente do método de tipagem SCCmec do Staphopia
vcf-annotatorAdiciona 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:

FerramentaDescriçãoPull Request
Aspera Connectcliente de transferência de alto desempenhoanaconda/rpetit3
assembly-scanGera estatísticas básicas para uma montagembioconda/bioconda-recipes#11425
bactopiaUm pipeline flexível para análise completa de genomas bacterianosbioconda/bioconda-recipes#17434
DragonflyeMonta genomas de isolados bacterianos a partir de reads Nanoporebioconda/bioconda-recipes#29696
ena-dlBaixa arquivos FASTQ do ENAbioconda/bioconda-recipes#17354
EToKitodos os métodos relacionados ao Enterobasebioconda/bioconda-recipes#37069
executorwrapper Python para subprocessos, amigável ao programadorconda-forge/staged-recipes#9457
fastq-dlBaixa arquivos FASTQ dos repositórios SRA ou ENA.bioconda/bioconda-recipes#18252
fastq-scanExibe estatísticas resumidas de FASTQ no formato JSONbioconda/bioconda-recipes#11415
GenoTyphiatribui genótipos a genomas de Salmonella Typhibioconda/bioconda-recipes#25674
GOBLINGera proteínas confiáveis para complementar a anotação bacterianabioconda/bioconda-recipes#38922
illumina-cleanupUm pipeline simples para pré-processamento de arquivos FASTQ Illuminabioconda/bioconda-recipes#11481
ISMappersoftware de mapeamento de sequências de inserçãobioconda/bioconda-recipes#14180
mashpitPlataforma de vigilância baseada em sketchbioconda/bioconda-recipes#35199
NextPolishPolimento rápido e preciso de genomas gerados por reads longasbioconda/bioconda-recipes#36582
ParallelTaskUm motor de tarefas paralelas simples e leveconda-forge/staged-recipes#19616
ParallelTaskUm motor de tarefas paralelas simples e leveconda-forge/staged-recipes#19616
pastyUma ferramenta para sorogrupamento in silico de isolados de Pseudomonas aeruginosabioconda/bioconda-recipes#35930
pbptyperTipador in silico de Proteína Ligante de Penicilina para Streptococcus pneumoniaebioconda/bioconda-recipes#36222
pHierCCAgrupamento hierárquico de cgMLSTbioconda/bioconda-recipes#37070
pmgaVersão de linha de comando do PMGA (PubMLST Genome Annotator)bioconda/bioconda-recipes/#32801
property-managervariantes de propriedades úteis para programação em Pythonconda-forge/staged-recipes#9442
RFPlasmidprevisão de contigs de plasmídeos a partir de montagensbioconda/bioconda-recipes#25849
SerotypeFinderIdentifica o sorotipo em isolados de E. coli total ou parcialmente sequenciadosbioconda/bioconda-recipes#29718
shovill-seUm fork do Shovill que inclui suporte para reads de extremidade únicabioconda/bioconda-recipes#26040
spaTypermétodo computacional para encontrar tipos spabioconda/bioconda-recipes#26044
sra-human-scrubberIdentifica e remove reads humanas de arquivos FASTQbioconda/bioconda-recipes#29926
staphopia-sccmecUma versão independente do método de tipagem SCCmec do Staphopiabioconda/bioconda-recipes#28214
tbl2asn-foreveruse o tbl2asn para sempre fingindo que ainda é 2019bioconda/bioconda-recipes#20073
vcf-annotatorAdiciona anotações biológicas a variantes em um arquivo VCF fornecidobioconda/bioconda-recipes#13417
Cada receita recebe um contêiner Docker e Singularity

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:

FerramentaDescriçãoPull Request
abriTAMRfix amrfinderplus pinning in abritamrbioconda/bioconda-recipes#46714
Gubbinsadjust python pinning in gubbinsbioconda/bioconda-recipes#46713
SISTRfix issue with sistr containerbioconda/bioconda-recipes#46712
RGIUpdate rgi pinning for pyrodigalbioconda/bioconda-recipes#46669
Snippypin tabix version in snippybioconda/bioconda-recipes#46458
ncbi-genome-downloadPatch ncbi-genome-download recipebioconda/bioconda-recipes#41640
GTDB-TkUpdate GTDB-tk recipebioconda/bioconda-recipes#40333
mlstupdate midas pinnings to match docsbioconda/bioconda-recipes#38826
MIDASupdate midas pinnings to match docsbioconda/bioconda-recipes#38566
smooverebuild smoove containerbioconda/bioconda-recipes#37394
fasta3update fasta3 to latest versionbioconda/bioconda-recipes#37306
pggbUpdate pinnings in pggbbioconda/bioconda-recipes#35734
NullarborRebuild nullarbor containerbioconda/bioconda-recipes#35687
GenoTyphiUpdate genotyphi recipe for mykrobe based analysisbioconda/bioconda-recipes#35388
SerobaAdd database to Seroba recipebioconda/bioconda-recipes#35378
AribaUpdate ariba dependencies for latest pymummerbioconda/bioconda-recipes#35383
pymummerpatch pymummer recipe to use system/user TMPbioconda/bioconda-recipes#35379
PlasmidFinderUpdate PlasmidFinder for better container supportbioconda/bioconda-recipes#35314
GTDB-TkAllow GTDB-Tk database download with containerbioconda/bioconda-recipes#35174
ShigaTyperupdate shigatyper recipe for better container supportbioconda/bioconda-recipes#35161
FastANIRemove fastani from build fail listbioconda/bioconda-recipes#33556
FastANIupdate FastANI recipebioconda/bioconda-recipes#33433
ProkkaUpdate Prokka bioperl pinningbioconda/bioconda-recipes#33411
SsuisSeroupdate SsuisSero dependencybioconda/bioconda-recipes#33268
RGIImprove RGI docker containerbioconda/bioconda-recipes#33249
legstaImprove dockerbuild for Legstabioconda/bioconda-recipes#33246
fastq-scanUpdate fastq-scan recipe to include jqbioconda/bioconda-recipes#32650
AribaPatch ariba recipe with minor bug fixesbioconda/bioconda-recipes#32258
PIRATEUpdate PIRATE recipe to include post-analysis scriptsbioconda/bioconda-recipes#31629
ngmasterrebuild ngmaster to get docker containerbioconda/bioconda-recipes#31376
AgrVATEadd missing dependency for agrvatebioconda/bioconda-recipes#31035
spaTyperPatch spatyper for entrypoint supportbioconda/bioconda-recipes#30824
spaTyperPatch spatyper for better container supportbioconda/bioconda-recipes#30622
KleborateUpdate kleborate recipe to build DBbioconda/bioconda-recipes#30582
cyvcf2Loosen htslib version requirement for cyvcf2bioconda/bioconda-recipes#30044
KleboratePatch Kleborate's method for discovering Kaptivebioconda/bioconda-recipes#29623
spaTyperupdate spatyper - drop blake_sha256 requirementbioconda/bioconda-recipes#27321
ISMapperISMapper - Fix BioPython pinningbioconda/bioconda-recipes#26599
CheckMcheckm-genome - fix broken pinning by older pysam versionbioconda/bioconda-recipes#25856
ISMapperUpdate ISMapper - Pin BioPython versionbioconda/bioconda-recipes#24314
AribaPatches for third party links used by Aribabioconda/bioconda-recipes#24010
SerobaAdd pysam pinning for Serobabioconda/bioconda-recipes#17568
AribaUpdate pysam pinning for Aribabioconda/bioconda-recipes#17448
tbl2asnPrevious version of tbl2asn has expired, updated to 25.7bioconda/bioconda-recipes#16131
ISMapperRebuild ismapper for GCC7 migrationbioconda/bioconda-recipes#14276
MentaLiSTMentaLiST v0.2.4 patch for Juliabioconda/bioconda-recipes#13137

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.

FerramentaDescriçãoPull Request
BTyper3add module for btyper3nf-core/modules#3817
abriTAMRadd module for abritamr_runnf-core/modules#3725
PneumoCaTadd module for pneumocatnf-core/modules#3592
STECFinderadd module for stecfindernf-core/modules#2702
MIDASadd module for midas/runnf-core/modules#2696
SRA Human Scrubberadd modules for sra-human-scrubbernf-core/modules#2694
ShigEiFinderadd shigeifinder modulenf-core/modules#2523
nf-core/modulesfix a few tests after restructurenf-core/modules#2234
Biohanseladd biohansel modulenf-core/modules#2234
pbptyperadd pbptyper modulenf-core/modules#2005
pastyadd module for pastynf-core/modules#2003
snippy-coreadd snippy/core modulenf-core/modules#1855
Mykrobeadd module for mykrobe/predictnf-core/modules#1818
GenoTyphiadd module for genotyphi/parsenf-core/modules#1818
Serobaadd module for serobanf-core/modules#1816
PlasmidFinderadd plasmidfinder modulenf-core/modules#1773
mcroniadd mcroni modulenf-core/modules#1750
Aribaadd ariba modulenf-core/modules#1731
snippyadd snippy modulenf-core/modules#1643
ShigaTyperadd shigatyper modulenf-core/modules#1548
panarooadd module for panaroo, fix pirate testsnf-core/modules#1444
DragonflyeUpdate dragonflye to latest versionnf-core/modules#1442
Baktaupdate bakta to latest version (v1.4.0)nf-core/modules#1428
RoaryUpdate test.yml for Roary modulenf-core/modules#1419
HpsuisSeroadd hpsuisero modulenf-core/modules#1331
SsuisSeroadd ssuisero modulenf-core/modules#1329
SISTRadd sistr modulenf-core/modules#1322
RGIadd rgi modulenf-core/modules#1321
legstaadd legsta modulenf-core/modules#1319
AMRFinder+add amrfindplus modulenf-core/modules#1284
abricateadd abricate modulenf-core/modules#1280
mobsuite/reconadd mobsuite/recon modulenf-core/modules#1270
mash/distadd mash/dist modulenf-core/modules#1193
KleborateFix kleborate inputsnf-core/modules#1172
nf-core/modulesfix test data path for ClonalFrameML,roary,piratenf-core/modules#1085
Baktaadd bakta modulenf-core/modules#1085
nf-core/modulesuse underscores in anchors and referencesnf-core/modules#1080
Scoaryadd scoary modulenf-core/modules#1034
emmtyperadd emmtyper modulenf-core/modules#1028
LisSeroadd lissero modulenf-core/modules#1026
ngmasteradd ngmaster modulenf-core/modules#1024
meningotypeadd meningotype modulenf-core/modules#1022
SeqSero2add seqsero2 modulenf-core/modules#1016
ncbi-genome-downloadadd ncbi-genome-download modulenf-core/modules#980
ClonalFrameMLadd clonalframeml modulenf-core/modules#974
AgrVATEUpdate agrvate versionnf-core/modules#970
ECTyperadd ectyper modulenf-core/modules#948
TBProfileradd tbprofiler modulenf-core/modules#947
spaTyperUpdate spatyper module (cleanup debug)nf-core/modules#938
hicap[fix] hicap module allow optional outputsnf-core/modules#937
fastq-scanadd fastq-scan modulenf-core/modules#935
csvtkpatch output extension in csvtk/concatnf-core/modules#797
csvtkadd csvtk/concat modulenf-core/modules#785
spaTyperadd spatyper modulenf-core/modules#784
PIRATEadd pirate modulenf-core/modules#777
Roaryadd roary modulenf-core/modules#776
ISMapperadd ismapper modulenf-core/modules#773
hicapadd hicap modulenf-core/modules#772
mashtreeadd mashtree modulenf-core/modules#767
nf-core/modulesupdate tests for 12 modules for new confignf-core/modules#758
AgrVATEUpdate agrvate to v1.0.1nf-core/modules#728
staphopia-sccmecadd staphopia-sccmec modulenf-core/modules#702
Dragonflyeadd module for dragonflyenf-core/modules#633
nf-core/modulesupdate tests for 21 modules for new confignf-core/modules#384
ProkkaUpdate Prokka modules - add process labelnf-core/modules#350
nf-core/modulesREADME - Fix link describing process labelsnf-core/modules#349
ShovillUpdate shovill modulenf-core/modules#337
Prokkaadd prokka modulenf-core/modules#298

Outras Contribuições

Além do Bioconda e do nf-core/modules, o Bactopia fez 26 contribuições a outras ferramentas, incluindo:

FerramentaDescriçãoPull Request
MOB-suitefix hostrange() missing 1 required positional argument: 'database_directory'phac-nml/mob-suite#149
bioconda-utilschore: update change visibility actionbioconda/bioconda-utils#873
ProkkaConvert Travis CI to Github Actionstseemann/prokka#662
bioconda-utilschore: add CI to changevisibility of private containersbioconda/bioconda-utils#835
bioconda-containersPatch - small fix on merge command and quay toggle visibilitybioconda/bioconda-containers#54
ShigatyperIncorporate patches from BiocondaCFSAN-Biostatistics/shigatyper#14
EToKilet tempfile determine where to put temp fileslskatz/EToKi#2
EToKiAllow multiple path parameters on the configure steplskatz/EToKi#1
Serobalet tempfile determine temp dir locationsanger-pathogens/seroba#68
pymummerallow the user to specify temp dir or use the system defaultsanger-pathogens/pymummer#36
ShigaTyperFix install processCFSAN-Biostatistics/shigatyper#10
legstause grep -q to play nice with bioconda docker buildtseemann/legsta#17
ShigaTyperAdd single-end and ONT support, add GitHub Actions, update readmeCFSAN-Biostatistics/shigatyper#9
AribaIgnore comments column and drop Bio.Alphabetsanger-pathogens/ariba#319
BioContainersAdd ClonalFrameML and maskrc-svg multipackageBioContainers/multi-package-containers#1923"
KleborateAdd --kaptive_path to specify path to kaptive datakatholt/Kleborate#59
Aribafix SPAdes version capturesanger-pathogens/ariba#315
AgrVATEFix for dots in sample namesVishnuRaghuram94/AgrVATE#9
PIRATEAdd minimum feature length optionSionBayliss/PIRATE#53
AribaFix for changes in PubMLST urlsanger-pathogens/ariba#305
AribaSolution 1: for fixing CARD downloadsanger-pathogens/ariba#302
bowtie2Rename VERSION to BOWTIE2_VERSIONBenLangmead/bowtie2#302
phyloFlashImproved single end supportHRGV/phyloFlash#102
ISMapperset min_range and max_range args to be a floatjhawkey/IS_mapper#38
maskrc-svgAdd requirements.txt for python moduleskwongj/maskrc-svg#2
ShovillAdded shovill-se for processing single-end readstseemann/shovill#105