Maxime Garcia
08/13/2026, 12:51 PMJonathan Rondeau-Leclaire
08/13/2026, 1:38 PM.command.{err,out,log,trace,run,sh,begin} , which doesn't break the cache), about 200k files. Resuming, I quickly hit 1M again, with the four Dastools steps generating a lot of files, in my caes for 240 samples * 2 assemblers * 5 binners=2400 dastools jobs.
I realise that I could use fewer binners (haven't even used them all!) or just one assembler, but even doing that, a larger project might hit these quotas with more reasonable tool choices (or even space quotas; my scratch stands at 5.6Tb before dastools; mostly bowtie's .bam files fault, but still).
Example (work dirs picked at random):
RENAME_PREDASTOOL
$ ls work/1e/cf7148e4544a679a1244a47113e4d1/ | head
SPAdes-CONCOCTRefined-761_Jinc.0.fa
SPAdes-CONCOCTRefined-761_Jinc.1.fa
SPAdes-CONCOCTRefined-761_Jinc.10.fa
SPAdes-CONCOCTRefined-761_Jinc.11.fa
SPAdes-CONCOCTRefined-761_Jinc.12.fa
SPAdes-CONCOCTRefined-761_Jinc.13.fa
SPAdes-CONCOCTRefined-761_Jinc.14.fa
SPAdes-CONCOCTRefined-761_Jinc.15.fa
SPAdes-CONCOCTRefined-761_Jinc.16.fa
SPAdes-CONCOCTRefined-761_Jinc.17.fa
$ ls work/1e/cf7148e4544a679a1244a47113e4d1/ | wc
88 88 3222
DASTOOL_DASTOOL
ls work/03/524ee2d50fb5d91f18f607081c8d16/
SPAdes-DASTool-754_J90.seqlength SPAdes-DASTool-754_J90_DASTool_summary.tsv SPAdes-DASTool-754_J90_proteins.faa.archaea.scg versions.yml
SPAdes-DASTool-754_J90_DASTool.log SPAdes-DASTool-754_J90_allBins.eval SPAdes-DASTool-754_J90_proteins.faa.bacteria.scg
SPAdes-DASTool-754_J90_DASTool_bins SPAdes-DASTool-754_J90_proteins.faa SPAdes-DASTool-754_J90_proteins.faa.findSCG.b6
SPAdes-DASTool-754_J90_DASTool_contig2bin.tsv SPAdes-DASTool-754_J90_proteins.faa.all.b6 SPAdes-DASTool-754_J90_proteins.faa.scg.candidates.faa
ls work/03/524ee2d50fb5d91f18f607081c8d16/SPAdes-DASTool-754_J90_DASTool_bins/
SPAdes-COMEBinRefined-754_J90.1077_sub.fa SPAdes-COMEBinRefined-754_J90.6346.fa SPAdes-MaxBin2Refined-754_J90.005_sub.fa
SPAdes-COMEBinRefined-754_J90.14186.fa SPAdes-CONCOCTRefined-754_J90.11_sub.fa SPAdes-MetaBAT2Refined-754_J90.11.fa
SPAdes-COMEBinRefined-754_J90.2994.fa SPAdes-CONCOCTRefined-754_J90.22_sub.fa SPAdes-MetaBAT2Refined-754_J90.1_sub.fa
SPAdes-COMEBinRefined-754_J90.3814.fa SPAdes-CONCOCTRefined-754_J90.46_sub.fa SPAdes-MetaBinnerRefined-754_J90.1.fa
SPAdes-COMEBinRefined-754_J90.40.fa SPAdes-MaxBin2Refined-754_J90.003_sub.fa unbinned.fa
RENAME_DASTOOLS
$ ls work/f8/9271613dfbf74be1f5a3c7d1aec5f0/
SPAdes-COMEBinRefined-754_J14.0.fa.gz SPAdes-COMEBinRefined-754_J14.5171.fa.gz SPAdes-COMEBinRefined-754_J14.973.fa.gz
SPAdes-COMEBinRefined-754_J14.10914.fa.gz SPAdes-COMEBinRefined-754_J14.5511.fa.gz SPAdes-CONCOCTRefined-754_J14.21_sub.fa.gz
SPAdes-COMEBinRefined-754_J14.13267.fa.gz SPAdes-COMEBinRefined-754_J14.7396.fa.gz SPAdes-CONCOCTRefined-754_J14.70_sub.fa.gz
SPAdes-COMEBinRefined-754_J14.17146.fa.gz SPAdes-COMEBinRefined-754_J14.8199.fa.gz SPAdes-DASToolUnbinned-754_J14.fa.gz
SPAdes-COMEBinRefined-754_J14.2769_sub.fa.gz SPAdes-COMEBinRefined-754_J14.9517.fa.gz versions.yml
So for a single sample x assembler x binner combination, we have about 170 files produced by Dastools (if we include 4 processes producing 7 .command* files each + versions.yml and .exitcode) where the target output is only 15 fasta files. I've looked at the average over multiple samples and estimate 350,000 files generated by the DASTOOLS processes alone for my 240 samples project.
My thinking is that the _"_easy_"_ thing to do (emphasizing the quotes) would be to wrap certain processes (e.g. the four Dastools processes) in a single subworkflow where these four steps are part of a single job; I would argue that having access to the renamed versions of bins we already have elsewhere is a waste of space, so that seems reasonable. In the example above, that would shrink the number of files generated by DASTOOLS in work/ from ~350,000 to ~60,000 assuming that sample is representative; the work dir would only contain what the RENAME_DASTOOLS dir has.
Metabinner could benefit from a similar treatment too, but it's really not as impactful as dastools.
Other quota gobblers that don't need wrapping, but could have their work/ output cleaned up:
• QUAST_BINS, which generates on average 243 files per bin in work/. I'm estimating from my completed jobs (cause pipeline can't complete) that I'll get about 500 bins, which means about 120k files just for QUAST_BINS.
• and QUAST, generating on average 22 files per assembly (not as bad). Is there a use for all of this, since nearly none of it is being published to results?
Thoughts? holes? questions?
Imposter syndrome × my very short experience with nextflow = I might be missing something obvious that justifies this file overload, but here's hoping I'M on to something...Christian Diener
08/17/2026, 8:20 AMJaime Zolik
08/19/2026, 1:43 PMsuzanna.dickson
08/21/2026, 1:49 PMDaniel Lundin
08/27/2026, 10:37 AMDiego Alvarez Saravia
08/27/2026, 1:14 PM--min_contig_size, but it doesn't work completely as expected. Not every binner supports it, so in practice it is only enforced for MetaBAT2, SemiBin2 and MetaBinner. MaxBin2 falls back to its internal 1000 bp default because we never pass -min_contig_length, CONCOCT has no length filter at all and chunks every contig, and COMEBin has no way to set one either (issue reported: github.com/nf-core/mag/issues/1100). So the binners are not seeing the same contigs, which makes them hard to compare and wastes compute on contigs we are going to discard anyway.
The cleaner solution is to filter the assemblies before feeding them to the binners. There are two options on where, because the read alignment is shared:
1. Right after assembly. The filter applies to everything: binners, assembly QC and the ancient DNA path. Simplest to implement, no BAM handling. Two drawbacks: ancient DNA loses the short fragments, and ALE and DeepMAsED end up evaluating a trimmed assembly. It also shifts the coverage values, since reads that used to map to short contigs get reassigned or go unmapped.
2. Map the full assembly, filter afterwards. Assembly QC and ancient DNA keep everything, and the depths stay exactly as they are today. The cost is that we have to filter the BAMs too, one filter per assembly plus one per BAM.
Filtering only the FASTA and leaving the BAMs untouched is not an option, I tested it: COMEBin dies with a KeyError in gen_cov.py and MetaBinner with an IndexError in component_binning.py, both because a reference present in the BAM is missing from the FASTA. MetaBAT2, MaxBin2, CONCOCT and SemiBin2 tolerate it and return identical bins either way.
Thoughts <!subteam^S08MYEKMNTX>?Diego Alvarez Saravia
08/31/2026, 5:50 PMJonathan Rondeau-Leclaire
09/02/2026, 10:15 PMMegan Justice
09/03/2026, 9:41 PMDiego Alvarez Saravia
09/07/2026, 8:30 AMDaniel Lundin
09/08/2026, 9:08 PMcheckm_download_url param has a default pointing to Zenodo, which didn't resolve when I ran the pipeline. I wasn't going to run CheckM, so this wasn't needed but still stopped the pipeline from running because of an "exists: true" in the schema. This fixes that, with a test case: github.com/nf-core/mag/pull/1109Daniel Lundin
09/09/2026, 11:11 AMJaime Zolik
09/10/2026, 4:46 PM--ancient_dna parameter and pydamage (I am using mag version 5.5.0) . I was wondering if the pydamage filters our contigs that do not pass ancient DNA authentication before assembling bins? I am looking out the output information of my assembled bins and it looks like some of the bins contain no dna degradation patterns. Here is my code:
nf-params.json
{
"input": "\/projects\/standard\/mnievesc\/zolik006\/01_projects\/01_PIALQ\/02_analysis\/03_Metagenomics\/01_analysi$
"outdir": "\/projects\/standard\/mnievesc\/zolik006\/01_projects\/01_PIALQ\/02_analysis\/03_Metagenomics\/01_analys$
"megahit_fix_cpu_1": true,
"spadeshybrid_fix_cpus": 32,
"clip_tool": "adapterremoval",
"save_clipped_reads": true,
"reads_minlength": 30,
"host_fasta": "\/projects\/standard\/mnievesc\/shared\/ref_seqs\/human_g1k_v37.fasta",
"host_fasta_bowtie2index": "\/projects\/standard\/mnievesc\/shared\/ref_seqs",
"save_hostremoved_reads": true,
"gtdbtk_single_job": true,
"gtdb_db": "\/projects\/standard\/mnievesc\/zolik006\/02_refseqs\/10_gtdbtk\/gtdbtk_r232_data.tar.gz",
"prokka_with_compliance": true,
"prokka_compliance_centre": "UMN",
"binning_map_mode": "own",
"min_contig_size": 500,
"save_assembly_mapped_reads": true,
"exclude_unbins_from_postbinning": true,
"run_checkm": true,
"checkm_db": "\/projects\/standard\/mnievesc\/zolik006\/02_refseqs\/09_metaWARP\/CheckM_DB",
"refine_bins_dastool": true,
"refine_bins_dastool_threshold": 0.299999999999999988897769753748434595763683319091796875,
"postbinning_input": "refined_bins_only",
"run_gunc": true,
"gunc_db": "\/projects\/standard\/mnievesc\/zolik006\/02_refseqs\/11_gunc\/gunc_db_progenomes2.1.dmnd",
"ancient_dna": true
}
I ran the same code without the --ancient_dna and it seems to make the same contigs and bins as when I had the parameter on. So does this parameter affect downstream results, or just produce information that the user can then go through and determine if bins contain authentic aDNA?Jaime Zolik
09/11/2026, 12:29 PMHARSHITA SRIVASTAVA
09/14/2026, 4:20 AMnf-core/mag run.
I was running the pipeline on a set of samples, but 4 samples were repeatedly failing during the SPAdes step due to memory limitations. I therefore removed those 4 samples from my samplesheet and tried to restart the pipeline.
However, instead of continuing from the completed steps using the existing cache, Nextflow appears to be starting the pipeline from the beginning. I really want to avoid rerunning all the completed steps, as the pipeline has already been running for a long time.
What would be the correct way to remove these 4 problematic samples and resume the existing run with only the remaining samples, while retaining the cached results from the previous run?
I am using -resume, and I have not deleted the work/ directory.
Any advice on the correct approach would be greatly appreciated. Thank you!Christian Diener
09/14/2026, 6:53 AMMaxime Garcia
09/14/2026, 4:11 PMFull test notifications
10/07/2026, 9:49 AMScript compilation error
- file : /.nextflow/assets/.repos/nf-core/mag/clones/170131e6dc670f20a0bd79a78ccfd3f8dbe48547/main.nf
- cause: The LHS of an assignment should be a variable or a field accessing expression @ line 61, column 28.
longreads_min_quality: Integer?
^
1 error Command Line
nextflow run '<https://github.com/nf-core/mag>' -name distraught_thompson -params-file '<https://api.cloud.seqera.io/ephemeral/cJ0JD9EADsbX_DkIRTZ-CA.json>' -with-tower -r dev -profile test_full Oct 7, 2026 at 9:49 AMFull test notifications
10/08/2026, 8:09 AMScript compilation error
- file : /.nextflow/assets/.repos/nf-core/mag/clones/7fbb2153e338225380fe64d22148de7a044de899/main.nf
- cause: The LHS of an assignment should be a variable or a field accessing expression @ line 61, column 28.
longreads_min_quality: Integer?
^
1 error Command Line
nextflow run '<https://github.com/nf-core/mag>' -name silly_descartes -params-file '<https://api.cloud.seqera.io/ephemeral/kCmhT2Qvldu0iTuwrXNwew.json>' -with-tower -r dev -profile test_full Oct 8, 2026 at 8:09 AMJonathan Rondeau-Leclaire
10/13/2026, 10:45 AMThomas Weber
10/13/2026, 5:02 PMDaniel Lundin
10/15/2026, 7:45 AMJonathan Rondeau-Leclaire
10/15/2026, 1:30 PMJim Downie
10/15/2026, 1:31 PMJonathan Rondeau-Leclaire
10/16/2026, 10:29 AMconf/containers_*.config should I have something equivalent to process { withName: 'PROKKA' { conda = 'modules/nf-core/prokka/.conda-lock/linux_amd64-bd-f21b98bcef4c3579_1.txt' } } for bakta?
• Not sure what the multiqc config numbers mean for column plcaement. Is it just like a convention for column order by increasing number?
• prokka has a -fast mode that essentially skips CDS/product searching. An equivalent param in Bakta is --skip-cds but I'm not sure if for the pipeline bakta_fast_mode is appropriate, let me know what you think.James Fellows Yates
10/16/2026, 10:48 AMDiego Alvarez Saravia
10/16/2026, 11:32 AMJonathan Rondeau-Leclaire
10/16/2026, 12:52 PMClaudio Donati
11/03/2026, 4:57 PM