bioflowkit 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/.github/workflows/candidate-smoke-test.yml +5 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/.github/workflows/ci.yml +17 -13
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/.github/workflows/docs.yml +5 -0
- bioflowkit-0.2.1/.github/workflows/nfcore-concordance.yml +75 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/.github/workflows/nightly-smoke.yml +5 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/.github/workflows/release.yml +5 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/CHANGELOG.md +183 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/PKG-INFO +31 -16
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/README.md +30 -15
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/__init__.py +1 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/__init__.py +2 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/db.py +25 -5
- bioflowkit-0.2.1/bioflow/cli/provenance.py +82 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/recipe.py +22 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/update.py +7 -6
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/db.py +117 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/doctor.py +35 -17
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/ncbi.py +10 -3
- bioflowkit-0.2.1/bioflow/core/provenance.py +422 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/runner.py +61 -5
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/io.py +1 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/llm/__init__.py +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/__init__.py +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/epigenomics/atac_seq.py +3 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/epigenomics/chip_seq.py +3 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/genome_assembly/eukaryote_assembly.py +2 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/metagenomics/metagenome_assembly.py +1 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/metagenomics/metagenomics_profile.py +1 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/methylation/bismark_wgbs.py +1 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/proteomics/proteomics_dda.py +2 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/rnaseq_deg/rnaseq_deg.py +51 -6
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/single_cell/scrna_seq.py +1 -1
- bioflowkit-0.2.1/bioflow/recipes/variant_calling/joint_genotyping.py +236 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_stage.py +22 -1
- bioflowkit-0.2.1/conda-recipe/meta.yaml +86 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/MAINTAINER.md +42 -1
- bioflowkit-0.2.1/docs/benchmarks/nfcore-concordance.md +90 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/index.md +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/install.md +6 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/mkdocs.yml +2 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/pyproject.toml +1 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/alignment/bedtools.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/alignment/bowtie2.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/alignment/bwa_mem2.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/alignment/minimap2.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/alignment/samtools.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/abyss.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/canu.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/flye.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/hifiasm.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/masurca.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/medaka.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/megahit.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/nextdenovo.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/nextpolish.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/pilon.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/racon.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/raven.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/shasta.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/unicycler.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/verkko.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly_qc/busco.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly_qc/checkm2.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly_qc/compleasm.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly_qc/gfastats.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly_qc/merqury.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/abricate.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/cafe5.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/diamond.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/fastani.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/iqtree.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/mafft.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/mash.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/panaroo.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/roary.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/scoary.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/comparative_genomics/skani.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/deg/deseq2.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/deg/edger.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/deg/limma_voom.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/enrichment/clusterprofiler.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/enrichment/enrichr.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/enrichment/gseapy.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/enrichment/topgo.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/bismark.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/deeptools.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/homer.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/macs3.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/methylkit.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/methylpy.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/picard.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/epigenomics/tobias.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/func_annot/antismash.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/func_annot/dbcan.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/func_annot/eggnog_mapper.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/func_annot/gtdbtk.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/func_annot/interproscan.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/bracken.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/humann3.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/kneaddata.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/kraken2.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/lefse.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/maxbin2.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/metabat2.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/metagenomics/metaphlan4.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/comet.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/maxquant.yaml +10 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/msconvert.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/openms.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/percolator.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/xtandem.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/cutadapt.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/fastqc.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/filtlong.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/multiqc.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/nanoplot.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/seqkit.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/trimgalore.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/repeat/earlgrey.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/repeat/repeatmasker.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/repeat/repeatmodeler.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/hisat2.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/kallisto.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/rsem.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/salmon.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/star.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/stringtie.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/rnaseq_align/subread.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/bustools.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/cellranger.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/harmony.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/monocle3.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/scanpy.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/scrublet.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/seurat.yaml +2 -1
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/single_cell/starsolo.yaml +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/struct_annot/augustus.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/struct_annot/bakta.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/struct_annot/braker3.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/struct_annot/liftoff.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/variant_calling/bcftools.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/variant_calling/freebayes.yaml +4 -3
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/variant_calling/gatk4.yaml +3 -2
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/variant_calling/snpeff.yaml +3 -2
- bioflowkit-0.2.1/scripts/compare_nfcore.py +234 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/pin_digests.py +12 -2
- bioflowkit-0.2.1/scripts/refresh_tags.py +199 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/integration/test_recipe_smoke_matrix.py +31 -1
- bioflowkit-0.2.1/tests/unit/test_compare_nfcore.py +170 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_db.py +45 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_failure_report.py +2 -1
- bioflowkit-0.2.1/tests/unit/test_gpu_podman.py +203 -0
- bioflowkit-0.2.1/tests/unit/test_provenance.py +232 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recipes_per_pipeline.py +5 -4
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recipes_per_pipeline_e2e.py +19 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_run_resume.py +1 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/.gitignore +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/CODE_OF_CONDUCT.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/CONTRIBUTING.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/LICENSE +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/SECURITY.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/README.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_ananatis_019464615_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_ananatis_019464615_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_ananatis_019464615_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_aquatica_900095885_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_aquatica_900095885_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_aquatica_900095885_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_chrysanthemi_000023565_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_chrysanthemi_000023565_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_chrysanthemi_000023565_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_dadantii_003049785_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_dadantii_003049785_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_dadantii_003049785_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_dianthicola_003403135_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_dianthicola_003403135_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_dianthicola_003403135_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_fangzhongdai_002812485_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_fangzhongdai_002812485_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_fangzhongdai_002812485_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_lacustris_003934295_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_lacustris_003934295_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_lacustris_003934295_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_oryzae_020406815_2.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_oryzae_020406815_2.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_oryzae_020406815_2.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_parazeae_000025065_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_parazeae_000025065_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_parazeae_000025065_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_poaceiphila_007858975_2.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_poaceiphila_007858975_2.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_poaceiphila_007858975_2.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_solani_001644705_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_solani_001644705_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_solani_001644705_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_undicola_000784735_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_undicola_000784735_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_undicola_000784735_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_zeae_002887555_1.card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_zeae_002887555_1.plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/D_zeae_002887555_1.vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/_summary_card.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/_summary_plasmidfinder.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/abricate/_summary_vfdb.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/cafe/results/Base_clade_results.txt +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/cafe/results/Base_family_likelihoods.txt +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/cafe/results/Base_family_results.txt +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/cafe/results/Base_results.txt +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/cafe/vfdb_counts.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/eggnog/cog_counts_by_bucket.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/eggnog/cog_fractions_by_bucket.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_card.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_full_boxplot.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_full_card.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_full_plasmidfinder.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_full_vfdb.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_plasmidfinder.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/abricate_vfdb.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/ani_full_heatmap.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/ani_heatmap.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/cafe_hcp_detail.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/cafe_vfdb_tree.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/cog_delta.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/cog_stacked.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/pangenome_curve.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/pangenome_full_curve.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/pangenome_full_pie.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/pangenome_pie.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/scoary_full_is_dianthicola.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/scoary_full_is_solani.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/scoary_full_soft_rot.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/scoary_full_vascular_wilt.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/scoary_soft_rot.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/scoary_vascular_wilt.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/solani_island_gc.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/solani_island_synteny.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/tree_ani_nj.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/tree_full_with_vfdb.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/figures/tree_ml_iqtree.png +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/phylogeny/ani_nj.nwk +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/phylogeny/iqtree.treefile +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/phylogeny_full/iqtree_full.treefile +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary/top25_soft_rot.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary/top25_vascular_wilt.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary/traits.csv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary_full/top30_is_dianthicola.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary_full/top30_is_solani.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary_full/top30_soft_rot.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary_full/top30_vascular_wilt.tsv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/scoary_full/traits.csv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/analysis/dickeya/summary.html +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/__main__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/_app.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/doctor.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/hw.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/llm.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/ncbi.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/pipelines.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/cli/setup.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/approve.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/checkpoint.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/compatibility.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/dag.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/hardware.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/logger.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/planner.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/registry.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/core/report.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/llm/audit.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/atac_seq.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/chip_seq.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/genome_assembly.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/metagenomics.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/methylation.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/proteomics.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/rnaseq_deg.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/scrna_seq.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/pipelines/variant_calling.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/amr_vf_catalogue.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/ani_matrix.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/cafe_evolution.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/cog_enrichment.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/download_taxon.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/gwas.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/pangenome.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/comparative_genomics/phylogeny.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/epigenomics/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/genome_assembly/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/genome_assembly/prokaryote_assembly.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/metagenomics/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/methylation/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/proteomics/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/rnaseq_deg/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/single_cell/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/variant_calling/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/recipes/variant_calling/germline_variants.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/report.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_cache.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_hashing.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_parallel.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_paths.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_pipeline.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_result.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/bioflow/sdk/_runtime.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/ecoli_small/R1.fastq.gz +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/ecoli_small/R2.fastq.gz +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/ecoli_small/real_R1.fastq.gz +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/ecoli_small/real_R2.fastq.gz +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/ecoli_small/reference.fa +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/rnaseq_toy/R1.fastq.gz +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/rnaseq_toy/genome.fa +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/rnaseq_toy/genome.gtf +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/data/test/rnaseq_toy/samples.csv +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docker/core/Dockerfile +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docker/docker-compose.yml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/DESIGN.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/architecture.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/maintainer/UPDATE_CADENCES.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/maintainer/cowork_schedule_prompt.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/maintainer/quarterly_audit_prompt.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/maintainer/research_prompt.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/quickstart.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/reference/recipes.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/docs/reference/tools.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/cache_demo.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_atac_seq.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_chip_seq.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_custom.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_eukaryote_hifi.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_metagenomics.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_methylation.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_prokaryote_short.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_proteomics.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_recommend.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_rnaseq.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/config_scrna_seq.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/parallel_demo.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/pectobacterium_demo.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/pipeline_demo.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/recipes_quickstart.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/examples/stage_demo.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/README.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/atac_seq_standard.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/chip_seq_standard.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/eukaryote_denovo_hifi.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/eukaryote_denovo_hybrid.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/eukaryote_resequencing.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/metagenomics_kraken2_standard.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/metagenomics_metaphlan4_standard.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/methylation_bismark_wgbs.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/prokaryote_denovo_hybrid.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/prokaryote_denovo_short.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/proteomics_msfragger_dda.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/rnaseq_deseq2_standard.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/scrna_seq_10x_scanpy.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/presets/scrna_seq_10x_seurat.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/schema.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/alignment/bwa.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly/spades.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/assembly_qc/quast.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/fragpipe.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/proteomics/msfragger.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/qc/fastp.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/registry/tools/struct_annot/prokka.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/gen_docs.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/install-schedule-cron-daily.sh +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/install-schedule-cron-weekly.sh +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/install-schedule-cron.sh +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/install-schedule-daily.ps1 +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/install-schedule-weekly.ps1 +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/scripts/install-schedule-windows.ps1 +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/e2e/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/e2e/test_prokaryote_short.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/e2e/test_rnaseq.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/fixtures/hypo_assembler.yaml +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/integration/__init__.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/integration/test_docker_backend.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/integration/test_recipe_real_data.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/integration/test_sdk_real_docker.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_approve.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_benchmark.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_bugfixes.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_crossplatform.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_dag.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_digest_pinning.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_doctor.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_freshness_check.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_interactive.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_io.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_llm.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_llm_audit.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_llm_diagnose.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_llm_setup.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_ncbi.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_planner.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_planner_eukaryote.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_planner_rnaseq.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recipe_cli_args.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recipe_registry_alignment.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recipes.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recipes_cookbook.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_recommend.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_registry_resolver.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_registry_sanity.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_release_watch.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_report.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_report_builder.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_runner.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_cache.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_external_mounts.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_parallel.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_pipeline.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_retry.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_stage.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_sdk_streaming.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_skeleton.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/tests/unit/test_update_auto.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/update/REGISTRY_CHANGELOG.md +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/update/benchmark.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/update/freshness_check.py +0 -0
- {bioflowkit-0.2.0 → bioflowkit-0.2.1}/update/release_watch.py +0 -0
|
@@ -17,6 +17,11 @@ permissions:
|
|
|
17
17
|
contents: read
|
|
18
18
|
pull-requests: write # for the summary comment
|
|
19
19
|
|
|
20
|
+
# Opt into the Node 24 runtime ahead of the 2026-06-16 forced switch so
|
|
21
|
+
# the v4/v5 actions stop emitting Node 20 deprecation warnings.
|
|
22
|
+
env:
|
|
23
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
24
|
+
|
|
20
25
|
jobs:
|
|
21
26
|
smoke:
|
|
22
27
|
name: Validate + smoke-test changed candidates
|
|
@@ -6,6 +6,11 @@ on:
|
|
|
6
6
|
pull_request:
|
|
7
7
|
branches: [main]
|
|
8
8
|
|
|
9
|
+
# Opt into the Node 24 runtime ahead of the 2026-06-16 forced switch so
|
|
10
|
+
# the v4/v5 actions stop emitting Node 20 deprecation warnings.
|
|
11
|
+
env:
|
|
12
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
13
|
+
|
|
9
14
|
jobs:
|
|
10
15
|
unit-tests:
|
|
11
16
|
name: Unit tests (Python ${{ matrix.python-version }})
|
|
@@ -47,12 +52,11 @@ jobs:
|
|
|
47
52
|
run: ruff check .
|
|
48
53
|
|
|
49
54
|
typecheck:
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
name: Type check (mypy
|
|
55
|
+
# Blocking: the bioflow package type-checks clean under mypy
|
|
56
|
+
# (--ignore-missing-imports for the un-stubbed docker / anthropic /
|
|
57
|
+
# openai SDKs). Keep it that way — a new type error fails CI.
|
|
58
|
+
name: Type check (mypy)
|
|
54
59
|
runs-on: ubuntu-latest
|
|
55
|
-
continue-on-error: true
|
|
56
60
|
|
|
57
61
|
steps:
|
|
58
62
|
- uses: actions/checkout@v4
|
|
@@ -66,7 +70,7 @@ jobs:
|
|
|
66
70
|
run: pip install -e ".[dev]" && pip install types-PyYAML types-requests
|
|
67
71
|
|
|
68
72
|
- name: Run mypy
|
|
69
|
-
run: mypy bioflow --ignore-missing-imports
|
|
73
|
+
run: mypy bioflow --ignore-missing-imports
|
|
70
74
|
|
|
71
75
|
registry-schema:
|
|
72
76
|
name: Validate registry YAMLs
|
|
@@ -108,12 +112,12 @@ jobs:
|
|
|
108
112
|
EOF
|
|
109
113
|
|
|
110
114
|
digest-audit:
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
#
|
|
114
|
-
|
|
115
|
+
# Now blocking: every *active* tool must carry an image_digest
|
|
116
|
+
# (deprecated tools are skipped — their upstream images are gone by
|
|
117
|
+
# definition). This keeps the registry fully content-addressed so a
|
|
118
|
+
# silently-retagged or GC'd upstream image can never change results.
|
|
119
|
+
name: Container digest pin audit
|
|
115
120
|
runs-on: ubuntu-latest
|
|
116
|
-
continue-on-error: true
|
|
117
121
|
|
|
118
122
|
steps:
|
|
119
123
|
- uses: actions/checkout@v4
|
|
@@ -126,5 +130,5 @@ jobs:
|
|
|
126
130
|
- name: Install dependencies
|
|
127
131
|
run: pip install pyyaml
|
|
128
132
|
|
|
129
|
-
- name:
|
|
130
|
-
run: python scripts/pin_digests.py --audit
|
|
133
|
+
- name: Require every active tool to be digest-pinned
|
|
134
|
+
run: python scripts/pin_digests.py --audit
|
|
@@ -26,6 +26,11 @@ concurrency:
|
|
|
26
26
|
group: pages
|
|
27
27
|
cancel-in-progress: true
|
|
28
28
|
|
|
29
|
+
# Opt into the Node 24 runtime ahead of the 2026-06-16 forced switch so
|
|
30
|
+
# the v3/v4/v5 actions stop emitting Node 20 deprecation warnings.
|
|
31
|
+
env:
|
|
32
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
33
|
+
|
|
29
34
|
jobs:
|
|
30
35
|
build:
|
|
31
36
|
runs-on: ubuntu-latest
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: nf-core concordance
|
|
2
|
+
|
|
3
|
+
# Manually-dispatched concordance benchmark: run bioflow and the matching
|
|
4
|
+
# nf-core pipeline on a golden dataset, then score their agreement with
|
|
5
|
+
# scripts/compare_nfcore.py.
|
|
6
|
+
#
|
|
7
|
+
# This is NOT a per-PR gate. A real run needs tens of GB of references
|
|
8
|
+
# and hours of compute, so it expects a runner that already has them
|
|
9
|
+
# staged (a self-hosted runner, or a large GitHub runner the maintainer
|
|
10
|
+
# provisions). It is run deliberately before a release and its JSON
|
|
11
|
+
# output is published with the release notes.
|
|
12
|
+
#
|
|
13
|
+
# See docs/benchmarks/nfcore-concordance.md for the datasets, method, and
|
|
14
|
+
# acceptance thresholds.
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
workflow_dispatch:
|
|
18
|
+
inputs:
|
|
19
|
+
comparison:
|
|
20
|
+
description: "Which comparison to run"
|
|
21
|
+
type: choice
|
|
22
|
+
options: [vcf, counts]
|
|
23
|
+
default: vcf
|
|
24
|
+
bioflow_output:
|
|
25
|
+
description: "Path to the bioflow output (VCF or counts TSV) on the runner"
|
|
26
|
+
required: true
|
|
27
|
+
reference_output:
|
|
28
|
+
description: "Path to the nf-core output on the runner"
|
|
29
|
+
required: true
|
|
30
|
+
threshold:
|
|
31
|
+
description: "Min Jaccard (vcf) or Spearman rho (counts) to pass"
|
|
32
|
+
required: false
|
|
33
|
+
default: "0.90"
|
|
34
|
+
|
|
35
|
+
# Opt into the Node 24 runtime ahead of the 2026-06-16 forced switch.
|
|
36
|
+
env:
|
|
37
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
38
|
+
|
|
39
|
+
jobs:
|
|
40
|
+
score:
|
|
41
|
+
name: Score concordance
|
|
42
|
+
# The default GitHub runner cannot hold iGenomes references; point this
|
|
43
|
+
# at a self-hosted runner that has them staged. Left as ubuntu-latest
|
|
44
|
+
# so the workflow is valid and the *scoring* step is exercisable on
|
|
45
|
+
# pre-staged outputs.
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
steps:
|
|
48
|
+
- uses: actions/checkout@v4
|
|
49
|
+
|
|
50
|
+
- uses: actions/setup-python@v5
|
|
51
|
+
with:
|
|
52
|
+
python-version: "3.12"
|
|
53
|
+
|
|
54
|
+
- name: Score bioflow vs nf-core
|
|
55
|
+
run: |
|
|
56
|
+
if [ "${{ inputs.comparison }}" = "vcf" ]; then
|
|
57
|
+
python scripts/compare_nfcore.py vcf \
|
|
58
|
+
--bioflow "${{ inputs.bioflow_output }}" \
|
|
59
|
+
--reference "${{ inputs.reference_output }}" \
|
|
60
|
+
--out concordance.json \
|
|
61
|
+
--min-jaccard "${{ inputs.threshold }}"
|
|
62
|
+
else
|
|
63
|
+
python scripts/compare_nfcore.py counts \
|
|
64
|
+
--bioflow "${{ inputs.bioflow_output }}" \
|
|
65
|
+
--reference "${{ inputs.reference_output }}" \
|
|
66
|
+
--out concordance.json \
|
|
67
|
+
--min-rho "${{ inputs.threshold }}"
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
- name: Upload concordance report
|
|
71
|
+
if: always()
|
|
72
|
+
uses: actions/upload-artifact@v4
|
|
73
|
+
with:
|
|
74
|
+
name: nfcore-concordance
|
|
75
|
+
path: concordance.json
|
|
@@ -10,6 +10,11 @@ on:
|
|
|
10
10
|
- cron: "0 3 * * *"
|
|
11
11
|
workflow_dispatch:
|
|
12
12
|
|
|
13
|
+
# Opt into the Node 24 runtime ahead of the 2026-06-16 forced switch so
|
|
14
|
+
# the v4/v5 actions stop emitting Node 20 deprecation warnings.
|
|
15
|
+
env:
|
|
16
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
17
|
+
|
|
13
18
|
jobs:
|
|
14
19
|
smoke-matrix:
|
|
15
20
|
name: Recipe smoke matrix
|
|
@@ -22,6 +22,11 @@ on:
|
|
|
22
22
|
permissions:
|
|
23
23
|
contents: read
|
|
24
24
|
|
|
25
|
+
# Opt into the Node 24 runtime ahead of the 2026-06-16 forced switch so
|
|
26
|
+
# the v4/v5 actions stop emitting Node 20 deprecation warnings.
|
|
27
|
+
env:
|
|
28
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
29
|
+
|
|
25
30
|
jobs:
|
|
26
31
|
build:
|
|
27
32
|
name: Build sdist + wheel
|
|
@@ -12,6 +12,189 @@ ship bug fixes only. Breaking changes to the documented public API
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
+
## [0.2.1] — 2026-06-12
|
|
16
|
+
|
|
17
|
+
> **Why upgrade from 0.2.0**: the `v0.2.0` tag predated the registry
|
|
18
|
+
> freshness fix, so the 0.2.0 wheel bundled a registry whose
|
|
19
|
+
> `quay.io/biocontainers/*` tags had been garbage-collected from Quay —
|
|
20
|
+
> `rnaseq_deg`, `chip_seq`, `atac_seq`, `eukaryote_assembly`,
|
|
21
|
+
> `metagenome_assembly`, and others would fail at run time with "image
|
|
22
|
+
> not found". **0.2.1 ships the repaired, 107/107-pinned registry**, so
|
|
23
|
+
> recipes actually pull their containers. Everything below landed after
|
|
24
|
+
> the 0.2.0 cut and is new to PyPI users here.
|
|
25
|
+
|
|
26
|
+
### Changed — nightly smoke matrix expanded (3 → 5 recipes)
|
|
27
|
+
- Added real-container smoke cases for **chip_seq** (TrimGalore — a
|
|
28
|
+
container family shared by chip/atac/methylation, previously
|
|
29
|
+
unexercised) and **germline_variants** (validates the variant recipe's
|
|
30
|
+
fastp wiring). All five pass against real BioContainers locally
|
|
31
|
+
(~90 s) — more of the "522 mostly-mock tests" critique closed with
|
|
32
|
+
genuine end-to-end coverage.
|
|
33
|
+
|
|
34
|
+
### Changed — mypy type-checking is now blocking
|
|
35
|
+
- Fixed all 33 mypy errors across 7 modules (Rich `TaskID` optionals in
|
|
36
|
+
the progress bars, `dict[str, Any]` run kwargs, anthropic/openai/docker
|
|
37
|
+
SDK union + missing-stub noise, a loop-variable shadow in
|
|
38
|
+
`cli/update.py`). `mypy bioflow --ignore-missing-imports` now reports
|
|
39
|
+
**0 errors**.
|
|
40
|
+
- CI's `typecheck` job drops `continue-on-error` — a new type error now
|
|
41
|
+
fails the build, closing the "advisory only" gap.
|
|
42
|
+
|
|
43
|
+
### Added — nf-core concordance benchmark (harness + methodology)
|
|
44
|
+
- `scripts/compare_nfcore.py` (new, stdlib-only): scores agreement
|
|
45
|
+
between a bioflow output and the matching nf-core output —
|
|
46
|
+
**Jaccard + genotype concordance** on normalised VCF sites
|
|
47
|
+
(vs nf-core/sarek), and **Spearman ρ** of per-gene counts
|
|
48
|
+
(vs nf-core/rnaseq). Optional `--min-jaccard` / `--min-rho` gate for
|
|
49
|
+
CI.
|
|
50
|
+
- `docs/benchmarks/nfcore-concordance.md`: golden datasets
|
|
51
|
+
(GIAB HG002 chr20; nf-core/rnaseq chr22), method, and initial
|
|
52
|
+
acceptance thresholds.
|
|
53
|
+
- `.github/workflows/nfcore-concordance.yml`: manually-dispatched job
|
|
54
|
+
(not a per-PR gate — a full run needs staged references).
|
|
55
|
+
- Honesty note: bioflow ships the *scoring* half (committed + tested);
|
|
56
|
+
the *production* half (running both pipelines on a machine with the
|
|
57
|
+
references) is operator-run and documented.
|
|
58
|
+
- Tests: +13 (`tests/unit/test_compare_nfcore.py`).
|
|
59
|
+
|
|
60
|
+
### Added — GPU passthrough + Podman runtime
|
|
61
|
+
- `@stage(..., gpu=True)` (and a tool YAML's `resources.gpu`) now attach
|
|
62
|
+
all host GPUs to that stage's container via a Docker `DeviceRequest`
|
|
63
|
+
(the API equivalent of `--gpus all`); needs the NVIDIA Container
|
|
64
|
+
Toolkit, and degrades to a warning on CPU-only hosts rather than
|
|
65
|
+
failing. Threaded through `Stage`, the `@stage` decorator, and the
|
|
66
|
+
preset `run_plan` path.
|
|
67
|
+
- `DockerBackend` works with **Podman**: it honours `BIOFLOW_DOCKER_HOST`
|
|
68
|
+
/ `DOCKER_HOST` (point it at the Podman API socket) and an optional
|
|
69
|
+
`base_url`, and reads `BIOFLOW_CONTAINER_RUNTIME`.
|
|
70
|
+
- `bioflow doctor` recognises Podman as a Docker alternative — the
|
|
71
|
+
`docker_cli` / `docker_daemon` checks fall back to `podman` and report
|
|
72
|
+
which runtime they found.
|
|
73
|
+
- Tests: +10 (`tests/unit/test_gpu_podman.py`). Backend `run()` gains a
|
|
74
|
+
`gpu` kwarg (the `ContainerBackend` protocol + MockBackend updated).
|
|
75
|
+
|
|
76
|
+
### Added — reference-DB catalog expansion + refgenie manifest
|
|
77
|
+
- `bioflow/core/db.py` catalog gains the references real recipes need:
|
|
78
|
+
GATK known-sites `dbsnp_grch38` + `mills_indels_grch38` (BQSR/VQSR),
|
|
79
|
+
`encode_blacklist_grch38` (ChIP/ATAC peak filtering), and
|
|
80
|
+
`gencode_grch38` (STAR/Salmon/featureCounts annotation).
|
|
81
|
+
- Catalog entries now carry `genome` + `asset` tags, and a new
|
|
82
|
+
`refgenie_manifest()` / `bioflow db manifest` emits a
|
|
83
|
+
[refgenie](https://refgenie.databio.org/)-compatible JSON mapping
|
|
84
|
+
`<genome>/<asset>` → catalogued DB, so labs already standardised on
|
|
85
|
+
refgenie can see which existing assets satisfy a bioflow requirement.
|
|
86
|
+
- Tests: +5 (`tests/unit/test_db.py`).
|
|
87
|
+
|
|
88
|
+
### Added — rnaseq_deg depth: GO enrichment + MultiQC
|
|
89
|
+
- `rnaseq_deg` extended from 4 → 6 stages:
|
|
90
|
+
- **`enrich_go`** — GO enrichment on the significant DEGs via gseapy's
|
|
91
|
+
Enrichr query. Symbol-based, so no organism-specific OrgDb package
|
|
92
|
+
is needed; an awk numeric-regex guard on the `padj` column avoids the
|
|
93
|
+
classic "NA-treated-as-0" false positive.
|
|
94
|
+
- **`multiqc_report`** — aggregates every per-sample fastp + Salmon
|
|
95
|
+
report into a single MultiQC HTML.
|
|
96
|
+
- DAG-shape test updated; recipe still runs end-to-end under MockBackend.
|
|
97
|
+
|
|
98
|
+
### Added — `joint_genotyping` recipe (GATK cohort best practice)
|
|
99
|
+
- New 7-stage recipe (`bioflow/recipes/variant_calling/joint_genotyping.py`)
|
|
100
|
+
implementing the canonical GATK **joint-genotyping** workflow for
|
|
101
|
+
cohorts, where `germline_variants` only does single-sample direct
|
|
102
|
+
calling:
|
|
103
|
+
- **per sample (fan-out)**: fastp → BWA-MEM → MarkDuplicates →
|
|
104
|
+
HaplotypeCaller `-ERC GVCF`
|
|
105
|
+
- **cohort (converge)**: CombineGVCFs → GenotypeGVCFs →
|
|
106
|
+
best-practice hard filtering (separate SNP / INDEL filters) → SnpEff
|
|
107
|
+
- Takes a `sample_id,fastq_r1,fastq_r2` sample sheet and uses `.starmap`
|
|
108
|
+
to run the per-sample stages in parallel before converging on the
|
|
109
|
+
joint steps — the production pattern reviewers expect for population
|
|
110
|
+
and family studies, and a worked example of bioflow's fan-out.
|
|
111
|
+
- Recipe count 19 → 20 (12 per-pipeline). Tests: +3 (registration, DAG
|
|
112
|
+
shape, MockBackend e2e).
|
|
113
|
+
|
|
114
|
+
### Added — run provenance (RO-Crate + PROV-style JSON)
|
|
115
|
+
- `bioflow/core/provenance.py` (new): every recipe run records, per
|
|
116
|
+
stage, the container **image + content digest**, the exact
|
|
117
|
+
**command**, every **input file's SHA-256 + size**, **start/end**
|
|
118
|
+
timestamps, exit code, and the bioflow version.
|
|
119
|
+
- At the end of a run the workspace gains two self-describing files:
|
|
120
|
+
- `provenance.json` — flat, human-readable run record
|
|
121
|
+
- `ro-crate-metadata.json` — an [RO-Crate 1.1](https://www.researchobject.org/ro-crate/)
|
|
122
|
+
research object (the de-facto packaging standard for computational
|
|
123
|
+
workflow runs), so the output directory is consumable by reviewers
|
|
124
|
+
and downstream tools directly.
|
|
125
|
+
- Wired into `bioflow recipe run` (on by default; `--no-provenance` to
|
|
126
|
+
skip). Opt-in and **zero-cost when off** — the SDK hot path pays
|
|
127
|
+
nothing unless a recorder is installed, and provenance errors degrade
|
|
128
|
+
to warnings rather than aborting the science.
|
|
129
|
+
- New `bioflow provenance show <workspace>` command (+ `--json`) renders
|
|
130
|
+
the recorded run: per-stage image, pinned digest, exit status, and
|
|
131
|
+
input hashes. Builds directly on the digest-pinning work — pinned
|
|
132
|
+
tools show their `sha256:…` in the provenance.
|
|
133
|
+
- Tests: +14 (`tests/unit/test_provenance.py`); verified end-to-end
|
|
134
|
+
against real Docker (digest resolved from the local image, RO-Crate
|
|
135
|
+
validates structurally).
|
|
136
|
+
|
|
137
|
+
### Fixed — registry freshness (stale BioContainer tags)
|
|
138
|
+
- **Discovery**: an audit during digest-pinning found that ~half the
|
|
139
|
+
registry's `quay.io/biocontainers/*` image tags had 404'd. Quay
|
|
140
|
+
rotates each package's `--<buildhash>_<n>` build suffix and garbage-
|
|
141
|
+
collects the old ones, so dozens of recipes (chip_seq, atac_seq,
|
|
142
|
+
eukaryote_assembly, metagenome_assembly, rnaseq_deg's Salmon stage,
|
|
143
|
+
…) would have failed at run time with "image not found" — unrelated
|
|
144
|
+
to the user's data.
|
|
145
|
+
- `scripts/refresh_tags.py` (new): audits every Quay BioContainer
|
|
146
|
+
reference, and with `--apply` rewrites any dead tag to the newest
|
|
147
|
+
*same-version* build (never changing the upstream software version).
|
|
148
|
+
Non-Quay images and versions that have left Quay entirely are
|
|
149
|
+
reported for manual review.
|
|
150
|
+
- Applied: **34 registry tool YAMLs** + **7 recipe-hardcoded images**
|
|
151
|
+
(bowtie2, bracken, flye, macs3, medaka, metabat2, tobias) re-pointed
|
|
152
|
+
to live tags. Salmon's `1.10.3--hb950928_0` → `1.10.3--h45fbf2d_5`
|
|
153
|
+
fixed separately (it broke the rnaseq_deg quant stage).
|
|
154
|
+
- Verified: the bumped images pull + run (e.g. `bowtie2 2.5.4`), and
|
|
155
|
+
the nightly smoke matrix is green.
|
|
156
|
+
|
|
157
|
+
### Added — full digest pinning (registry now 100% content-addressed)
|
|
158
|
+
- Digest coverage raised from 5/110 → **107/107 active tools** in two
|
|
159
|
+
passes. The second pass resolved the 17 hold-outs:
|
|
160
|
+
- **Version bumps** to the newest BioContainer of the same tool where
|
|
161
|
+
the pinned version had left Quay: DESeq2 1.44→1.50.2, edgeR
|
|
162
|
+
4.2→4.8.2, limma 3.60→3.66, clusterProfiler 4.12→4.18.4, topGO
|
|
163
|
+
2.56→2.62, HOMER 4.11.1→5.1, Scanpy 1.10.1→1.7.2 (1.10 was never on
|
|
164
|
+
Quay biocontainers), Comet 2024020→2026011, Percolator 3.06.1→3.7.1,
|
|
165
|
+
InterProScan 5.67→5.59.
|
|
166
|
+
- **Image-source switches**: methylKit and monocle3 moved off the
|
|
167
|
+
multi-GB `bioconductor/bioconductor_full:RELEASE_3_18` (gone) to the
|
|
168
|
+
dedicated `bioconductor-methylkit` / `r-monocle3` BioContainers;
|
|
169
|
+
Cell Ranger tag `7.2.0`→`v7.2.0`; Seurat `5.0.1`→`5.0.0`.
|
|
170
|
+
- **Deprecations**: MaxQuant joins MSFragger + FragPipe as
|
|
171
|
+
`deprecated: true` — proprietary tools whose images are gone and
|
|
172
|
+
which the `proteomics_dda` recipe does not use (it runs the
|
|
173
|
+
open-source msconvert → Comet → Percolator stack). The audit now
|
|
174
|
+
skips deprecated tools.
|
|
175
|
+
- **CI `digest-audit` is now blocking** (was advisory): every active
|
|
176
|
+
tool must carry an `image_digest`, so the registry can never silently
|
|
177
|
+
rot again.
|
|
178
|
+
- `scripts/refresh_tags.py` also reports `version_gone` and non-Quay
|
|
179
|
+
images for these manual cases.
|
|
180
|
+
|
|
181
|
+
### Added — Bioconda recipe (prep)
|
|
182
|
+
- `conda-recipe/meta.yaml`: noarch-python Bioconda recipe (only
|
|
183
|
+
bioflow's pure-Python stack is a conda dep; tools run as Docker
|
|
184
|
+
containers). Submission walkthrough in `docs/MAINTAINER.md` Part 7.
|
|
185
|
+
Gated on the real-PyPI publish (the recipe sources the PyPI sdist).
|
|
186
|
+
|
|
187
|
+
### Changed — CI
|
|
188
|
+
- All workflows opt into the Node 24 runtime
|
|
189
|
+
(`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24`) ahead of the 2026-06-16 forced
|
|
190
|
+
switch, silencing the Node 20 deprecation warnings.
|
|
191
|
+
|
|
192
|
+
### Fixed — nightly smoke
|
|
193
|
+
- `rnaseq_deg.qc_one` smoke assertion matched the stage's real output
|
|
194
|
+
names (`<sample_id>_R1.clean.fq.gz`), fixing a false CI failure.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
15
198
|
## [0.2.0] — 2026-06-05
|
|
16
199
|
|
|
17
200
|
First PyPI release. Three months of 0.1.x work consolidated into a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bioflowkit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: bioflow: one-line comparative-genomics recipes + Tier-A SDK, orchestrated over per-tool Docker BioContainers.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hope9901/bioflow
|
|
6
6
|
Project-URL: Repository, https://github.com/hope9901/bioflow
|
|
@@ -35,7 +35,7 @@ Description-Content-Type: text/markdown
|
|
|
35
35
|
[](https://pypi.org/project/bioflowkit/)
|
|
36
36
|
[](https://pypi.org/project/bioflowkit/)
|
|
37
37
|
[](https://pypi.org/project/bioflowkit/)
|
|
38
|
-
[](tests/)
|
|
39
39
|
[](https://github.com/hope9901/bioflow/actions/workflows/nightly-smoke.yml)
|
|
40
40
|
[](LICENSE)
|
|
41
41
|
[](https://hope9901.github.io/bioflow/)
|
|
@@ -51,14 +51,14 @@ and a privacy-first LLM companion is available when you want it.
|
|
|
51
51
|
|
|
52
52
|
## What you get
|
|
53
53
|
|
|
54
|
-
- **
|
|
54
|
+
- **20 cookbook recipes** invokable as one-liners:
|
|
55
55
|
- *Comparative genomics (8)*: pangenome, ANI, phylogeny, GWAS,
|
|
56
56
|
gene-family evolution, AMR/VF catalogue, COG enrichment, NCBI
|
|
57
57
|
download.
|
|
58
|
-
- *Per-pipeline (
|
|
58
|
+
- *Per-pipeline (12)*: prokaryote_assembly, eukaryote_assembly,
|
|
59
59
|
rnaseq_deg, metagenomics_profile, metagenome_assembly, scrna_seq,
|
|
60
60
|
chip_seq, atac_seq, methylation_wgbs, proteomics_dda,
|
|
61
|
-
germline_variants.
|
|
61
|
+
germline_variants, joint_genotyping (GATK cohort best practice).
|
|
62
62
|
- **110 tools** registered across 16 categories, all pulled as
|
|
63
63
|
BioContainer images at run time — nothing to install on the host
|
|
64
64
|
beyond Docker + Python.
|
|
@@ -66,6 +66,10 @@ and a privacy-first LLM companion is available when you want it.
|
|
|
66
66
|
`runnable_slow` / `incompatible` against your CPU / RAM / GPU / arch.
|
|
67
67
|
- **Input-hash caching**: re-running a recipe with unchanged inputs
|
|
68
68
|
returns in seconds.
|
|
69
|
+
- **Run provenance**: every recipe writes `provenance.json` +
|
|
70
|
+
`ro-crate-metadata.json` recording input SHA-256, container image
|
|
71
|
+
digests, commands, and timestamps — a self-describing research object
|
|
72
|
+
for reproducibility and journal submission. `--no-provenance` to skip.
|
|
69
73
|
- **Privacy-first LLM companion** (optional): terminology Q&A, sanitized
|
|
70
74
|
error diagnosis, tool-registration assist. Disabled by default.
|
|
71
75
|
|
|
@@ -202,19 +206,30 @@ Some pipelines need external databases (Pfam, eggNOG, BUSCO, etc.).
|
|
|
202
206
|
|
|
203
207
|
```bash
|
|
204
208
|
bioflow db list # show available DBs
|
|
205
|
-
bioflow db fetch
|
|
206
|
-
bioflow db verify
|
|
209
|
+
bioflow db fetch dbsnp_grch38 --dest /refs
|
|
210
|
+
bioflow db verify dbsnp_grch38 --dest /refs
|
|
211
|
+
bioflow db manifest --dest /refs # refgenie-compatible asset map
|
|
207
212
|
```
|
|
208
213
|
|
|
209
|
-
| Key | Size | Used by |
|
|
210
|
-
|
|
211
|
-
| `busco_bacteria`
|
|
212
|
-
| `busco_insecta`
|
|
213
|
-
| `busco_vertebrata`
|
|
214
|
-
| `pfam`
|
|
215
|
-
| `dfam_curated`
|
|
216
|
-
| `uniprot_sprot`
|
|
217
|
-
| `eggnog`
|
|
214
|
+
| Key | Size | Used by | refgenie asset |
|
|
215
|
+
|---|---:|---|---|
|
|
216
|
+
| `busco_bacteria` | 0.07 GB | busco | — |
|
|
217
|
+
| `busco_insecta` | 0.08 GB | busco | — |
|
|
218
|
+
| `busco_vertebrata` | 0.30 GB | busco | — |
|
|
219
|
+
| `pfam` | 0.50 GB | interproscan | — |
|
|
220
|
+
| `dfam_curated` | 2.00 GB | repeatmasker, earlgrey | — |
|
|
221
|
+
| `uniprot_sprot` | 0.25 GB | braker3 | — |
|
|
222
|
+
| `eggnog` | 8.50 GB | eggnog_mapper | — |
|
|
223
|
+
| `kraken2_standard_8gb` | 7.50 GB | kraken2, bracken | — |
|
|
224
|
+
| `bowtie2_grch38_noalt` | 3.50 GB | bowtie2 | hg38/bowtie2_index |
|
|
225
|
+
| `dbsnp_grch38` | 1.60 GB | gatk4 | hg38/dbsnp |
|
|
226
|
+
| `mills_indels_grch38` | 0.02 GB | gatk4 | hg38/known_indels |
|
|
227
|
+
| `encode_blacklist_grch38` | 0.001 GB | macs3, tobias | hg38/blacklist |
|
|
228
|
+
| `gencode_grch38` | 0.05 GB | star, salmon, subread | hg38/ensembl_gtf |
|
|
229
|
+
|
|
230
|
+
`bioflow db manifest` emits a [refgenie](https://refgenie.databio.org/)-compatible
|
|
231
|
+
JSON mapping `<genome>/<asset>` → catalogued DB, so a lab already on
|
|
232
|
+
refgenie can see which existing assets satisfy a bioflow requirement.
|
|
218
233
|
|
|
219
234
|
---
|
|
220
235
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://pypi.org/project/bioflowkit/)
|
|
4
4
|
[](https://pypi.org/project/bioflowkit/)
|
|
5
5
|
[](https://pypi.org/project/bioflowkit/)
|
|
6
|
-
[](tests/)
|
|
7
7
|
[](https://github.com/hope9901/bioflow/actions/workflows/nightly-smoke.yml)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
[](https://hope9901.github.io/bioflow/)
|
|
@@ -19,14 +19,14 @@ and a privacy-first LLM companion is available when you want it.
|
|
|
19
19
|
|
|
20
20
|
## What you get
|
|
21
21
|
|
|
22
|
-
- **
|
|
22
|
+
- **20 cookbook recipes** invokable as one-liners:
|
|
23
23
|
- *Comparative genomics (8)*: pangenome, ANI, phylogeny, GWAS,
|
|
24
24
|
gene-family evolution, AMR/VF catalogue, COG enrichment, NCBI
|
|
25
25
|
download.
|
|
26
|
-
- *Per-pipeline (
|
|
26
|
+
- *Per-pipeline (12)*: prokaryote_assembly, eukaryote_assembly,
|
|
27
27
|
rnaseq_deg, metagenomics_profile, metagenome_assembly, scrna_seq,
|
|
28
28
|
chip_seq, atac_seq, methylation_wgbs, proteomics_dda,
|
|
29
|
-
germline_variants.
|
|
29
|
+
germline_variants, joint_genotyping (GATK cohort best practice).
|
|
30
30
|
- **110 tools** registered across 16 categories, all pulled as
|
|
31
31
|
BioContainer images at run time — nothing to install on the host
|
|
32
32
|
beyond Docker + Python.
|
|
@@ -34,6 +34,10 @@ and a privacy-first LLM companion is available when you want it.
|
|
|
34
34
|
`runnable_slow` / `incompatible` against your CPU / RAM / GPU / arch.
|
|
35
35
|
- **Input-hash caching**: re-running a recipe with unchanged inputs
|
|
36
36
|
returns in seconds.
|
|
37
|
+
- **Run provenance**: every recipe writes `provenance.json` +
|
|
38
|
+
`ro-crate-metadata.json` recording input SHA-256, container image
|
|
39
|
+
digests, commands, and timestamps — a self-describing research object
|
|
40
|
+
for reproducibility and journal submission. `--no-provenance` to skip.
|
|
37
41
|
- **Privacy-first LLM companion** (optional): terminology Q&A, sanitized
|
|
38
42
|
error diagnosis, tool-registration assist. Disabled by default.
|
|
39
43
|
|
|
@@ -170,19 +174,30 @@ Some pipelines need external databases (Pfam, eggNOG, BUSCO, etc.).
|
|
|
170
174
|
|
|
171
175
|
```bash
|
|
172
176
|
bioflow db list # show available DBs
|
|
173
|
-
bioflow db fetch
|
|
174
|
-
bioflow db verify
|
|
177
|
+
bioflow db fetch dbsnp_grch38 --dest /refs
|
|
178
|
+
bioflow db verify dbsnp_grch38 --dest /refs
|
|
179
|
+
bioflow db manifest --dest /refs # refgenie-compatible asset map
|
|
175
180
|
```
|
|
176
181
|
|
|
177
|
-
| Key | Size | Used by |
|
|
178
|
-
|
|
179
|
-
| `busco_bacteria`
|
|
180
|
-
| `busco_insecta`
|
|
181
|
-
| `busco_vertebrata`
|
|
182
|
-
| `pfam`
|
|
183
|
-
| `dfam_curated`
|
|
184
|
-
| `uniprot_sprot`
|
|
185
|
-
| `eggnog`
|
|
182
|
+
| Key | Size | Used by | refgenie asset |
|
|
183
|
+
|---|---:|---|---|
|
|
184
|
+
| `busco_bacteria` | 0.07 GB | busco | — |
|
|
185
|
+
| `busco_insecta` | 0.08 GB | busco | — |
|
|
186
|
+
| `busco_vertebrata` | 0.30 GB | busco | — |
|
|
187
|
+
| `pfam` | 0.50 GB | interproscan | — |
|
|
188
|
+
| `dfam_curated` | 2.00 GB | repeatmasker, earlgrey | — |
|
|
189
|
+
| `uniprot_sprot` | 0.25 GB | braker3 | — |
|
|
190
|
+
| `eggnog` | 8.50 GB | eggnog_mapper | — |
|
|
191
|
+
| `kraken2_standard_8gb` | 7.50 GB | kraken2, bracken | — |
|
|
192
|
+
| `bowtie2_grch38_noalt` | 3.50 GB | bowtie2 | hg38/bowtie2_index |
|
|
193
|
+
| `dbsnp_grch38` | 1.60 GB | gatk4 | hg38/dbsnp |
|
|
194
|
+
| `mills_indels_grch38` | 0.02 GB | gatk4 | hg38/known_indels |
|
|
195
|
+
| `encode_blacklist_grch38` | 0.001 GB | macs3, tobias | hg38/blacklist |
|
|
196
|
+
| `gencode_grch38` | 0.05 GB | star, salmon, subread | hg38/ensembl_gtf |
|
|
197
|
+
|
|
198
|
+
`bioflow db manifest` emits a [refgenie](https://refgenie.databio.org/)-compatible
|
|
199
|
+
JSON mapping `<genome>/<asset>` → catalogued DB, so a lab already on
|
|
200
|
+
refgenie can see which existing assets satisfy a bioflow requirement.
|
|
186
201
|
|
|
187
202
|
---
|
|
188
203
|
|
|
@@ -18,6 +18,7 @@ Subcommands (MVP scope):
|
|
|
18
18
|
bioflow update Run the monthly registry update workflow.
|
|
19
19
|
bioflow ncbi Search / download genomes & proteins from NCBI.
|
|
20
20
|
bioflow recipe List or run a curated end-to-end recipe.
|
|
21
|
+
bioflow provenance Inspect a recipe run's recorded provenance.
|
|
21
22
|
bioflow llm Opt-in LLM companion (explain / diagnose / …).
|
|
22
23
|
bioflow setup First-time LLM backend wizard.
|
|
23
24
|
"""
|
|
@@ -33,6 +34,7 @@ from bioflow.cli import ( # noqa: F401,E402
|
|
|
33
34
|
llm,
|
|
34
35
|
ncbi,
|
|
35
36
|
pipelines,
|
|
37
|
+
provenance,
|
|
36
38
|
recipe,
|
|
37
39
|
setup,
|
|
38
40
|
update,
|
|
@@ -12,7 +12,7 @@ from bioflow.cli._app import app, console
|
|
|
12
12
|
|
|
13
13
|
@app.command("db")
|
|
14
14
|
def db_cmd(
|
|
15
|
-
action: str = typer.Argument(..., help="fetch | list | verify"),
|
|
15
|
+
action: str = typer.Argument(..., help="fetch | list | verify | manifest"),
|
|
16
16
|
name: Optional[str] = typer.Argument(None, help="Database key (see 'bioflow db list')."),
|
|
17
17
|
dest: Path = typer.Option(
|
|
18
18
|
Path("data/references"),
|
|
@@ -21,23 +21,43 @@ def db_cmd(
|
|
|
21
21
|
),
|
|
22
22
|
force: bool = typer.Option(False, "--force", "-f", help="Re-download even if file exists."),
|
|
23
23
|
) -> None:
|
|
24
|
-
"""Fetch
|
|
25
|
-
|
|
24
|
+
"""Fetch / verify / list reference databases, or emit a refgenie manifest.
|
|
25
|
+
|
|
26
|
+
\b
|
|
27
|
+
list Show every catalogued DB, its size, and which tools use it.
|
|
28
|
+
fetch Download a DB into --dest (resumable, size-checked).
|
|
29
|
+
verify Confirm a fetched DB is present (+ MD5 when registered).
|
|
30
|
+
manifest Emit a refgenie-compatible asset manifest (JSON) mapping
|
|
31
|
+
genome/asset → catalogued DB, so labs on refgenie can see
|
|
32
|
+
which existing assets satisfy a bioflow requirement.
|
|
33
|
+
"""
|
|
34
|
+
import json # noqa: PLC0415
|
|
35
|
+
|
|
36
|
+
from bioflow.core.db import ( # noqa: PLC0415
|
|
37
|
+
fetch_db, list_dbs, refgenie_manifest, verify_db,
|
|
38
|
+
)
|
|
26
39
|
|
|
27
40
|
if action == "list":
|
|
28
41
|
rows = list_dbs()
|
|
29
42
|
console.print("\n[bold]Available reference databases:[/]\n")
|
|
30
43
|
for r in rows:
|
|
31
44
|
used = ", ".join(r["used_by"])
|
|
45
|
+
tag = f" [dim]({r['genome']}/{r['asset']})[/]" if r.get("genome") else ""
|
|
32
46
|
console.print(
|
|
33
|
-
f" [cyan]{r['key']:<
|
|
34
|
-
f"used by: {used}"
|
|
47
|
+
f" [cyan]{r['key']:<24}[/] {r['size_gb']:5.2f} GB "
|
|
48
|
+
f"used by: {used}{tag}"
|
|
35
49
|
)
|
|
36
50
|
console.print(f" {r['name']}")
|
|
37
51
|
if r["notes"]:
|
|
38
52
|
console.print(f" [dim]{r['notes']}[/]")
|
|
39
53
|
return
|
|
40
54
|
|
|
55
|
+
if action == "manifest":
|
|
56
|
+
import sys # noqa: PLC0415
|
|
57
|
+
manifest = refgenie_manifest(dest_root=dest)
|
|
58
|
+
sys.stdout.write(json.dumps(manifest, indent=2) + "\n")
|
|
59
|
+
return
|
|
60
|
+
|
|
41
61
|
if not name:
|
|
42
62
|
rprint("[red]Error:[/] 'name' argument required for fetch/verify.")
|
|
43
63
|
raise typer.Exit(code=1)
|