Trying to understand `ids_to_keep` must contain at least one ID. error

Hello, first off, I’m brand new to QIIME and amplicon analysis. I’m having an error come up when importing pre-processed fastq files into QIIME and then making a feature table.
I have partial 18S rRNA gene sequences generated by a 2×250-bp paired-end MiSeq. The files I have are already demultiplexed and the paired-ends were assembled. I started to follow the imports for “fastq” manifest formats (https://docs.qiime2.org/2020.2/tutorials/importing/#sequence-data-with-sequence-quality-information-i-e-fastq). After this I essentially followed the same commands as is in the “Moving Pictures” tutorial (https://docs.qiime2.org/2020.2/tutorials/moving-pictures/) using the Deblur workflow and a trim length of 120 (it still can work for my data). Then I try to make a feature table and I get an error. Here is what I did and the error:

(qiime2-2020.2) [kpd58@slepner013 ~]$ qiime tools import \
>   --type 'SampleData[SequencesWithQuality]' \
>   --input-path /home/kpd58/Rain-amplicons/18S/se-33-manifest.tsv \
>   --output-path single-end-demux.qza \
>   --input-format SingleEndFastqManifestPhred33V2
Imported /home/kpd58/Rain-amplicons/18S/se-33-manifest.tsv as SingleEndFastqManifestPhred33V2 to single-end-demux.qza
(qiime2-2020.2) [kpd58@slepner013 ~]$ qiime demux summarize \
>  --i-data single-end-demux.qza \
>  --o-visualization demux.qzv
Saved Visualization to: demux.qzv
(qiime2-2020.2) [kpd58@slepner013 ~]$ qiime quality-filter q-score \
>  --i-demux single-end-demux.qza \
>  --o-filtered-sequences demux-filtered.qza \
>  --o-filter-stats demux-filter-stats.qza
Saved SampleData[SequencesWithQuality] to: demux-filtered.qza
Saved QualityFilterStats to: demux-filter-stats.qza
(qiime2-2020.2) [kpd58@slepner013 ~]$ qiime deblur denoise-16S \
>    --i-demultiplexed-seqs single-end-demux.qza \
>  --p-trim-length 120 \
>  --o-representative-sequences rep-seqs.qza \
>    --o-table table.qza \
>    --p-sample-stats \
>    --o-stats deblur-stats.qza
Saved FeatureTable[Frequency] to: table.qza
Saved FeatureData[Sequence] to: rep-seqs.qza
Saved DeblurStats to: deblur-stats.qza
(qiime2-2020.2) [kpd58@slepner013 ~]$ qiime feature-table summarize \
>  --i-table table.qza \
>  --o-visualization table.qzv \
>  --m-sample-metadata-file /home/kpd58/Rain-amplicons/18S/se-33-manifest.tsv
Plugin error from feature-table:

  `ids_to_keep` must contain at least one ID.

Debug info has been saved to /tmp/qiime2-q2cli-err-lu7xuy_k.log

The debug info is:

/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/q2_feature_table/_summarize/_visualizer.py:122: FutureWarning: The signature of `Series.to_csv` was aligned to that of `DataFrame.to_csv`, and argument 'header' will change its default value from False to True: please pass an explicit value to suppress this warning.
  os.path.join(output_dir, 'sample-frequency-detail.csv'))
/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/q2_feature_table/_summarize/_visualizer.py:124: FutureWarning: The signature of `Series.to_csv` was aligned to that of `DataFrame.to_csv`, and argument 'header' will change its default value from False to True: please pass an explicit value to suppress this warning.
  os.path.join(output_dir, 'feature-frequency-detail.csv'))
Traceback (most recent call last):
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/q2cli/commands.py", line 328, in __call__
    results = action(**arguments)
  File "</home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/decorator.py:decorator-gen-326>", line 2, in summarize
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/qiime2/sdk/action.py", line 245, in bound_callable
    output_types, provenance)
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/qiime2/sdk/action.py", line 452, in _callable_executor_
    ret_val = self._callable(output_dir=temp_dir, **view_args)
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/q2_feature_table/_summarize/_visualizer.py", line 156, in summarize
    sample_frequencies
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/q2_feature_table/_summarize/_vega_spec.py", line 16, in vega_spec
    sample_frequencies.index)
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/qiime2/metadata/metadata.py", line 728, in filter_ids
    ids_to_keep)
  File "/home/kpd58/miniconda3/envs/qiime2-2020.2/lib/python3.6/site-packages/qiime2/metadata/metadata.py", line 184, in _filter_ids_helper
    raise ValueError("`ids_to_keep` must contain at least one ID.")
ValueError: `ids_to_keep` must contain at least one ID.

Any help or guidance would be very appreciated. Thank you!!

Hi @kevin_dillon,

The error means that, after chimera fitlering, you don't have any sequences left. (Its a little bit cryptic).

Since you're doing 18s, I think this is your problem:

Deblur uses a positive filter and your sequences will not pass that filter because they're not 16s. You can either try qiime deblur denoise-other, or perhaps Dada2 where chimera filtering is a second step would work better for you.

Best,
Justine

1 Like

Dear Justine:
Thank you very much!!! I’ll play around with it.
Thank you,
Kevin

1 Like