Summary
We've audited all 113 subworkflows and categorized them by complexity. A number of subworkflows are thin wrappers around 1-2 tools and don't meet the bar of what a subworkflow should provide (3+ tools or reasonably complex channel operations/functions). Additionally, several utility subworkflows contain pure functions that should migrate to plugins.
This issue is for community discussion on which to remove, consolidate, or migrate.
Complexity breakdown
| Category |
Count |
| TRIVIAL (1 tool, no logic) |
2 |
| SIMPLE (1-2 tools, minimal logic) |
27 |
| MODERATE (3+ tools or complex ops) |
52 |
| COMPLEX (3+ tools + complex logic) |
30 |
| Empty/placeholder |
2 |
MODERATE and COMPLEX subworkflows are considered justified and are not listed here.
TRIVIAL — Strong removal candidates
These are single-tool wrappers with no meaningful added logic:
Empty/placeholder directories — Remove
SIMPLE — Review for removal or consolidation
Single tool + sort/stats subworkflow (repeated pattern)
These all follow the same pattern: one aligner call + BAM_SORT_STATS_SAMTOOLS. Could potentially be consolidated into a single parameterized subworkflow, or users can call the aligner module + sort/stats subworkflow directly.
2 tools, linear pipeline (A → B)
These are simple sequential tool calls with basic channel wiring. Users could call the two modules directly.
Minimal logic wrappers
Sort/dedup + stats combos
Utility subworkflows — Plugin migration candidates
These contain pure functions/logic with no tool invocations. Their functions should move to Nextflow plugins:
(utils_nfschema_plugin and utils_nfvalidation_plugin are already plugin-based.)
Guiding principles
- Subworkflows should have 3+ tools or reasonably complex channel operations/functions
- Pure functions should live in plugins, not subworkflows
- Simple linear A→B pipelines can be called as two modules directly in a workflow
- Repeated patterns (align + sort/stats) could be consolidated
Next steps
Community feedback on each item above. Please comment with 👍/👎 or discussion on specific subworkflows you'd like to keep/remove/consolidate.
Summary
We've audited all 113 subworkflows and categorized them by complexity. A number of subworkflows are thin wrappers around 1-2 tools and don't meet the bar of what a subworkflow should provide (3+ tools or reasonably complex channel operations/functions). Additionally, several utility subworkflows contain pure functions that should migrate to plugins.
This issue is for community discussion on which to remove, consolidate, or migrate.
Complexity breakdown
MODERATE and COMPLEX subworkflows are considered justified and are not listed here.
TRIVIAL — Strong removal candidates
These are single-tool wrappers with no meaningful added logic:
mafft_align— wrapper around MAFFT_ALIGN with empty optional inputsvcf_annotate_ensemblvep— wrapper around ENSEMBLVEP_VEP with a join for vcf+tbi outputEmpty/placeholder directories — Remove
multiple_impute_glimpse2— README only, no main.nfpreprocess_rnaseq— README only, no main.nfSIMPLE — Review for removal or consolidation
Single tool + sort/stats subworkflow (repeated pattern)
These all follow the same pattern: one aligner call +
BAM_SORT_STATS_SAMTOOLS. Could potentially be consolidated into a single parameterized subworkflow, or users can call the aligner module + sort/stats subworkflow directly.fastq_align_bowtie2— Bowtie2 + BAM_SORT_STATS_SAMTOOLSfastq_align_bwa— BWA MEM + BAM_SORT_STATS_SAMTOOLSfastq_align_chromap— Chromap + BAM_SORT_STATS_SAMTOOLSfastq_align_hisat2— HISAT2 + BAM_SORT_STATS_SAMTOOLSfastq_align_star— STAR + 2x BAM_SORT_STATS_SAMTOOLS (genome + transcriptome)2 tools, linear pipeline (A → B)
These are simple sequential tool calls with basic channel wiring. Users could call the two modules directly.
bam_cnv_wisecondorx— WISECONDORX_CONVERT + PREDICTbam_docounts_contamination_angsd— ANGSD doCounts + contaminationbam_methyldackel— MethylDackel mbias + extractbam_stringtie_merge— StringTie assembly + mergebedgraph_bedclip_bedgraphtobigwig— bedClip + bedGraphToBigWigcache_download_ensemblvep_snpeff— download VEP + SnpEff cachesvcf_annotate_snpeff— SnpEff annotate + tabixfastq_fetch_clean_hostile— fetch reference + clean with hostilefastq_extract_kraken_krakentools— Kraken extract readsfastq_download_prefetch_fasterqdump_sratools— prefetch + fasterq-dumph5ad_removebackground_barcodes_cellbender_anndata— CellBender + AnnDatafastq_ngscheckmate— patterngenerator + vafncmfastq_index_filter_deacon— Deacon index + filterfasta_clean_fcs— FCSGX_RUNGX + FCSADAPTOR_CLEANfasta_build_add_kraken2— Kraken2 add + buildbam_ngscheckmate— BCFtools mpileup + vafncmfastq_contam_seqtk_kraken— SeqTK subsample + Kraken2Minimal logic wrappers
bed_scatter_bedtools— 1 tool (BEDTOOLS_SPLIT) with map + transposefastq_decontaminate_deacon_hostile— pure routing to 2 other subworkflows, no toolsSort/dedup + stats combos
bam_sort_stats_samtools— sort + index + BAM_STATS_SAMTOOLSbam_markduplicates_picard— MarkDuplicates + index + stats subworkflowbam_dedup_stats_samtools_umicollapse— UMI-collapse dedup + index + stats subworkflowquantify_pseudo_alignment— Salmon/Kallisto quant + tximport subworkflowUtility subworkflows — Plugin migration candidates
These contain pure functions/logic with no tool invocations. Their functions should move to Nextflow plugins:
utils_nextflow_pipeline— version check, params dumputils_nfcore_pipeline— 45+ custom utility functionsutils_annotation_cache— cache path resolution logicutils_references— reference file resolution with custom functions(
utils_nfschema_pluginandutils_nfvalidation_pluginare already plugin-based.)Guiding principles
Next steps
Community feedback on each item above. Please comment with 👍/👎 or discussion on specific subworkflows you'd like to keep/remove/consolidate.