# Chimera removal dilemma in 16S V3–V4: necessary when using Kraken2/Bracken?

**URL:** https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679
**Category:** Other Bioinformatics Tools
**Tags:** dada2, chimera, qiime2
**Created:** [September 24, 2025, 12:30pm UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679 "2025-09-24T12:30:29Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![christopherwilliamle](https://forum.qiime2.org/user_avatar/forum.qiime2.org/christopherwilliamle/32/21271_2.png) [@christopherwilliamle](https://forum.qiime2.org/u/christopherwilliamle)
#### Post date: [September 24, 2025, 12:30pm UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/1 "2025-09-24T12:30:29Z")

</div>

Hi everyone,  
I would like to know how you usually deal with chimeras in 16S data, given that Kraken2 does not explicitly remove them (and, as far as I understand, it might actually handle them relatively well).

Here’s the dilemma I’m having with my colleagues: should we remove chimeras or not? Personally, I think it might not be strictly necessary because Kraken2 can classify them, but my colleagues argue that chimera removal is still required.

The problem is that if I remove chimeras, I need to work with ASVs (via DADA2), but then I can’t directly use Bracken afterwards for abundance re-estimation. This makes the pipeline inconsistent for relative abundance estimates.

My current workflow is basically:  
cutadapt → bbduk → bowtie2 → qiime2 → dada2 → kraken2 → krona → (bracken? → krona?)

Do you think chimera removal is still necessary in this case? How do you usually handle this when combining ASV pipelines with Kraken2/Bracken?

---

<div class="post-metadata">

### Author: ![colinbrislawn](https://forum.qiime2.org/user_avatar/forum.qiime2.org/colinbrislawn/32/6221_2.png) [@colinbrislawn](https://forum.qiime2.org/u/colinbrislawn)
#### Post date: [September 25, 2025, 2:56am UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/2 "2025-09-25T02:56:47Z")

</div>

I'm not an authority on chimera removal, but I think it makes sense to remove them as it's common practice with amplicon analysis. This makes your results more comparable to other studies!

(You are doing 16S analysis, right? If I may be nosy, what region are you sequencing? What is that bowtie2 step doing?)

---

<div class="post-metadata">

### Author: ![christopherwilliamle](https://forum.qiime2.org/user_avatar/forum.qiime2.org/christopherwilliamle/32/21271_2.png) [@christopherwilliamle](https://forum.qiime2.org/u/christopherwilliamle)
#### Post date: [September 26, 2025, 3:11am UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/3 "2025-09-26T03:11:30Z")

</div>

Thanks for your reply!

Answering your question, yes! I’m working on 16S analysis, more precisely in the V3–V4 region. Since I’m working with both human and mouse samples, I’m using Bowtie2 for decontamination.

I was wondering about chimeric sequences because, since Kraken2 can handle chimeras, I’m not sure if it makes sense to remove them. My understanding is that when a k-mer doesn’t match with anything, or it simply skips a taxonomy level, it will be discarded, as you can see in the figure.

I did remove the chimeras from my samples, and I ended up with only a few ASVs. That made me wonder: if I don’t really need to remove chimeras from my samples, then I could just work with the post-processed FASTQ files (adapters removed, low-quality sequences, etc.).

I asked the same question in another forum, and someone raised the same point. So, I decided to include BBMap (for decontamination) and BBDuk (for primer and PhiX removal) in my pipeline by the guys indication. This way, I avoid redundant steps since BBMap handles decontamination and BBDuk removes primers and PhiX in a single pipeline.

 ![kmers-kraken](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/9/b/9be4e63d9fc6273ece467578dbd1a0be24768f72.jpeg)

---

<div class="post-metadata">

### Author: ![Nicholas\_Bokulich](https://forum.qiime2.org/user_avatar/forum.qiime2.org/nicholas_bokulich/32/19937_2.png) [@Nicholas\_Bokulich](https://forum.qiime2.org/u/Nicholas_Bokulich)
#### Post date: [September 26, 2025, 7:45am UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/4 "2025-09-26T07:45:38Z")

</div>

Hi @christopherwilliamle ,

I am curious about your comments that kraken2 can somehow handle chimeras. I see no mention of this ability in the publications, in the manual, in the GitHub repo for kraken2, or anywhere else. I would be curious if you have more info, e.g., a benchmark testing kraken2 on different chimeric seqs.

> [@christopherwilliamle](#):
>
> when a k-mer doesn’t match with anything

That could be the case for non-target sequences that are missing from the database, or for spurious errors in a sequence read. But chimeras are not going to be total nonsense, which is the big danger — they are chimerized from two (or more) true biological molecules, which will likely be represented (or similar enough to something that is represented) in the database, and which could be mixed in roughly equal proportions. So the k-mer profile of a chimera will not look like the tree in the example that you shared (where there is one k-mer that maps to another branch in the tree, the case you would have from a spurious error in a sequence), rather the k-mers could map at similar proportions to two or more branches, leading to shallow classification. So I don’t think that kraken2 will necessarily handle any chimera that you throw at it, some QC should still be done upstream.

and why could you not use bracken after removing chimeras?

> [@christopherwilliamle](#):
>
> I did remove the chimeras from my samples, and I ended up with only a few ASVs

You may need to adjust the parameters, e.g., the abundance threshold or other criteria for deciding if a seq is a chimera.

---

<div class="post-metadata">

### Author: ![llenzi](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/l/9fc29f/32.png) [@llenzi](https://forum.qiime2.org/u/llenzi)
#### Post date: [September 26, 2025, 9:48am UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/5 "2025-09-26T09:48:01Z")

</div>

Hi @christopherwilliamle

Just adding my 2 cent here, if you want to stick yo your pipeline you could use vsearch to remove chimeric sequences then work with kraken/bracken. The vsearch option does not return ASVs but simply a subset of non-chimeric sequence. You can detect by comparing to a know database or de-novo.

The help are:

> **[uchime-denovo: De novo chimera filtering with vsearch. — QIIME 2 2024.10.1...](https://docs.qiime2.org/2024.10/plugins/available/vsearch/uchime-denovo/)**

> **[uchime-ref: Reference-based chimera filtering with vsearch. — QIIME 2...](https://docs.qiime2.org/2024.10/plugins/available/vsearch/uchime-ref/)**

This is from an older version of qiime but should still be possible with the latest as far I am aware (please anyone correct me if I am wrong).

Other then that, if I have amplicon sequence I usually stick to sklearn to taxonomy assignment, while if I am working with fragmented library (metagenomics datasets) I would to to the kraken2/bracken pipeline, now very well conveniently wrapped into the qiime moshpit distribution.

I hope it helps

Luca

---

<div class="post-metadata">

### Author: ![christopherwilliamle](https://forum.qiime2.org/user_avatar/forum.qiime2.org/christopherwilliamle/32/21271_2.png) [@christopherwilliamle](https://forum.qiime2.org/u/christopherwilliamle)
#### Post date: [September 26, 2025, 8:41pm UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/6 "2025-09-26T20:41:27Z")

</div>

> [@Nicholas\_Bokulich](#):
>
> I am curious about your comments that kraken2 can somehow handle chimeras. I see no mention of this ability in the publications, in the manual, in the GitHub repo for kraken2, or anywhere else. I would be curious if you have more info, e.g., a benchmark testing kraken2 on different chimeric seqs.

You’re right that Kraken2 doesn’t mention chimera removal. My comment was an inference (something like, I just took it from my head 😅 ) based on how its classifier works: when a read contains k-mers from multiple taxa (as chimeras do), Kraken2 aggregates the k-mer votes and follows the LCA rule, which tends to push the call up to a higher rank rather than a species. This behavior is described in the papers/docs; e.g., “_If the k-mers yield multiple IDs, then Kraken computes the subtree of all the species that it found, and outputs a taxonomy label corresponding to the path in the tree with the most k-mers_.” ([Salzberg & Wood, 2021](https://pmc.ncbi.nlm.nih.gov/articles/PMC9580904/)).

Even in Jennifer Lu’s paper, there isn’t a chimera-removal step (Lu & Salzberg, Microbiome, 2020). Could it be because of mock community data? I’ve read other benchmarking papers, but none of them are using, or at least they don’t state explicitly any chimera removal (Odom et al., Scientific Reports, 2023; Wright et al., Microbial Genomics, 2023). The only one I’ve found that actually uses chimera removal is _Improving Species Level-taxonomic Assignment from 16S rRNA Sequencing Technologies_ ([Bars-Cortina et al., 2023](https://currentprotocols.onlinelibrary.wiley.com/doi/10.1002/cpz1.930)).

> [@Nicholas\_Bokulich](#):
>
> But chimeras are not going to be total nonsense,

Since a chimera is a mix of real biological sequences, Kraken2 won’t “fix” it, it will just end up classifying higher up the tree. But would that necessarily be a problem? Like you said, the outcome would likely just be a shallower classification. If I remove the chimera upstream, I’m removing the entire read instead of keeping it as a less specific assignment.

> [@Nicholas\_Bokulich](#):
>
> You may need to adjust the parameters, e.g., the abundance threshold or other criteria for deciding if a seq is a chimera.

About Bracken, the reason I asked is that since Bracken redistributes reads, once I transform my data into ASVs I end up with far fewer reads left to calculate relative abundance. That’s why I’ve been questioning whether it makes sense to do chimera removal at all. Because if I decide to remove them, I basically need to rely on DADA2 to do it. I’ll share my parameters and results later so you can see what’s happening.

---

<div class="post-metadata">

### Author: ![christopherwilliamle](https://forum.qiime2.org/user_avatar/forum.qiime2.org/christopherwilliamle/32/21271_2.png) [@christopherwilliamle](https://forum.qiime2.org/u/christopherwilliamle)
#### Post date: [September 26, 2025, 9:05pm UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/7 "2025-09-26T21:05:08Z")

</div>

Thanks a lot!!! This will definitely help! I’ll go ahead and try exactly what you suggested with VSEARCH before running Kraken2/Bracken. Thank you again!!

---

<div class="post-metadata">

### Author: ![Nicholas\_Bokulich](https://forum.qiime2.org/user_avatar/forum.qiime2.org/nicholas_bokulich/32/19937_2.png) [@Nicholas\_Bokulich](https://forum.qiime2.org/u/Nicholas_Bokulich)
#### Post date: [September 26, 2025, 9:35pm UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/8 "2025-09-26T21:35:19Z")

</div>

> [@christopherwilliamle](#):
>
> Since a chimera is a mix of real biological sequences, Kraken2 won’t “fix” it, it will just end up classifying higher up the tree. But would that necessarily be a problem? Like you said, the outcome would likely just be a shallower classification. If I remove the chimera upstream, I’m removing the entire read instead of keeping it as a less specific assignment.

I suppose it’s just a question of whether you want to take out the garbage upstream (do chimera filtering first) or downstream (remove reads with shallow classification, which could be chimera, short reads, off-target or other junk, or potentially real signal that is not classifying well for some reason). Personally I would do the chimera filtering to help diagnose just a bit… but with appropriate filtering you would probably get more or less the same result in the end anyway.

> [@christopherwilliamle](#):
>
> My comment was an inference (something like, I just took it from my head 😅 )

❤

I suggest looking into the `--p-min-fold-parent-over-abundance` parameter… there are a few topics on this forum that discuss it. Sometimes this needs to be adjusted to avoid over-zealous

---

<div class="post-metadata">

### Author: ![christopherwilliamle](https://forum.qiime2.org/user_avatar/forum.qiime2.org/christopherwilliamle/32/21271_2.png) [@christopherwilliamle](https://forum.qiime2.org/u/christopherwilliamle)
#### Post date: [September 26, 2025, 10:22pm UTC](https://forum.qiime2.org/t/chimera-removal-dilemma-in-16s-v3-v4-necessary-when-using-kraken2-bracken/33679/9 "2025-09-26T22:22:06Z")

</div>

Thanks a lot for the feedback, this will really help me improve my pipeline. I really appreciate it, this has been bothering me for a few months already, so your answer means a lot.

Thank you again!
