Demux summarize broken after upgrading from 2025.7 to 2025.10

Demux summarize broken after upgrading to 2025.10

Hi everyone,

I hope this is the correct forum to post. I am experiencing some unexpected behaviour after upgrading QIIME from 2025.7 to 2025.10. The summarize command from the demux plugin does no longer work in a QIIME 2025.10 environment but works perfectly fine for 2025.7.

Here is the command I run:

qiime demux summarize \
    --i-data $data_dir/raw/demux_paired_end.qza \
    --o-visualization $data_dir/processed/demux_paired_end.qzv \
    --verbose 

where data_dir points to my data directory and demux_paired_end.qza contains paired-end reads.

qiime tools peek $data_dir/raw/demux_paired_end.qza
UUID:        3e48be7c-af27-4f87-b7d2-2726aca3b65d
Type:        SampleData[PairedEndSequencesWithQuality]
Data format: SingleLanePerSamplePairedEndFastqDirFmt

You can download the data as follows:

wget -O "$data_dir/raw/demux_paired_end.qza" \
    "https://polybox.ethz.ch/index.php/s/zi5ZBrBwcn7SYof/download/demux-paired-end.qza"

Error message

This is the error message that I receive when running the command in the 2025.10 environment:

/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/emperor/__init__.py:9: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
Traceback (most recent call last):
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/plugin/model/directory_format.py", line 187, in validate
    self._validate_(level)
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/q2_types/per_sample_sequences/_formats.py", line 371, in _validate_
    validate_paired_ends_equal_record_count(
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/q2_types/per_sample_sequences/_util.py", line 394, in validate_paired_ends_equal_record_count
    raise ValidationError(
qiime2.core.exceptions.ValidationError: A pair of paired-end files were found not to have the same number of records. /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data/sample_5_S771_L001_R1_001.fastq.gz has 112892 records. /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data/sample_51_S266_L001_R1_001.fastq.gz has 14284 records.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/q2cli/commands.py", line 567, in __call__
    results = self._execute_action(
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/q2cli/commands.py", line 639, in _execute_action
    results = action(**arguments)
  File "<decorator-gen-927>", line 2, in summarize
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/sdk/action.py", line 262, in bound_callable
    self.signature.transform_and_add_callable_args_to_prov(
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/core/type/signature.py", line 401, in transform_and_add_callable_args_to_prov
    self._transform_and_add_input_to_prov(
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/core/type/signature.py", line 434, in _transform_and_add_input_to_prov
    transformed_input = _input._view(spec.view_type, recorder)
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/sdk/result.py", line 747, in _view
    result = transformation(self._archiver.data_dir)
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/core/transform.py", line 68, in transformation
    self.validate(view, level=validate_level)
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/core/transform.py", line 143, in validate
    view.validate(level)
  File "/Users/<username>/miniconda3/envs/microbEvolve/lib/python3.10/site-packages/qiime2/plugin/model/directory_format.py", line 189, in validate
    raise ValidationError(
qiime2.core.exceptions.ValidationError: /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data is not a(n) SingleLanePerSamplePairedEndFastqDirFmt:

A pair of paired-end files were found not to have the same number of records. /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data/sample_5_S771_L001_R1_001.fastq.gz has 112892 records. /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data/sample_51_S266_L001_R1_001.fastq.gz has 14284 records.

Plugin error from demux:

  /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data is not a(n) SingleLanePerSamplePairedEndFastqDirFmt:

  A pair of paired-end files were found not to have the same number of records. /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data/sample_5_S771_L001_R1_001.fastq.gz has 112892 records. /var/folders/t2/68ltn7ds36523gbx2tkkj4zh0000gn/T/qiime2/<username>/data/3e48be7c-af27-4f87-b7d2-2726aca3b65d/data/sample_51_S266_L001_R1_001.fastq.gz has 14284 records.

See above for debug info.

In the 2025.7 environment, the command runs fine and produces the expected visualization.

/Users/<username>/miniconda3/envs/microbEvolve07/lib/python3.10/site-packages/q2_demux/_summarize/_visualizer.py:11: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
Saved Visualization to: ../data/processed/demux_paired_end.qzv

For both versions, I have installed QIIME in a conda environment using the installation instructions for Apple Silicon from the amplicon docs.

QIIME 2025.7

$ qiime info

System versions
Python version: 3.10.14
QIIME 2 release: 2025.7
QIIME 2 version: 2025.7.0
q2cli version: 2025.7.0

Installed plugins
alignment: 2025.7.0
composition: 2025.7.0
cutadapt: 2025.7.0
dada2: 2025.7.0
deblur: 2025.7.0
demux: 2025.7.0
diversity: 2025.7.0
diversity-lib: 2025.7.0
emperor: 2025.7.0
feature-classifier: 2025.7.0
feature-table: 2025.7.0
fragment-insertion: 2025.7.0
longitudinal: 2025.7.0
metadata: 2025.7.0
phylogeny: 2025.7.0
quality-control: 2025.7.0
quality-filter: 2025.7.0
rescript: 2025.7.0
sample-classifier: 2025.7.0
stats: 2025.7.0
taxa: 2025.7.0
types: 2025.7.0
vizard: 0.0.1.dev0
vsearch: 2025.7.0

QIIME 2025.10

$ qiime info

System versions
Python version: 3.10.14
QIIME 2 release: 2025.10
QIIME 2 version: 2025.10.1
q2cli version: 2025.10.1

Installed plugins
alignment: 2025.10.0
boots: 2025.10.1
composition: 2025.10.0
cutadapt: 2025.10.0
dada2: 2025.10.0
deblur: 2025.10.0
demux: 2025.10.0
diversity: 2025.10.1
diversity-lib: 2025.10.0
emperor: 2025.10.0
feature-classifier: 2025.10.0
feature-table: 2025.10.0
fondue: 2025.10.0
fragment-insertion: 2025.10.0
kmerizer: 2025.10.1
longitudinal: 2025.10.0
metadata: 2025.10.0
phylogeny: 2025.10.0
quality-control: 2025.10.0
quality-filter: 2025.10.0
rescript: 2025.10.1
sample-classifier: 2025.10.0
stats: 2025.10.0
taxa: 2025.10.0
types: 2025.10.0
vizard: 2025.10.0
vsearch: 2025.10.0

3 Likes

Hi @flurin-sch
Welcome to the QIIME 2 Forum :qiime2:.

I was able to confirm this error in 2025.10 (the command ran successfully in 2025.7). Thank you for pointing this issue out.

It looks like our pair-end validator thinks sample_5_S771_L001_R1_001.fastq.gz and sample_51_S266_L001_R1_001.fastq.gz are related samples, but they are not. (Sample 5 vs Sample 51).

One follow up question:
Are you able to import this data in QIIME 2 using 2025.10?

I'm going to look into the fix for this bug and I will keep you updated. For now, my best advice is to use 2025.7 to summarize your demux. Sorry for the workaround.

Again, thanks for pointing this issue out.

3 Likes

Hi Chloe,

Yes, importing the data with in 2025.10 with

qiime tools import \
 --type 'SampleData[PairedEndSequencesWithQuality]' \
 --input-path MANIFEST \
 --output-path demux_paired_end.qza \
 --input-format PairedEndFastqManifestPhred33V2

works fine. I exported the data from the artifact and then adjusted the MANIFEST file to point to the fastq files.

I just ran the summarize tool again on the new demux artifact, and interestingly it worked fine!

The original demux artifact that I have made available above was created in QIIME 2024.10. The jump from 2024.10 to 2025.7 seems to work for demux summarize, but 2025.10 seems to be incompatible.

Hope this helps.

1 Like

Thanks @flurin-sch

I have fixed the issue in this pull request here: BUG: fix the error that says sample 5 and sample 51 are the same. by cherman2 · Pull Request #378 · qiime2/q2-types · GitHub
Since this bug isn't critical, I expect it will be merged and fixed in the next release (as opposed to an emergency release patch).

Thanks for pointing this out!

2 Likes

Hi,

I just want to mention that I am running into a similar error on import. I tried to import a CasavaOneEightSingleLanePerSampleDirFmt format dataset that successfully imported with a previous version of q2, but which with 2025.10 errors due to e.g. S11_* and S118_* being considered the same sample but having different numbers of reads.
Importing as PairedEndFastqManifestPhred33V2 fixed the issue, but I thought it would be worth noting that this issue is found at the import level if you don’t use the manifest option.

2 Likes

Thanks @mcmk3 - this makes sense based on the source of the issue. @cherman2 fixed this bug, and the fix will be included in the 2026.1 (January) release of QIIME 2. Sorry for the trouble, but glad you found a work-around!

1 Like

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.