Troubleshoot classification where all ASVs are unassigned?

Hello Qiime Community, :seedling:

I am running qiime2-amplicon-2025.7, using a mock library of fungi to benchmark my ITS amplicon analysis pipeline. This is my first time using Qiime2.

I used RESCRIPt to curate a custom version of the UNITE db v 10 (dev version, including singletons, dynamic) by filtering out duplicates, and undefined species etc.

My custom classifier and curated databases passed the expected RESCRIPt 'cross-validate' evaluate-classifer and evaluate-taxonomy quality controls.

I was even able to use it to classify my mock library ASVs from DADA2 at a certain point, and get back the expected fungi, shown in
custom-UNITEdb_mockITS-classifications_20251125.qza (164.2 KB).
( I realize the featureIDs have SRR numbers merged with an underscore; I got some things confused during my learning curve of how to port DADA2 outputs to qiime2 imports, but I'm ok with it now.)

I have been trying to rerun the classification step more recently, using the same custom classifier, curated UNITE dbs, and mock fungal library, and every time I do it, 100% of the results are unassigned, as in
mockITS_custom-classifier_taxonomy_20251129.qza (201.7 KB).

I cannot figure out what I'm doing differently that would explain the unsuccessful classification (100% unassigned). The custom classifier is identical for both files above, and has worked correctly previously, so I do not think it is the classifier.

I also don't think its my ASVs, since the BLAST results for ASVs that are occurring in the samples are coming back as fungal species known to be present in this mock library, as with this feature table
feature-table_mockITS_20251129_biom_min2.qzv (453.0 KB).

Below are the steps I used to generate the most recent unsuccessful classification.

Can anyone spot a reason why my classification results changed to 100% unassigned?
Thank you for any info or suggestions you may have!

qiime feature-table summarize-plus \
  --i-table feature-table_mockITS_20251129_biom_min2.qza \
  --m-metadata-file sample_metadata_mockITS_20251106.tsv \
  --o-summary feature-table_mockITS_20251129_biom_min2.qzv \
  --o-sample-frequencies feature-table_sample-freqs_mockITS_20251129_biom_min2.qza \
  --o-feature-frequencies feature-table_feature-freqs_mockITS_20251129_biom_min2.qza

qiime feature-table tabulate-seqs \
  --i-data asvIDs_mockITS_min2.qza \
  --m-metadata-file feature-table_feature-freqs_mockITS_20251129_biom_min2.qza \
  --o-visualization asvIDs_mockITS_min2.qzv

qiime feature-classifier classify-sklearn \
  --i-classifier custom-classifier_UNITEdb_20251122.qza \
  --i-reads asvIDs_mockITS_min2.qza \
  --p-confidence 0.98 \
  --o-classification mockITS_custom-classifier_taxonomy_20251129.qza

1 Like

https://view.qiime2.org/provenance/?src=https://forum.qiime2.org/uploads/short-url/oLTQhV9CKyJKCq0zTcb52cNjOs6.qza

Yes, I can confirm that the same classifier is being used on both these analysis and that it's not doing well on that 2nd run of mock fungal samples!

Have you tried the search-based classifiers? :backhand_index_pointing_down:
qiime feature-classifier classify-consensus-blast
and
qiime feature-classifier classify-consensus-vsearch

EDIT: This is a great question and I'm sorry I'm not more help here! Can you post a few ASV sequences from the mock community? Let's see what the database experts recommend!

1 Like

Thanks for your reply! :folded_hands:

Have you tried the search-based classifiers? :backhand_index_pointing_down:

No, that's a good idea. I will give it a try and report back. I am using the same mock fungal library as the DADA2 ITS tutorial, which corresponds to seq library #1 (ITS1) of Bakker MG 2018.

Can you post a few ASV sequences from the mock community?

The input file of my ASVs from the most recent unsuccessful classification of this mock library are here:
asvIDs_mockITS_min2.qza (64.1 KB)

The input file of the same ASVs, but with featureID_SRR fasta headers that had a successful previous classification of fungi:
asvSeqPerSample_mockITS.qza (28.7 KB)

The reference sequences and taxonomy for this fungal mock library (Bakker MG 2018, Suppl Mat 4): Bakker 2018 Suppl Mat 4.txt
Bakker 2018 Suppl Mat 4.txt (23.9 KB)

Thanks again @colinbrislawn! :hot_beverage: I will report back with results of search-based classifier when I can.

1 Like

Here is a result with an alignment-based classifier, with the same ASV input file and curated UNITE dbs that was giving 100% unassigned with my custom UNITE classifier:
mockITS_curatedUNITEdb_BLAST_classification_20251130.qza (216.4 KB)

qiime feature-classifier classify-consensus-blast \
  --i-query asvIDs_mockITS_min2.qza \
  --i-reference-reads sequences_filtered_derep_culled_UNITEdb_20251118.qza \
  --i-reference-taxonomy taxonomy_UNITEdb_noSH_derep_20251118.qza \
  --p-perc-identity 0.9 \
  --p-query-cov 0.9 \
  --o-classification mockITS_curatedUNITEdb_BLAST_classification_20251130.qza \
  --o-search-results mockITS_curatedUNITEdb_BLAST_search-results_20251130.qza

It shows expected fungal taxonomy for many ASVs. I checked that the classifications are found in the mock library. Thanks for any additional info or suggestions to troubleshoot my custom classifier results!

1 Like