5
$\begingroup$

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

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

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.

$\endgroup$

1 Answer 1

3
$\begingroup$

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:

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:

L1<seq1>R1

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:

L1<seq1><seq2>R2
L1<seq1>L1R1<seq2>R2
L1<seq1>R1<seq2>R2
L1<seq1>L2<seq2>R2
L1<seq1>R1<seq2>
L1<seq1>R2<seq2>
L1<seq1><seq2>

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 : GTCCTAAG<seq1>TGGTAGCT...TAGGAGCT<seq2>GTTAAGGC
            ----Read1-->
                                               <-Read2-----

[or some other similar construction]

Which would appear on a short-read sequencer (e.g. Illumina) as the following read pair:

{GTCCTAAG<seq, rc(2>GTTAAGGC)}

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

$\endgroup$
1
  • $\begingroup$ 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? $\endgroup$ Commented Apr 5 at 5:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.