deconvolve

Resolve barcodes shared by different molecules
  • paired-end reads from an Illumina sequencer in FASTQ format ❤️ gzipped recommended
    • sample name: a-z 0-9 . _ - case insensitive
    • forward: _F .F .1 _1 _R1_001 .R1_001 _R1 .R1
    • reverse: _R .R .2 _2 _R2_001 .R2_001 _R2 .R2
    • fastq extension: .fq .fastq case insensitive
    • barcode: must be the terminal comment in the FASTQ header

The importance of doing barcode deconvolution at the FASTQ stage varies based on your goals. This table, by no means exhaustive, outlines if you should invest in it:

goal necessary?
alignment no, barcode information not used
assembly yes
imputation no, performs internally
metassembly yes
phasing no, performs internally
preprocess no, barcodes not yet identified
qc no, barcode information not used
SNP calling no, barcode information not used
SV calling no, performs internally

This workflow uses a reference-free method, QuickDeconvolution, which uses k-mers to look at "read clouds" (all reads with the same linked-read barcode) and decide which ones likely originate from different molecules. Being a reference-free method, QuickDeconvolution reads all the sequences into memory, so it can require quite a bit of RAM. More threads will increase RAM demand.

usage
harpy deconvolve OPTIONS... INPUTS...
example | deconvolve with default parameters
harpy deconvolve path/to/data/*.fq

Running Options

argument default description
INPUTS   required Files or directories containing input FASTQ files
--density -d 3 On average, \frac{1}{2^d} kmers are indexed
--dropout -a 0 Minimum cloud size to deconvolve
--kmer-length -k 21 Size of k-mers to search for similarities
--window-size -w 40 Size of window guaranteed to contain at least one kmer

Resulting Barcodes

After deconvolution, some barcodes may have a hyphenated suffix like -1 or -2 (e.g. A01C33B41D93-1). This is how deconvolution methods create unique variants of barcodes to denote that identical barcodes do not come from the same original molecules. QuickDeconvolution adds the -0 suffix to barcodes it was unable to deconvolve.