q2-assembly assemble-spades failing

We are running assemble-spades in QIIME and getting an error. We are attempting to process Illumina metagenome data, we can't share this data, but we were able to reproduce the error with the moving pictures data. We've tried this on a couple different computers and gotten the same results. It seems to stem from the version of spades (3.15.2) that is installed with the QIIME distribution. There is an issue in the spades repo here: Upgrade pyyaml to support Python 3.10 · Issue #863 · ablab/spades · GitHub

Commands to reproduce:

wget https://docs.qiime2.org/2024.10/data/tutorials/moving-pictures/demux.qza
qiime assembly assemble-spades --i-seqs demux.qza --output-dir assemble_out --p-debug --verbose

Error:

Running external command line application(s). This may print messages to stdout and/or stderr.
The command(s) being run are below. These commands cannot be manually re-run as they will depend on temporary files that no longer exist.

Command: spades.py -s /var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/qiime2/jhch/data/00c495ee-deb5-4da5-988f-fb86a596f16f/data/L1S105_9_L001_R1_001.fastq.gz -o /var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/tmpmfiqsnuo/results --threads 1 --memory 250 -k auto --cov-cutoff off --debug



== Warning ==  No assembly mode was specified! If you intend to assemble high-coverage multi-cell/isolate data, use '--isolate' option.


Command line: /Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/bin/spades.py       -s      /var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/qiime2/jhch/data/00c495ee-deb5-4da5-988f-fb86a596f16f/data/L1S105_9_L001_R1_001.fastq.gz       -o      /var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/tmpmfiqsnuo/results    --threads       1       --memory        250     -k      auto    --cov-cutoff    off     --debug

System information:
  SPAdes version: 3.15.2
  Python version: 3.10.14
  OS: macOS-15.2-x86_64-i386-64bit

Output dir: /var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/tmpmfiqsnuo/results
Mode: read error correction and assembling
Debug mode is turned ON

Dataset parameters:
  Standard mode
  For multi-cell/isolate data we recommend to use '--isolate' option; for single-cell MDA data use '--sc'; for metagenomic data use '--meta'; for RNA-Seq use '--rna'.
  Reads:
Traceback (most recent call last):
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/bin/spades.py", line 651, in <module>
    main(sys.argv)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/bin/spades.py", line 591, in main
    print_params(log, log_filename, command_line, args, cfg)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/bin/spades.py", line 327, in print_params
    print_used_values(cfg, log)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/bin/spades.py", line 117, in print_used_values
    dataset_data = pyyaml.load(open(cfg["dataset"].yaml_filename))
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/share/spades/pyyaml3/__init__.py", line 72, in load
    return loader.get_single_data()
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/share/spades/pyyaml3/constructor.py", line 37, in get_single_data
    return self.construct_document(node)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/share/spades/pyyaml3/constructor.py", line 46, in construct_document
    for dummy in generator:
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/share/spades/pyyaml3/constructor.py", line 398, in construct_yaml_map
    value = self.construct_mapping(node)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/share/spades/pyyaml3/constructor.py", line 204, in construct_mapping
    return super().construct_mapping(node, deep=deep)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/share/spades/pyyaml3/constructor.py", line 126, in construct_mapping
    if not isinstance(key, collections.Hashable):
AttributeError: module 'collections' has no attribute 'Hashable'
Traceback (most recent call last):
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2_assembly/spades/spades.py", line 85, in _process_sample
    run_command(cmd, verbose=True)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2_assembly/_utils.py", line 38, in run_command
    subprocess.run(cmd, check=True)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/subprocess.py", line 526, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['spades.py', '-s', '/var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/qiime2/jhch/data/00c495ee-deb5-4da5-988f-fb86a596f16f/data/L1S105_9_L001_R1_001.fastq.gz', '-o', '/var/folders/j6/rbf5z_vj5r5d___y59xmcb2m0000gn/T/tmpmfiqsnuo/results', '--threads', '1', '--memory', '250', '-k', 'auto', '--cov-cutoff', 'off', '--debug']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2cli/commands.py", line 530, in __call__
    results = self._execute_action(
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2cli/commands.py", line 602, in _execute_action
    results = action(**arguments)
  File "<decorator-gen-19>", line 2, in assemble_spades
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/qiime2/sdk/action.py", line 299, in bound_callable
    outputs = self._callable_executor_(
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/qiime2/sdk/action.py", line 570, in _callable_executor_
    output_views = self._callable(**view_args)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2_assembly/spades/spades.py", line 202, in assemble_spades
    return _assemble_spades(
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2_assembly/spades/spades.py", line 161, in _assemble_spades
    _process_sample(samp, fwd, rev, common_args, result)
  File "/Users/jhch/miniconda3/envs/qiime2-metagenome-2024.10/lib/python3.10/site-packages/q2_assembly/spades/spades.py", line 87, in _process_sample
    raise Exception(
Exception: An error was encountered while running SPAdes, (return code 1), please inspect stdout and stderr to learn more.

Plugin error from assembly:

  An error was encountered while running SPAdes, (return code 1), please inspect stdout and stderr to learn more.

See above for debug info.

Installation:

CONDA_SUBDIR=osx-64 conda env create -n qiime2-amplicon-2024.10 --file https://data.qiime2.org/distro/amplicon/qiime2-amplicon-2024.10-py310-osx-conda.yml
conda activate qiime2-amplicon-2024.10
conda config --env --set subdir osx-64
1 Like

Hey @John_Chase,

thanks for reporting the issue! According to the GitHub issue you linked it would seem that updating the SPAdes version should resolve the problem - we will try to do that and will get back to you once we confirm that everything works. It will, unfortunately, not happen before January :cry:

In the meantime, Happy Holidays! :christmas_tree:

Cheers,
Michal

2 Likes

Hey @John_Chase,

Thanks for your patience with this! SPAdes has been bumped to 4.0.0 in our development environments, which should fix the issue. You can use one of the environment files below (depending on your OS) that contains this update:

OSX

https://raw.githubusercontent.com/qiime2/distributions/refs/heads/dev/2025.4/moshpit/passed/qiime2-moshpit-macos-latest-conda.yml

Linux

https://raw.githubusercontent.com/qiime2/distributions/refs/heads/dev/2025.4/moshpit/passed/qiime2-moshpit-ubuntu-latest-conda.yml

Let us know if you run into any issues!

4 Likes

Great, Spades is working in that environment!

2 Likes