<p>The current best way to mitigate the effects of &quot;index hopping&quot; for short reads is to use dual / unique barcodes on each end of a sequenced library for each sample (as it appears you have done). This is explained really well a series of 2017 blog posts by James Hadfield:</p>
<ul>
<li><p><a href="https://enseqlopedia.com/2016/12/index-mis-assignment-between-samples-on-hiseq-4000-and-x-ten/" rel="nofollow noreferrer">https://enseqlopedia.com/2016/12/index-mis-assignment-between-samples-on-hiseq-4000-and-x-ten/</a></p>
</li>
<li><p><a href="https://enseqlopedia.com/2017/05/update-illumina-index-swapping-better-libraries/" rel="nofollow noreferrer">https://enseqlopedia.com/2017/05/update-illumina-index-swapping-better-libraries/</a></p>
</li>
<li><p><a href="https://enseqlopedia.com/2017/04/update-illumina-index-swapping-better-barcode-design/" rel="nofollow noreferrer">https://enseqlopedia.com/2017/04/update-illumina-index-swapping-better-barcode-design/</a></p>
</li>
</ul>
<p>My current hypothesis around index hopping is that it is caused by a mixture of concatenated reads in combination with Illumina's restriction of only sequencing a short sequence from both ends of a sequence template. I suspect that the adapter ligation process occasionally ligates multiple template sequences together, rather than just ligating adapters to template DNA:</p>
<p>Normal read:</p>
<pre><code>L1&lt;seq1&gt;R1
</code></pre>
<p>Where <code>L1</code> represents the left-hand barcode sequence of sample 1, and <code>R1</code> represents the right-hand barcode sequence of sample 1. In the notation I'm using, the numbers correspond to samples (i.e. different unique barcode sequences), and the <code>L</code> and <code>R</code> correspond to the left-hand and right-hand barcodes respectively. In that context, it wouldn't make sense (in the normal case) to have both <code>L1&lt;8-1.1&gt;</code> and <code>L1&lt;3-1.2&gt;</code>, because that would be attaching the same barcode directly to different samples.</p>
<p>Here are some concatenated read possibilities starting with L1:</p>
<pre><code>L1&lt;seq1&gt;&lt;seq2&gt;R2
L1&lt;seq1&gt;L1R1&lt;seq2&gt;R2
L1&lt;seq1&gt;R1&lt;seq2&gt;R2
L1&lt;seq1&gt;L2&lt;seq2&gt;R2
L1&lt;seq1&gt;R1&lt;seq2&gt;
L1&lt;seq1&gt;R2&lt;seq2&gt;
L1&lt;seq1&gt;&lt;seq2&gt;
</code></pre>
<p>In the first four of these cases under short-read sequencing, the left barcode for seq1 would be sequenced as if it were attached to a read containing only R2 on the other end. The last four cases would be unlikely to be fully bridge-amplified by an Illumina sequencer because, unless the sequence happened to be close enough to the Illumina adapter, it wouldn't bind properly to the flow cell.</p>
<p>Under such a theoretical model, it would be expected that abundant samples would be more likely to spill over to other samples, because their initial representation in the mix is higher.</p>
<p>Assuming these events happen at all, they would be more likely to be <em>noticed</em> when there is substantial barcode imbalance, but it would probably not be too different (in terms of proportion of total reads) if the flow cell were overloaded. Overloading the flow cell would cause other problems that would be more easily noticed by standard flow cell QC, most likely leading to a reduction in overall base call quality within each spot.</p>
<p>I've wanted for quite a while to sequence a prepared Illumina library on a nanopore sequencer to work out which of these events (if any) happen in those libraries, but haven't had that opportunity yet.</p>
<p>In your case, your sequences have different barcodes at each end, for example using the notation I've used above:</p>
<pre><code>8-2 : L1 = GTCCTAAG; R1 = TGGTAGCT
3-1 : L2 = TAGGAGCT; R2 = GTTAAGGC
</code></pre>
<p>So the most abundant unknown barcode could be formed from the left barcode of sample 8-2 combined with the right barcode of sample 3-1:</p>
<pre><code>8-2...3-1 : GTCCTAAG&lt;seq1&gt;TGGTAGCT...TAGGAGCT&lt;seq2&gt;GTTAAGGC
            ----Read1--&gt;
                                               &lt;-Read2-----
</code></pre>
<p>[or some other similar construction]</p>
<p>Which would appear on a short-read sequencer (e.g. Illumina) as the following read pair:</p>
<pre><code>{GTCCTAAG&lt;seq, rc(2&gt;GTTAAGGC)}
</code></pre>
<p>And would have the apparent barcode sequence of <code>GTCCTAAG+GTTAAGGC</code> (which is your most abundant unknown barcode, excluding the null polyG barcodes).</p>

CC BY-SA 4.0
2024-04-05T05:47:57.690Z
Thanks David for this answer. 
I find the nanopore sequencing of such an Illumina library a good idea. Maybe I can convince my people here to try and test this hypothesis, if we still have some leftovers from this said library. As you can't really plan for index hopping, I don't know if you can deliberately create a library with such events. 

Do I understand it correctly, that this spill-over can happens only for such libraries when the flow cell is overloaded. But why does it happen for only specific samples and not randomly all around?
Assa Yeroslaviz
CC BY-SA 4.0
2024-04-04T20:27:41.790Z
2024-04-15T05:13:05.203Z
2024-04-15T05:13:05.203Z
gringer
<p>We run multiple samples for sequencing on an Illumina NovaSeq machine. After converting the files to fastq format using <code>bcl2fastq</code>, we can see that we have some trouble with index hopping.</p>
<p>The image attached here shows the structure of the indices, how they are supposed to be and how we can see them after the conversion.</p>
<p>The color coding at the top of the image shows the four samples in question (names are in the first column to the left). The right column explains how the barcodes were supposed to be paired together. The Top Unknown Barcodes at the bottom part of the image shows how they were found by the conversion tool.</p>
<p><img src="https://i.sstatic.net/ljskvm.png" alt="index hopping" /></p>
<p>Interestingly, the two samples 6-2 and 8-2 show the highest number of reads in the complete data set (contains 30 samples) with around 20M reads, while the two samples 1-1 and 3-1 are both at the bottom of the list with the lowest number of assigned reads.</p>
<p><a href="https://i.sstatic.net/HLTu5.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/HLTu5.png" alt="Million reads per sample" /></a></p>
<p>My question is whether these two results are connected. As far as I understand, if the two barcodes are not identified, the read is automatically classified as <strong>Unknown</strong>. But is it possible that somehow reads from e.g sample 3.1 were assigned to sample 6-2 by mistake, or reads from sample 1-1 were saved under sample 8-2?</p>
<p>To me it seems to be too much of a coincidence to see the two samples with the highest and lowest number of reads being all connected in the barcode swapping event.</p>
<p>Any advice would be appreciated.</p>

<ngs><illumina><barcode><indexing>
Can index hopping lead to more reads in samples?
# Can index hopping lead to more reads in samples?

(Asked by: username_0 on 2024-04-02)

We run multiple samples for sequencing on an Illumina NovaSeq machine. After converting the files to fastq format using `bcl2fastq`, we can see that we have some trouble with index hopping.

The image attached here shows the structure of the indices, how they are supposed to be and how we can see them after the conversion.

The color coding at the top of the image shows the four samples in question (names are in the first column to the left). The right column explains how the barcodes were supposed to be paired together. The Top Unknown Barcodes at the bottom part of the image shows how they were found by the conversion tool.

![index hopping](https://i.sstatic.net/ljskvm.png)

Interestingly, the two samples 6-2 and 8-2 show the highest number of reads in the complete data set (contains 30 samples) with around 20M reads, while the two samples 1-1 and 3-1 are both at the bottom of the list with the lowest number of assigned reads.

[![Million reads per sample](https://i.sstatic.net/HLTu5.png)](https://i.sstatic.net/HLTu5.png)

My question is whether these two results are connected. As far as I understand, if the two barcodes are not identified, the read is automatically classified as **Unknown**. But is it possible that somehow reads from e.g sample 3.1 were assigned to sample 6-2 by mistake, or reads from sample 1-1 were saved under sample 8-2?

To me it seems to be too much of a coincidence to see the two samples with the highest and lowest number of reads being all connected in the barcode swapping event.

Any advice would be appreciated.

**Tags:** ngs, illumina, barcode, indexing

---

## 1 answers

### Answer by username_1 on 2024-04-04. Score: 3 | Accepted answer

The current best way to mitigate the effects of "index hopping" for short reads is to use dual / unique barcodes on each end of a sequenced library for each sample (as it appears you have done). This is explained really well a series of 2017 blog posts by James Hadfield:

https://enseqlopedia.com/2016/12/index-mis-assignment-between-samples-on-hiseq-4000-and-x-ten/

https://enseqlopedia.com/2017/05/update-illumina-index-swapping-better-libraries/

https://enseqlopedia.com/2017/04/update-illumina-index-swapping-better-barcode-design/


My current hypothesis around index hopping is that it is caused by a mixture of concatenated reads in combination with Illumina's restriction of only sequencing a short sequence from both ends of a sequence template. I suspect that the adapter ligation process occasionally ligates multiple template sequences together, rather than just ligating adapters to template DNA:
Normal read:
L1R1

Where L1 represents the left-hand barcode sequence of sample 1, and R1 represents the right-hand barcode sequence of sample 1. In the notation I'm using, the numbers correspond to samples (i.e. different unique barcode sequences), and the L and R correspond to the left-hand and right-hand barcodes respectively. In that context, it wouldn't make sense (in the normal case) to have both L1<8-1.1> and L1<3-1.2>, because that would be attaching the same barcode directly to different samples.
Here are some concatenated read possibilities starting with L1:
L1R2
L1L1R1R2
L1R1R2
L1L2R2
L1R1
L1R2
L1

In the first four of these cases under short-read sequencing, the left barcode for seq1 would be sequenced as if it were attached to a read containing only R2 on the other end. The last four cases would be unlikely to be fully bridge-amplified by an Illumina sequencer because, unless the sequence happened to be close enough to the Illumina adapter, it wouldn't bind properly to the flow cell.
Under such a theoretical model, it would be expected that abundant samples would be more likely to spill over to other samples, because their initial representation in the mix is higher.
Assuming these events happen at all, they would be more likely to be noticed when there is substantial barcode imbalance, but it would probably not be too different (in terms of proportion of total reads) if the flow cell were overloaded. Overloading the flow cell would cause other problems that would be more easily noticed by standard flow cell QC, most likely leading to a reduction in overall base call quality within each spot.
I've wanted for quite a while to sequence a prepared Illumina library on a nanopore sequencer to work out which of these events (if any) happen in those libraries, but haven't had that opportunity yet.
In your case, your sequences have different barcodes at each end, for example using the notation I've used above:
8-2 : L1 = GTCCTAAG; R1 = TGGTAGCT
3-1 : L2 = TAGGAGCT; R2 = GTTAAGGC

So the most abundant unknown barcode could be formed from the left barcode of sample 8-2 combined with the right barcode of sample 3-1:
8-2...3-1 : GTCCTAAGTGGTAGCT...TAGGAGCTGTTAAGGC
            ----Read1-->
                                               <-Read2-----

[or some other similar construction]
Which would appear on a short-read sequencer (e.g. Illumina) as the following read pair:
{GTCCTAAGGTTAAGGC)}

And would have the apparent barcode sequence of GTCCTAAG+GTTAAGGC (which is your most abundant unknown barcode, excluding the null polyG barcodes).

> **Comments:**
> **username_0**: Thanks David for this answer.  I find the nanopore sequencing of such an Illumina library a good idea. Maybe I can convince my people here to try and test this hypothesis, if we still have some leftovers from this said library. As you can't really plan for index hopping, I don't know if you can deliberately create a library with such events.   Do I understand it correctly, that this spill-over can happens only for such libraries when the flow cell is overloaded. But why does it happen for only specific samples and not randomly all around?  

---

