comparison between chao1 and observed_otus by using otu clustering pipeline

Dear All,

I am new in Qiime2, I have some questions about analysing microbial diversity.

  1. OTU methods in QIIME2

What are the outputs of the commands 'chao1' and 'observed_otus' (see screenshoot below). My understanding is that 'chao1' considers not only observed otus, but also non-observed rare species, while 'observed_otus' only considers observed otus. In this case, results from 'chao1' should be always bigger or equivalent to those from 'observed_otus'. Further, if I removed singletons before using these two commands, the results from both should be the same, according to the chao1 formula. Am I correct?

In my analysis, after removing singletones, 'chao1' showed higher results than 'observed_otus'. How can I interpret?

  1. ASV methods in QIIME2

In this method, singletons were removed by default. Then the results from 'chao1' and 'observed_otus' were the same. This is as expected if my understandings above were correct. If incorrect, how to interpret this.

Good afternoon!

Welcome to Qiime 2! You are asking all the right questions about the alpha diversity metrics.


Yep, and it does this by considering the features (OTUs/ASVs) that appear in a sample 1 time and 2 times to estimate how many species could be in the sample, but appears 0 times because sampling depth was not great enough.

Correct. If every feature 2 or greater in a sample, the observed and choa1 metrics will be the same.

Now let’s get to the big question:

What did you remove?

  1. features that appeared once in the whole study, or
  2. features that appeared once in a single sample?

(Choa1 is calculated for each sample, so while a feature might appear 1 time in a sample, it could still appear in several samples and not be filtered out.)

Several ASV methods filtered out 2) features appeared once in the whole study, but this leaves plenty of features that appear once in a sample! This is why the measure Chao1 is often higher than observed, even with ASVs.

Let me know if that’s helpful!


Dear Colin

Thank you for your prompt reply. It is very helpful. I have some more questions, hope you could help to answer.

  1. In OTU methods, I defined the parameter ‘–p-min-samples’ as 2. I think in the way, I removed the singletons of the WHOLE study, which means that the singletons in a sample may still be left. This is the reason that ‘chao1’ brought higher results than ‘observed_otus’. Am I correct?

  2. In ASV methods (DADA2), the default is also to remove the singletons of the WHOLE study. However, for the same samples as used in Point 1 above, the ‘chao1’ brought the same results as ‘observed_otus’ (why not higher). How can I interpret this?

Appreciate for your help.


Hello Muyao,


Good question! I know DADA2 does other filtering that would remove spurious, ‘extra’ reads from your samples. This would reduce the number of rare features in the whole study, which in turn reduces the likelihood of getting feature counts of 1 in samples. If Chao1 is identical to observed, then I guess those samples have feature counts of 2 or more :man_shrugging:
Did you do any other filtering of feature or merging of samples that could change this?


Dear Colin

Thank you for your explanations. I understand much better now :slight_smile:

In Question 2, do you mean that the feature tables generated by ASV methods and OTU methods are different? In this case, after removing the singletons from the whole study, the singletons left in each sample in ASV methods is still different as the one left in OTU methods. Am I correct? I did not do other filtering in DADA2.

In OTU methods, if I would like to remove singletons from each sample, should I set ‘-p-min-frequency’ as 2?

Thank you very much in advance!


1 Like

Hello Muyao,

OK awesome!

Yes, OTU methods usually cluster reads by 97% identity while ASV methods denoise reads at 100% identity, letting you capture smaller genetic differences. This is why I think ASVs are better!

This setting works on the whole study, and I think you would have to use a different plugin. But I worry that removing singletons like that could produce other biases… so I’m not sure I would recommend that. :man_shrugging:


Dear Colin,

Your answers are really very helpful. I have understood the difference between them now.

Thank you so much!!!


Just to add a quick comment for consideration here in case the expected calculations are still not adding up, DADA2 removes singletons after denoising that part is true, but this step occurs before merging paired-end reads, so it is possible to still observed singletons after DADA2 if the merging produces singletons.


@Mehrbod_Estaki Thank you for adding this comment, it is definitely valuable :slightly_smiling_face:

1 Like