Plugin error from quality-control: min() arg is an empty sequence

Hi,

I'm trying to evaluate my sequencing run with a mock community (ZymoBIOMICS Microbial Community Standard, D6300), following the "Evaluate accuracy" part of Fungal ITS analysis tutorial.

I run QIIME 2 (q2cli version 2021.2.0) on our university HPC (CentOS Linux release 7.8.2003).

The series commands:

biom convert -i STD_expected_taxa.tsv -o STD_expected_taxa.biom --table-type="OTU table" --to-json

qiime tools import --type FeatureTable[RelativeFrequency] --input-path STD_expected_taxa.biom --input-format BIOMV100Format --output-path STD_expected_taxa.qza

qiime feature-classifier classify-sklearn --i-reads STD_dada2_rep_set.qza --i-classifier silva-138-99-515-806-nb-classifier.qza --o-classification STD_dada2_rep_set_tax.qza --p-n-jobs -1

qiime taxa collapse --i-table STD_dada2_table.qza --i-taxonomy STD_dada2_rep_set_tax.qza --p-level 7 --o-collapsed-table STD_dada2_table_collapsed.qza

qiime feature-table relative-frequency --i-table STD_dada2_table_collapsed.qza --o-relative-frequency-table STD_dada2_table_relativeFreq.qza

qiime quality-control evaluate-composition --i-expected-features STD_expected_taxa.qza --i-observed-features STD_dada2_table_relativeFreq.qza --o-visualization STD_evaluation.qzv

All executions appear ok except for the last one, the error:

Plugin error from quality-control:

min() arg is an empty sequence

Debug info has been saved to /scratch/32583666/qiime2-q2cli-err-o1jvtqw2.log

And the content of /scratch/32583666/qiime2-q2cli-err-o1jvtqw2.log

/services/tools/qiime2/2021.2/lib/python3.6/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be data, and passing other arguments without an explicit keyword will result in an error or misinterpretation.
FutureWarning
Traceback (most recent call last):
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/q2cli/commands.py", line 329, in __call__
results = action(**arguments)
File "", line 2, in evaluate_composition
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/qiime2/sdk/action.py", line 245, in bound_callable
output_types, provenance)
File "/services/tools/qiime2/2021.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 "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/q2_quality_control/quality_control.py", line 84, in evaluate_composition
plot_observed_features_ratio=plot_observed_features_ratio)
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/q2_quality_control/_utilities.py", line 127, in _evaluate_composition
results, xval='level', yvals=yvals, palette=palette)
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/q2_quality_control/_utilities.py", line 280, in _pointplot_multiple_y
sns.pointplot(data=results, x=xval, y=score, ax=axes, color=color)
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/seaborn/_decorators.py", line 46, in inner_f
return f(**kwargs)
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/seaborn/categorical.py", line 3375, in pointplot
orient, color, palette, errwidth, capsize)
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/seaborn/categorical.py", line 1657, in init
self.establish_colors(color, palette, 1)
File "/services/tools/qiime2/2021.2/lib/python3.6/site-packages/seaborn/categorical.py", line 319, in establish_colors
lum = min(light_vals) * .6
ValueError: min() arg is an empty sequence

p.s. the classifier I used: https://data.qiime2.org/2021.2/common/silva-138-99-515-806-nb-classifier.qza

Any help is much appreciated! Thanks!

/Ding

STD_dada2_rep_set_tax.qzv (1.2 MB) STD_dada2_rep_set.qza (11.1 KB) STD_dada2_table.qza (12.4 KB) STD_expected_taxa.tsv (1013 Bytes)

1 Like

Hi Ding,

Hope you’re doing well! The Fungal ITS analysis tutorial you are following uses the QIIME 2 2018.11 environment. I haven’t examined your commands in great detail yet, but that’s the first thing that stands out to me here. I’d recommend creating a separate QIIME 2 environment that uses our 2018.11 release - Nicholas Bokulich (the tutorial author) mentions that this tutorial may not work on earlier or later versions.

Let me know if you are still running into issues using this version of QIIME 2, and we’ll take a closer look!

1 Like

Hi @lizgehret, thanks a lot for your help!

So I managed to find the problem when trying the v.2018.11, it turned out that I used the wrong name "STD" for the "Mock" which is in my STD_dada2_table.qza. So after fixing that both v.2018.11 and v.2021.2 run successfully without error.

However, I am a bit confused about the result and not sure how to interpret it. The TAR and TDR are all zero for all levels (isn't it bad?), while the taxa are actually recovered (six genus-level, one species-level and one family-level, see the "Mock_evaluate_table.png"). The abundance is of course not very accurate, but I wouldn't say too surprising, right?

Thanks a again for the help!

/Ding
STD_dada2_rep_set_tax_barplot.qzv (381.5 KB) STD_dada2_rep_set_tax.qzv (1.2 MB) STD_dada2_table.qza (12.4 KB) STD_dada2_table.qzv (378.9 KB) STD_evaluation_q2.2018.11.qzv (355.5 KB) STD_evaluation_q2.2021.2.qzv (412.8 KB) STD_expected_taxa.tsv (1014 Bytes)

@dinhe878 your table/files are very useful and give the reason clearly: the labels need to match at each rank tested. Imprecise matching is not allowed, and this includes rank labels (e.g., “g__”). So this means that the exact same reference database version must be used. It looks like the rank label “k__” is used in the expected, but “d__” in the observed sequences. So you must have used a different reference database for each, but you could also manually fix the labels in your “expected taxa” file so that they use the same naming conventions.

Good luck!

2 Likes

Thanks a lot @Nicholas_Bokulich now it works as expected!

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