QIIME2 support for dual indexing with heterogeneity spacers?


I know QIIME 1 doesn’t support dual indexed barcodes with heterogeneity spacers a la Fadrosh 2014, but I am seriously considering this barcoding strategy for future studies. From what I can gather, QIIME 2 does not yet have demux for paired ends with dual barcoding available, and does not yet support reads with heterogeneity spacers (if I’m wrong, will someone please point me to where I can read about this?)

Are there any plans for QIIME 2 to support demultiplexing dual indexed reads with heterogeneity spacers? And when might such tools become available?

Thank you for your time

Hi @willowblade,
You’re correct that this is not currently supported in QIIME 2. Ideally this would come in the form of a method to the QIIME 2 demux plugin, so I created an issue for this here. At the moment, I can’t give you an estimate on when this would be available.

Are you aware of existing software that performs this demultiplexing? That might help us be able to get to it sooner (if there is existing software that we can wrap to provide this support, that is often easier than writing it ourselves).

Alternatively, do you have an option to get these data already demultiplexed? In QIIME 1 we generally recommended that demultiplexing be performed with QIIME, but in QIIME 2 we support importing already demultiplexed data.

1 Like

Thanks for the quick reply! I do have a way to get the data demultiplexed outside of QIIME, but the lab manager where I work prefers to options to do everything all in one place – that’s why she likes QIIME.

Does the software have to be published? I have a python script I got from a colleague, but I don’t believe it’s published. If the software doesn’t have to be published, I can ask my colleague if he’s willing to share it.

1 Like

@willowblade, it doesn’t have to be published in journal article, but it should be available open source and through a public revision control system such as GitHub. The ideal situation would be if your colleague were interested in making that software available as a QIIME 2 plugin. That would be the quickest way to get the method working in a QIIME 2 environment, and would likely work better as you guys are more familiar with what this needs to do than we are, since we’re not using that protocol.

This document describes what would be involved in writing a QIIME 2 plugin, and we’re available to help with that. If this is a route that you guys are interested in exploring, I’d be happy to answer any questions.

Any progress on this front? I’ve been waiting for this to be implemented on qiime2… Thanks!

@willowblade Great inquiry! If you guys do plan on creating a plug in for this (which I really hope you do!), would it be possible to share your python script for dealing with dual index + spacers in the meantime? I think there are several community members (including myself!) that would be grateful for access to it as we start moving towards routinely using those spacers. It certainly beats starting to write one from scratch!

Hi, we actually changed barcoding methods, so I stopped worrying about this. It is a good point that others will need it, and I’ll see what I can dig out again.


General update:

We still don’t have combinatoric dual-index support, but we’re thinking q2-cutadapt is a good place for it as it already does dual-index demultiplexing where the indices are the same.

If you happen to have redundant/shared dual indices, then I think you might be able to accomplish this by tying together two steps: cutadapt demux-paired to split everything up, and then cutadapt trim-paired on your primer-pair to remove the variable length adapter (and your primer of course).

We’re really lacking real-world data for these sequencing strategies, so if anyone feels very generous and would like to share, that would be amazingly useful!

1 Like

If you’re just after a solution bcl2fastq2 (and potentially MiSeq Reporter) support demultiplexing of unique dual indexes.

As for heterogeneity spacers, if you’re using the Nextera kits then I was hoping to use a heterogeneity spacer before the amplicon primer, which should work.

Hope this helps.


Hi, we are doing 16S/18S/ITS analysis on a daily basis using our Illumina MiSeq dual homemade-barcoded paired-end amplicon-Seq with different barcodes lengths. Two years ago, in a Qiime workshop in Quebec city, Kyle Bittinger and Yoshike Vazquez told me that it was not possible to demultiplex dual-barcoded paired-end reads with different barcodes lengths (heterogeneity spacers). We then started to use Mothur make.contigs command to do so. Here is an example of the oligo.txt file required to perform this task.


AACMGGATTAGATACCCKG = forward primer sequence
AGGGTTGCGCTCGTTG = reverse primer sequence
Fourth column (no header) are my samples names.
Columns 2 and 3 next to “barcode” are our forward and reverse barcodes. It takes a combination of two barcodes to uniquely identify all the samples.
We use homemade barcoded primers with the illumina adapter and p5/p7 flowcell anchors. We usually multiplex up to 400 samples/run so we had to create our set of primers/barcodes to do so (20 forwards x 20 reverses = 400 combinations).

Kyle told me to write him an email to remind him to work on that case because it was a problem for many users, but I haven’t heard of him since then.

Because of that, it discourages me to start working with Qiime2. It’s unfortunate because after this make.contigs Mothur step, we always switch to Qiime to perform pick_open_reference_otus.py and all the other analysis.

You might already work on that plugin, but I suggest you to do so. I’m sure I won’t be the only one happy!

thanks in advance and I enjoy using your platform!


1 Like