<p>My advice is to go for <a href="https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2182-6" rel="nofollow noreferrer">Fiannaca et al. 2018</a> or similar and steer clear of the DADA2 classification.</p>

<p>My reasoning, </p>

<p>... my criticism of the DADA2 assignments is the reliance on an old machine learning algorithm (naive Bayes). In its favour the taxonomic assignment looks broad. Modern ML will never rely on a single ML method (e.g. lasso regression, SVM, k-means), the only possible exception is "Random Forests"/decision trees, which are popular - but even then. Naïve Bayes (which is not to be confused with 'Bayesian') was popular about a decade ago, which makes sense with the publication cited. The problem is that ML methods give different results.</p>

<p>In its favour it does look well trained, but you would need to understand the distribution used in the training. </p>

<hr>

<p>Again my advice is to go for a deep learning solution, such as <a href="https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2182-6" rel="nofollow noreferrer">Fiannaca et al. 2018</a> which is trained on bacterial 16s.  What looks good here is the CNN architecture. They also implement Deep Belief, which I've never heard of, but suspect it is a variant of RNN. There description suggests they don't much know about it either. Finally they do implement a naïve Bayes solution for comparison.</p>

<p>CNN is the top performing method, which is no surprise. Alot will depend on their filtering and striding, as well as how they trained it. I don't see their training graphs, nor their computer architecture (which are super important). We trust they have done them well.</p>

<p>Ultimately, classification down to the genus level is 85-90%, which for this stuff must be good (for Bioinformatics), but in reality its low.... in fact for DL 85% is not great and needs further attention (when I finally get my CNN working I might live to regret this statement). </p>

<p>Phylogeny (maximum likelihood) is the only error-free way of doing this. There is a bedrock of historic work here. If you want to get down to the species level then trees are your only way to get there. Obviously you'd have a mixed strategy towards that goal.</p>

<hr>

<p><strong>Final note</strong>, whilst I am critical of DADA2 for classification their variant calling looks very cool, i.e. the robustness of the NGS data. I definitely get the impression the ML is just an add on for them.</p>

CC BY-SA 4.0
2019-10-23T10:08:24.063Z
I see the computer architecture... fine. Python 2 scary. Keras for CNN is normal. Tensorflow for deep belief, that is the underlying original code. So it looks perfectly fine. Why only 85% .. I dunno
M__
CC BY-SA 4.0
2019-10-23T09:42:07.340Z
2019-10-23T16:33:18.950Z
2019-10-23T16:33:18.950Z
M__
<p>DADA2 implements its own method-asignSpecies-for doing exactly this, which uses exact matches to species in a reference database and will be as accurate as any current method - for a single hyper variable region (which means not <em>hugely</em> accurate). Basically there's not enough variability in any single hyper variable region to separate species across all genera.</p>

<p>Recent advances on species/strain identification, as far as I'm aware, have been concentrating on using the whole of the 16S region from 3rd generation long read technology.   </p>

CC BY-SA 4.0
2020-05-26T14:12:53.240Z
2020-05-26T14:12:53.240Z
Greg
<p>I have been using dada2 and phyloseq (phangorn for trees) combination to analyze a V4 region 16s rRNA data set. I find their approach and explanations very understandable and usable since I prefer R.</p>
<p>I was under the impression that even full-length 16s rRNA gene sequences were inadequate to classify up to species level since <em>closely related species within a genus can have identical 16S rRNA gene sequences</em>.</p>
<p>But, turns out, intra-genomic variants of this gene within a species or even strain may allow their unambiguous identification according to this paper:</p>
<p>Johnson, J.S., Spakowicz, D.J., Hong, B. et al. Evaluation of 16S rRNA gene sequencing for species and strain-level microbiome analysis. Nat Commun 10, 5029 (2019). <a href="https://doi.org/10.1038/s41467-019-13036-1" rel="nofollow noreferrer">https://doi.org/10.1038/s41467-019-13036-1</a>) available at: <a href="https://rdcu.be/b5cgB" rel="nofollow noreferrer">https://rdcu.be/b5cgB</a></p>
<p>Another relevant article regarding using black box ML algorithms (random forests) versus a straightforward logistic regression is discussed in this one:</p>
<p>Topçuoğlu BD, Lesniak NA, Ruffin MT 4th, Wiens J, Schloss PD. A Framework for Effective Application of Machine Learning to Microbiome-Based Classification Problems. mBio. 2020;11(3):e00434-20. Published 2020 Jun 9. doi:10.1128/mBio.00434-20</p>
<p>Since the OP has probably already moved on long since the original query, I am writing this to document relevant current references for myself and anyone researching this topic on StackExchange Bioinformatics.</p>

CC BY-SA 4.0
2020-06-26T13:07:49.573Z
2020-06-26T13:07:49.573Z
mnkyntigr
<p>We currently use DADA2 for picking ASVs and the <code>assignTaxonomy</code> funciton for assingment to genera. Google does bring up various recent articles on species-level assignment with 16S. </p>

<p>Does anyone have an opinion on the current best-practice?</p>

<p>More simply, are there any current candidates for reasonably accurate species-level assignment?</p>

CC BY-SA 4.0
2019-10-22T23:02:41.907Z
Ok you have high quality data. Can you explain the assignTaxonomy feature? Analytically how does it achieve an assignment?
M__
CC BY-SA 4.0
2019-10-22T23:08:22.970Z
@MichaelG. https://benjjneb.github.io/dada2/assign.html
abalter
<fasta><phylogenetics><phylogeny><machine-learning><bacteria>
16S species-level taxonomic assignment--what is the current state of the art?
# 16S species-level taxonomic assignment--what is the current state of the art?

(Asked by: username_0 on 2019-10-22)

We currently use DADA2 for picking ASVs and the `assignTaxonomy` funciton for assingment to genera. Google does bring up various recent articles on species-level assignment with 16S.

Does anyone have an opinion on the current best-practice?

More simply, are there any current candidates for reasonably accurate species-level assignment?

**Tags:** fasta, phylogenetics, phylogeny, machine-learning, bacteria
> **Comments:**
> **username_1**: Ok you have high quality data. Can you explain the assignTaxonomy feature? Analytically how does it achieve an assignment?  
> **username_0**: @MichaelG. https://benjjneb.github.io/dada2/assign.html  

---

## 3 answers

### Answer by username_3 on 2020-06-26. Score: 1

I have been using dada2 and phyloseq (phangorn for trees) combination to analyze a V4 region 16s rRNA data set. I find their approach and explanations very understandable and usable since I prefer R.

I was under the impression that even full-length 16s rRNA gene sequences were inadequate to classify up to species level since *closely related species within a genus can have identical 16S rRNA gene sequences*.

But, turns out, intra-genomic variants of this gene within a species or even strain may allow their unambiguous identification according to this paper:

Johnson, J.S., Spakowicz, D.J., Hong, B. et al. Evaluation of 16S rRNA gene sequencing for species and strain-level microbiome analysis. Nat Commun 10, 5029 (2019). <https://doi.org/10.1038/s41467-019-13036-1>) available at: <https://rdcu.be/b5cgB>

Another relevant article regarding using black box ML algorithms (random forests) versus a straightforward logistic regression is discussed in this one:

Topçuoğlu BD, Lesniak NA, Ruffin MT 4th, Wiens J, Schloss PD. A Framework for Effective Application of Machine Learning to Microbiome-Based Classification Problems. mBio. 2020;11(3):e00434-20. Published 2020 Jun 9. doi:10.1128/mBio.00434-20

Since the OP has probably already moved on long since the original query, I am writing this to document relevant current references for myself and anyone researching this topic on StackExchange Bioinformatics.


---

### Answer by username_1 on 2019-10-23. Score: 0

My advice is to go for [Fiannaca et al. 2018](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2182-6) or similar and steer clear of the DADA2 classification.

My reasoning,

... my criticism of the DADA2 assignments is the reliance on an old machine learning algorithm (naive Bayes). In its favour the taxonomic assignment looks broad. Modern ML will never rely on a single ML method (e.g. lasso regression, SVM, k-means), the only possible exception is "Random Forests"/decision trees, which are popular - but even then. Naïve Bayes (which is not to be confused with 'Bayesian') was popular about a decade ago, which makes sense with the publication cited. The problem is that ML methods give different results.

In its favour it does look well trained, but you would need to understand the distribution used in the training.

---

Again my advice is to go for a deep learning solution, such as [Fiannaca et al. 2018](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2182-6) which is trained on bacterial 16s. What looks good here is the CNN architecture. They also implement Deep Belief, which I've never heard of, but suspect it is a variant of RNN. There description suggests they don't much know about it either. Finally they do implement a naïve Bayes solution for comparison.

CNN is the top performing method, which is no surprise. Alot will depend on their filtering and striding, as well as how they trained it. I don't see their training graphs, nor their computer architecture (which are super important). We trust they have done them well.

Ultimately, classification down to the genus level is 85-90%, which for this stuff must be good (for Bioinformatics), but in reality its low.... in fact for DL 85% is not great and needs further attention (when I finally get my CNN working I might live to regret this statement).

Phylogeny (maximum likelihood) is the only error-free way of doing this. There is a bedrock of historic work here. If you want to get down to the species level then trees are your only way to get there. Obviously you'd have a mixed strategy towards that goal.

---

**Final note**, whilst I am critical of DADA2 for classification their variant calling looks very cool, i.e. the robustness of the NGS data. I definitely get the impression the ML is just an add on for them.

> **Comments:**
> **username_1**: I see the computer architecture... fine. Python 2 scary. Keras for CNN is normal. Tensorflow for deep belief, that is the underlying original code. So it looks perfectly fine. Why only 85% .. I dunno  

---

### Answer by username_2 on 2020-05-26. Score: 0

DADA2 implements its own method-asignSpecies-for doing exactly this, which uses exact matches to species in a reference database and will be as accurate as any current method - for a single hyper variable region (which means not *hugely* accurate). Basically there's not enough variability in any single hyper variable region to separate species across all genera.

Recent advances on species/strain identification, as far as I'm aware, have been concentrating on using the whole of the 16S region from 3rd generation long read technology.


---

