We have a problem trying to demultiplex MinION sequences with custom barcodes. Do you have any software recommendations we can try for demultiplexing or how to demultiplex these custom barcodes with Albacore? We have tried using albacore but it only recognizes barcodes provided by Nanopore Technologies.
2 Answers
I've written some Perl code for demultiplexing nanopore reads using LAST. A workflow demonstrating the use of this script (and how it works under the hood) can be found here:
https://dx.doi.org/10.17504/protocols.io.14egnxw4zl5d
You feed the script a barcode file and input fastq file, and it creates a trained mismatch matrix, aligns to the barcodes, then demultiplexes the reads into separate files for each barcode:
./fastq-dental.pl -barcode barcode_full_PBK004.fa -mat bc.mat reads_all.fastq.gz
Example output:
9 BC01
39 BC02
1 BC02_BC07
16 BC03
38 BC04
2 BC04_BC06
1 BC04_BC07
1 BC04_BC09
643 BC05
2 BC05_BC07
493175 BC06
115 BC06_BC06
2 BC06_BC07
663161 BC07
1 BC07_BC05
117 BC07_BC07
1 BC07_BC09
106 BC08
1 BC08_BC06
75 BC09
72 BC10
1 BC10_BC07
41 BC11
44 BC12
1 BC12_BC06
13535 BCchim
237796 BCnoadapt
152 BCnone
90 RB12A
While the approach designed around using the ONT barcodes, the barcode fasta file can be replaced by another file [using barcode ID in the header] without change the protocol.
FWIW, there is also now some support for detecting strand direction (e.g. using the strand switch primer provided by ONT), but I haven't yet got it working properly doing both demultiplexing and strand orientation at the same time.
-
$\begingroup$ Thank you! I am using minibar, works great and very easy to add custom barcodes. L.Y. $\endgroup$ Commented Dec 4, 2019 at 2:28
There are two other ways in which you could demultiplex reads if guppy doesn't have the config file for the kit you are using.
- Minibar: This works for dual index barcodes specifically
- Porechop: This is intended for the ONT sets, but you can also replace them with your own. However, it is designed to work with single index barcodes. That means, you will have to run it once with your forward indices, then take that output and run again with the reverse, and then do some gymnastics to combine it all together
-
$\begingroup$ What do you mean with run it twice, with forward and reverse indices? $\endgroup$– F.LiraCommented Apr 20, 2021 at 7:35