Genome Sequencing and Assembly Techniques
Genome Sequencing and Assembly Techniques
Faculty of Sciences
Computational Biology
Genome assembly
(graph algorithms)
Walter Walter
Gilbert Gilbert
Fred Sanger
Fred Sanger
develop
share
DNA
Nobel
sequencing
Prize formethods
developing
independently
DNA sequencing
from each
methods
other
entire genome of
1997
Homo sapiens sapiens
Craig Venter
GAGATTAAACTATAACTTATTAGGCCGAGTTCCCGCTATG
GGAAAGGTTCGAGTTGCAGTATATCCTCGCCGTTCATCGT
TGATTCCACCCACCGTTATAAGTAGTAACGGAGTCAGCCG
TGTTCGGGAAAATCGGACCTGTACGGTAGAAGTCCAGCAG
GAGATTAAACTATAACTTATTAGGCCGAGTTCCCGCTATG
GCTCGCTACGGTAAACAAGTAGTAAGCTACCCAAAATCGT
GGAAAGGTTGGAGTTGCAGTATATCCTCGCCGTTCATCGT
AATGTGCAGAAAGAACAGCCGCCCAAGTGAGCATGTCCAT
TGATTCCACCCACCGTTATAAGTAGTAACGGAGTCAGCCG
TGTTCGGGAAAATCGGACCTGTACGGTAGAAATCCAGCAG
GAGATTAAACTATAACTTATTAGGCCGAGTTCCCGCTATG
GCTCGCTACGGTAAGCAAGTAGTAAGCTACCCAAAATCGT
GGAAAGGTTAGAGTTGCAGTATATCCTCGCCGTTCATCGT
AATGTGCAGAAAGAACAGCCGCCCAAGTGAGCATGTCCAT
TGATTCCACCCACCGTTATAAGTAGTAACGGAGTCAGCCG
TGTTCGGGAAAATCGGACCTGTACGGTAGAATTCCAGCAG
GCTCGCTACGGTAACCAAGTAGTAAGCTACCCAAAATCGT
AATGTGCAGAAAGAACAGCCGCCCAAGTGAGCATGTCCAT
Personalized medicine
2010: Nicholas Volker became the first human being to
be saved by genome sequencing
• doctors could not diagnose his condition, so he went
through dozens of surgeries
• sequencing revealed a rare mutation in a XIAP gene linked
to a defect in his immune system
• this led doctors to use immune therapy,
which save the child's life
10.000 genomes and beyond
2010: scientists launch a project to sequence 1.000
human genomes and 10.000 vertebrate genomes
rea
ds
Generating reads
GTAACCCG ACTCGGG GACACA TACAACATACG AATATCCGT GCGGGCCT GTCAGTG GGTCCCACAA AGCCA
GTAACC CGGTGGAACGG ACTCGG GGACACAT ACAACAT ACGAATATC CGTGCG GGCCTGTC AGTGGGTC CCACAAAGCCA
GTAACCCGG TGGAACG GACTCGGG GACACATA CAACATACG AATAT GCCTGTC AGTGG GTCCCAC AAAGCCA
GTAAC CCGGTGGAACG GACAC ATACAACATAC GAAT ATCCGTGCG GGCCT GTCAGT GGGTCC CACAAAGCCA
AATA
T CCGT
G
T GC
G
CC
AT
Genome assembly
ple (unsequenced) genome copies
genome assembly
ssembled genome
…GTAACCCGGTGGAACGGACTCGGGGACACATACAACATACGAATATCCGTGCGGGCCTGTCAGTGGGTCCCACAAAGCCA…
What makes assembly difficult?
modern sequencing machines cannot read an entire
genome one nucleotide at a time from beginning to end
(like we read a book)
sequencing machines can only shred the genome and
generate short reads
genome assembly is not entirely the same as a jigsaw
puzzle as we must use overlapping reads to reconstruct
the genome: a giant overlap puzzle!
Outline
what is genome sequencing?
exploding newspapers
the string reconstruction problem
string reconstruction as a Hamiltonian path problem
string reconstruction as an Eulerian path problem
similar problems with different fates
de Bruijn graphs
Euler's theorem
assembling read-pairs
de Bruijn graphs face harsh realities of assembly
Genome assembly problem
problem description
reconstruct a genome from a given collection of reads
input: a collection of strings Reads
output: a string Genome reconstructed from Reads
problem description
reconstruct a string from its k-mer composition
input: a collection of k-mers
output: a string Genome such that
COMPOSITIONk(Genome) is equal to the given collection
of k-mers
Naive reconstruction approach
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
Naive reconstruction approach
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
backtracking
Naive reconstruction approach
ATG ATG CAT CCA GAT GCC GGA GGG GTT TGC TGG
TAA
AAT
ATG
TGT
Naive reconstruction approach
ATG ATG CAT CCA GAT GCC GGA GGG GTT TGC TGG TGT
TAA
AAT
ATG
Naive reconstruction approach
TAA
AAT
ATG
TGC
GCC
CCA
CAT
ATG
TGG
GGG
GGA
GAT
ATG
TGT
GTT
Outline
what is genome sequencing?
exploding newspapers
the string reconstruction problem
string reconstruction as a Hamiltonian path problem
string reconstruction as an Eulerian path problem
similar problems with different fates
de Bruijn graphs
Euler's theorem
assembling read-pairs
de Bruijn graphs face harsh realities of assembly
Representing a genome as a path
COMPOSITION3(TAATGCCATGGGATGTT) =
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
Representing a genome as a path
COMPOSITION3(TAATGCCATGGGATGTT) =
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
problem description
find a Hamiltonian path in a graph
input: a graph
output: a path visiting every node in the graph exactly
once
Hamiltonian path problem
problem description
find a Hamiltonian path in a graph
input: a graph
output: a path visiting every node in the graph exactly
once
Hamiltonian path problem
icosian game (1857)
problem description
find a Hamiltonian path in a graph
input: a graph
output: a path visiting every node in the graph exactly
once
Outline
what is genome sequencing?
exploding newspapers
the string reconstruction problem
string reconstruction as a Hamiltonian path problem
string reconstruction as an Eulerian path problem
similar problems with different fates
de Bruijn graphs
Euler's theorem
assembling read-pairs
de Bruijn graphs face harsh realities of assembly
Multiple genomics paths
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
TAATGCCATGGGAT
TAATGCCATGGGATG
TAATGCCATGGGATGT
TAATGCCATGGGATGTT
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
Multiple genomics paths
TAATGCCATGGGATGTT
TAA
TAAT
TAATG
TAATGG
TAATGGG
TAATGGGA
TAATGGGAT
TAATGGGATG
TAATGGGATGC
TAATGGGATGCC
TAATGGGATGCCA
TAATGGGATGCCAT
TAATGGGATGCCATG
TAATGGGATGCCATGT
TAATGGGATGCCATGTT
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
A slightly different path
TAATGCCATGGGATGTT
TAATGCCATGGGATGTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
3-mers as nodes
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
3-mers as edges
How do we label the starting
and ending node of an edge?
TAA
PREFIX(TAA) TA AA SUFFIX(TAA)
A slightly different path
TAATGCCATGGGATGTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
3-mers as nodes
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
3-mers as edges
2-mers as nodes
Gluing identically labeled nodes
TAATGCCATGGGATGTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
Gluing identically labeled nodes
TAATGCCATGGGATGTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
AT ATG TG
CCA GCC
CA GC
CAT TGC
AT ATG TG
CA CA GC GC
AT AT ATG ATG
TG TG
TAA TAA AAT AAT ATG ATG TGT TGT GTT GTT
TA TA AA AA AT AT TG TG GT GT TT TT
AT AT TG TG
ATG ATG
GAT GAT TGG TGG
GA GA GG GG
GG GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
GC
CA
TGC
CAT
ATG TG
AT
TAA AAT ATG TG TGT GT GTT TT
TA AA AT
AT
GAT ATG TG
TGG
GA
GG
GGA
GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
GCC
CCA
GC
CA
TGC
ATG TG
CAT
GAT
ATG TG
GA TGG
GG
GGA
GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
GCC
CCA
GC
CA
TGC
ATG TG
CAT
GAT
ATG TG
GA TGG
GG
GGA
GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
GCC
CCA
GC
CA
TGC
CAT
ATG TG
TAA AAT ATG TG TGT GT GTT TT
TA AA AT
ATG TG
GAT
TGG
GA
GG
GGA GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
GG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GG GGG
GGA
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
Gluing identically labeled nodes
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
DEBRUIJN3(TAATGCCATGGGATGTT)
Gluing identically labeled nodes
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
TAATGCCATGGGAT
TAATGCCATGGGATG
TAATGCCATGGGATGT
TAATGCCATGGGATGTT
CC
CCA GCC
Where is the Genome
hiding in this graph? CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
DEBRUIJN3(TAATGCCATGGGATGTT)
Gluing identically labeled nodes
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
TAATGCCATGGGAT
TAATGCCATGGGATG
TAATGCCATGGGATGT
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
Eulerian path: a path that visits each edge in the graph exactly
once. DEBRUIJN3(TAATGCCATGGGATGTT)
Eulerian path problem
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
TAATGCCATGGGAT
TAATGCCATGGGATG
TAATGCCATGGGATGT
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
problem description
GAT TGG
problem description
find an Eulerian path in a graph
input: a graph
output: a path visiting every edge in the graph exactly
once
Eulerian vs Hamiltonian paths
I can’t find an
efficient
algorithm, I
guess I’m just
too dumb.
I can’t find an
efficient
algorithm,
because no
such algorithm
is possible.
I can’t find an
efficient
algorithm, but
neither can all
these famous
people.
CC We constructed the de
Bruijn graph from Genome,
CCA GCC but in reality, Genome is
unknown!
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
problem description
GAT
ATG
TGG
find an Eulerian path in a graph
input: a graph GA GGA GG
GGG
output: a path visiting every edge in the graph exactly
once
DEBRUIJN (TAATGCCATGGGATGTT)
3
Genome → de Bruijn graph
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
k-mers → Genome
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
k-mers → de Bruijn → Genome
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
AAT
TGC CCA ATG GGG GAT TGT
AT TG GC CC CA AT TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
AAT
TGC CCA ATG GGG GAT TGT
AT TG GC CC CA AT TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TGC
CCA ATG GGG GAT TGT
GC CC CA AT TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TGC
CCA ATG GGG GAT TGT
GC CC CA AT TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
CCA
ATG GGG GAT TGT
CA AT TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
CCA
ATG GGG GAT TGT
CA AT TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CCA CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CCA CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
ATG
GGG GAT TGT
TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
ATG
GGG GAT TGT
TG GG GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
GGG
GAT TGT
GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
GGG
GAT TGT
GG GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
GAT TGT
GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
GAT TGT
GA AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
GAT
TGT
AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
GAT
TGT
AT TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TGT
TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TGT
TG GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TGT
GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
TGT
GT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TA AA AT TG GC CC CA AT TG GG GG GA AT TG GT TT
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
AT ATG TG
CCA GCC
CA GC
CAT TGC
AT ATG TG
CA CA GC GC
AT AT ATG ATG
TG TG
TAA TAA AAT AAT ATG ATG TGT TGT GTT GTT
TA TA AA AA AT AT TG TG GT GT TT TT
AT AT TG TG
ATG ATG
GAT GAT TGG TGG
GA GA GG GG
GG GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
GC
CA
TGC
CAT
ATG TG
AT
TAA AAT ATG TG TGT GT GTT TT
TA AA AT
AT
GAT ATG TG
TGG
GA
GG
GGA
GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
GCC
CCA
GC
CA
TGC
ATG TG
CAT
GAT
ATG TG
GA TGG
GG
GGA
GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
GCC
CCA
GC
CA
TGC
ATG TG
CAT
GAT
ATG TG
GA TGG
GG
GGA
GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
GCC
CCA
GC
CA
TGC
CAT
ATG TG
TAA AAT ATG TG TGT GT GTT TT
TA AA AT
ATG TG
GAT
TGG
GA
GG
GGA GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
GG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GG GGG
GGA
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
k-mers → de Bruijn
COMPOSITION3(TAATGCCATGGGATGTT)
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
DEBRUIJN3(COMPOSITION3(TAATGCCATGGGATGTT))
k-mers → de Bruijn
DEBRUIJN
DEBRUIJN(k-mers)
for each k-mer from k-mers
represent k-mer as edge between PREFIX(k-mer) and SUFFIX(k-mer)
glue ALL nodes with identical labels
DEBRUIJN
DEBRUIJN(k-mers)
form a node for each (k-1)-mer from k-mers
for each k-mer from k-mers
connect PREFIX(k-mer) with SUFFIX(k-mer) by an edge
Universal string problem
000 001 010 011 100 101 110 111
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
0 0
1 0
0 1
1 1
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
00 00 00 01 01 10 01 11 10 00 00 00 11 10 11 11
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
00 00 00 01 01 10 01 11 10 00 00 00 11 10 11 11
000
001
00 01
010
100 011
101
10 11
110 111
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
000 001 010 011 100 101 110 111
00 00 00 01 01 10 01 11 10 00 00 00 11 10 11 11
000
001 0 0
00 01
1 0
010
100 011
101
0 1
10 11
110 1 1
111
problem description
find a k-universal circular string: a circular string
containing each binary k-mer exactly once
input: an integer k
output: a k-universal circular string
de Bruijn (1946)
Universal string problem
0011
001 011
0101
1001 0000
Does this graph
000 010
have an Eulerian
101
cycle?
111 1111 0110
If yes, then how can we find it?
1010
1000 0100 1101 1110
100 110
1100
Outline
what is genome sequencing?
exploding newspapers
the string reconstruction problem
string reconstruction as a Hamiltonian path problem
string reconstruction as an Eulerian path problem
similar problems with different fates
de Bruijn graphs
Euler's theorem
assembling read-pairs
de Bruijn graphs face harsh realities of assembly
Eulerian cycle problem
problem description
find an Eulerian cycle in a graph
input: a graph
output: a cycle visiting every edge in the graph exactly
once
Eulerian cycle problem
problem description
find an Eulerian cycle in a graph
input: a graph
output: a cycle visiting every edge in the graph exactly
once
Eulerian cycle problem
0011
Is this graph 001 011
balanced?
0101
1010
1000 0100 1101 1110
100 110
1100
Every Eulerian graph is balanced.
Euler's theorem
0011
Is this graph 001 011
balanced?
0101
1010
Every 1000
balanced* graph
0100 is Eulerian. 1101 1110
100 110
1100
Every Eulerian graph is balanced.
Euler's theorem
Let's recruit an ant that randomly walks through the graph. The
ant cannot use the same edge twice!
Euler's theorem
3 1
8
7
1
3
6
4 2
8
10
7
11
1
EULERIANCYCLE
3
EULERIANCYCLE(BalancedGraph)
form Cycle by randomly 6 walking in BalancedGraph
4 2
(avoiding already visited edges)
while Cycle is not Eulerian
5
select a node newStart in Cycle with unexplored outgoing edges
form Cycle' by
traversing Cycle from newStart
and randomly walking afterwards
Cycle ← Cycle'
return Cycle
Universal string problem
3
0011
001 011
2 7 9 10
0001 0010 1011 0111
8
EULERIANCYCLE
0101
EULERIANCYCLE(BalancedGraph)
1001 0000 form
000 Cycle by 010 randomly 101 walking in 111
BalancedGraph
1111 0110
6 1 (avoiding already visited edges) 11 4
while Cycle is not Eulerian1010
select
1000
a node newStart
0100
in14
Cycle with unexplored1110
1101
outgoing edges
form
16 Cycle' by15 13 12
traversing Cycle from newStart
and randomly walking afterwards
100 110
Cycle ← Cycle' 1100
return Cycle 5
Outline
what is genome sequencing?
exploding newspapers
the string reconstruction problem
string reconstruction as a Hamiltonian path problem
string reconstruction as an Eulerian path problem
similar problems with different fates
de Bruijn graphs
Euler's theorem
assembling read-pairs
de Bruijn graphs face harsh realities of assembly
k-mers → de Bruijn → Genome
TAATGCCATGGGATGTT
CC
CCA GCC
CA GC
CAT TGC
ATG
TAA AAT ATG TGT GTT
TA AA AT TG GT TT
ATG
GAT TGG
GA GG
GGA GGG
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
Multiple Eulerian paths
TAATGCCATGGGATGTT
CC CC CC
CA GC CA GC CA GC
GA GG GA GG GA GG
GGA GGG GGA GGG GGA GGG
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
Multiple Eulerian paths
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
TAATGCCATGGGAT
TAATGCCATGGGATG
TAATGCCATGGGATGT
TAATGCCATGGGATGTT TAA
TAAT
TAATG
TAATGG
TAATGGG
TAATGGGA
TAATGGGAT
TAATGGGATG
TAATGGGATGC
TAATGGGATGCC
TAATGGGATGCCA
TAATGGGATGCCAT
TAATGGGATGCCATG
TAATGGGATGCCATGT
TAATGGGATGCCATGTT
CC CC
CA GC CA GC
ATG ATG
GAT TGG GAT TGG
GA GG GA GG
GGA GGG GGA GGG
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
Breaking genome into contigs
TAATGCCATGGGATGTT
TAATGGGATGCCATGTT
CC
TGCCAT
CCA GCC
CA GC
CAT TGC
ATG ATG
TAA AAT ATG TGT GTT
TAAT TA ATG
AA AT TG GT TT TGTT
ATG ATG
GAT TGG
GA GG
GGA GGG
GGGAT GGG TGG
Paired-end reads
tiple identical copies of genome
paird-end
sequencing: generate
read pair two reads from the
ends of each fragment,
200 bp 200 bp separated by a fixed
insert size distance
From k-mers to paired k-mers
genome
…GTAACCCGGTGGAACGGACTCGGGGA…
read1 read2
Disclaimers
read1 and read2 are typically sampled from different strands
(→ … ← rather than → … →)
the distance between pair-end reads is measured with errors
Paired k-mer composition
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGTT) =
TAA GCC
AAT CCA
ATG CAT
TGC ATG
GCC TGG
CCA GGG
CAT GGA
ATG GAT
TGG ATG
GGG TGT
GGA GTT
We will represent a paired (k,d)-mer as a 2-line expression, e.g.
the paired (3,1)-mer TAA GCC is represented as
TAA
GCC
String reconstruction problem
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGTT) =
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
String reconstruction problem
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGTT) =
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
AAT ATG ATG CAT CCA GCC GGA GGG TAA TGC TGG
CCA CAT GAT GGA GGG TGG GTT TGT GCC ATG ATG
problem description
reconstruct a string from its paired k-mer composition
input: a collection of paired k-mers
output: a string Genome such that
PairedCOMPOSITIONk,d(Genome) is equal to the given collection
of paired k-mers
String reconstruction problem
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
problem description
reconstruct a string from its paired k-mer composition
input: a collection of paired k-mers
output: a string Genome such that
PairedCOMPOSITIONk,d(Genome) is equal to the given collection
of paired k-mers
String reconstruction problem
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
GCC CCA CAT ATG TGG GGG GGA GAT ATG TGT GTT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG TGT GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG TGT GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
Gluing identically labeled nodes
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG TGT GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
Gluing identically labeled nodes
PAIREDDEBRUIJN3,1(TAATGCCATGGGATGTT)
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
AAT
AA TGC CCA ATG GGG
CCA
CC AT TG ATG GC CC GGG CA AT GAT TG GG TGT GG
CA AT TG GG GG GA AT TG GT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
ATG GGG
AT GAT TG GG TGT GG
GA AT TG GT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
ATG GGG
AT GAT TG GG TGT GG
GA AT TG GT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
GGG
GG TGT GG
TG GT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
GGG
TGT
GG
GT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
GGG
TGT
GG
GT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG TGT GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG TGT GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
TAA AAT ATG TGC GCC CCA CAT ATG TGG GGG GGA
TA GCC AA CCA AT CAT TG ATG GC TGG CC GGG CA GGA AT GAT TG ATG GG TGT GG GTT GA
GC CC CA AT TG GG GG GA AT TG GT TT
Paired k-mers → paired de Bruijn
PAIREDCOMPOSITION3,1(TAATGCCATGGGATGT
T)
GCC CCA CAT
TGC GC TGG CC GGG CA GGA AT
ATG TG GG GG GA
PAIREDDEBRUIJN3,1(PAIREDCOMPOSITION3,1(TAATGCCATGGGATGTT))
Paired k-mers → paired de Bruijn
PAIREDDEBRUIJN
PAIREDDEBRUIJN(paired-k-mers)
for each pair from paired-k-mers
represent pair as edge between
PAIREDPREFIX(pair) and PAIREDSUFFIX(pair)
glue ALL nodes with identical labels
PAIREDEBRUIJN
PAIREDDEBRUIJN(paired-k-mers)
form a node for each paired (k-1)-mer from paired-k-mers
for each pair from paired-k-mers
connect PAIREDPREFIX(pair) with
PAIREDSUFFIX(pair) by an edge
Multiple Eulerian paths
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
TAATGCCATGGGAT
TAATGCCATGGGATG
TAATGCCATGGGATGT
TAATGCCATGGGATGTT TAA
TAAT
TAATG
TAATGG
TAATGGG
TAATGGGA
TAATGGGAT
TAATGGGATG
TAATGGGATGC
TAATGGGATGCC
TAATGGGATGCCA
TAATGGGATGCCAT
TAATGGGATGCCATG
TAATGGGATGCCATGT
TAATGGGATGCCATGTT
CC CC
CA GC CA GC
ATG ATG
GAT TGG GAT TGG
GA GG GA GG
GGA GGG GGA GGG
AAT ATG ATG ATG CAT CCA GAT GCC GGA GGG GTT TAA TGC TGG TGT
Unique Eulerian path
TAA
TAAT
TAATG
TAATGC
TAATGCC
TAATGCCA
TAATGCCAT
TAATGCCATG
TAATGCCATGG
TAATGCCATGGG
TAATGCCATGGGA
GCC
GCCA
GCCAT
GCCATG
GCCATGG
GCCATGGG
GCCATGGGA
GCCATGGGAT
GCCATGGGATG
GCCATGGGATGT
GCCATGGGATGTT
PAIREDDEBRUIJN3,1(PAIREDCOMPOSITION3,1(TAATGCCATGGGATGTT))
Unique Eulerian path
TAATGCCATGGGAGTT
PAIREDDEBRUIJN3,1(PAIREDCOMPOSITION3,1(TAATGCCATGGGATGTT))
Outline
what is genome sequencing?
exploding newspapers
the string reconstruction problem
string reconstruction as a Hamiltonian path problem
string reconstruction as an Eulerian path problem
similar problems with different fates
de Bruijn graphs
Euler's theorem
assembling read-pairs
de Bruijn graphs face harsh realities of assembly
Some unrealistic assumptions
perfect coverage
(every k-mer from the genome is represented by a read)
error-free reads
known multiplicities of k-mers
fixed distance between paired reads
…
Some unrealistic assumptions
imperfect coverage
(every k-mer from the genome is represented by a read)
error-prone reads
unknown multiplicities of k-mers
inexact distance between paired reads
…
Imperfect coverage
ATGCCGTATGGACAACGACT
ATGCCGTATG
GCCGTATGGA
GTATGGACAA
GACAACGACT
ATGCC TGCCG GCCGT CCGTA CGTAT GTATG TATGG ATGGA TGGAC GGACA
ATGC TGCC GCCG CCGT CGTA GTAT TATG ATGG TGGA GGAC GACA
Bubble!
Error-prone reads
Error-prone reads