Sequence Alignment Algorithms Morten Nielsen Department of systems biology, DTU.

Post on 11-Jan-2016

218 views 0 download

Transcript of Sequence Alignment Algorithms Morten Nielsen Department of systems biology, DTU.

SequenceAlignment Algorithms

Morten NielsenDepartment of systems biology,

DTU

Why learn about alignment algorithms?• All publicly available alignment

programs do the same thing– Sequence alignment using amino acids

substitution matrices and affine gap penalties

• This is fast but not optimal– Protein alignment is done much more

accurate using sequence profiles and position specific gap penalties (price for gaps depends on the structure)

• Must implement your own alignment algorithm to do this

Outline

• What you have been told is not entirely true :-)– Alignment algorithms are more complex

• The true sequence alignment algorithm story– The slow algorithm (O3)– The fast algorithm (O2)

Sequence alignmentThe old Story

Pairwise alignment: the solution

”Dynamic programming” (the Needleman-Wunsch algorithm)

Match score = 1Mismatch score -1Gap penalty = -2

Alignment depicted as path in matrix

T C G C A

T

C

C

A

T C G C A

T

C

C

A

TCGCATC-CA

TCGCAT-CCA

Score=2

Score=0

Match score = 1Mismatch score = -1

Gap penalty = -2

Alignment depicted as path in matrix

T C G C A

T

C

C

A

x

Meaning of point in matrix: all residues up to this point have been aligned (but there are many different possible paths).

Position labeled “x”: TC aligned with TC

--TC -TC TCTC-- T-C TC

Dynamic programming: computation of scores

T C G C A

T

C

C

A

x

Any given point in matrix can only be reached from three possible positions (you cannot “align backwards”).

=> Best scoring alignment ending in any given point in the matrix can be found by choosing the highest scoring of the three possibilities.

Dynamic programming: computation of scores

T C G C A

T

C

C

A

x

Any given point in matrix can only be reached from three possible positions (you cannot “align backwards”).

=> Best scoring alignment ending in any given point in the matrix can be found by choosing the highest scoring of the three possibilities.

score(x,y) = max

score(x,y-1) - gap-penalty

Dynamic programming: computation of scores

T C G C A

T

C

C

A

x

Any given point in matrix can only be reached from three possible positions (you cannot “align backwards”).

=> Best scoring alignment ending in any given point in the matrix can be found by choosing the highest scoring of the three possibilities.

score(x,y) = max

score(x,y-1) - gap-penalty

score(x-1,y-1) + substitution-score(x,y)

Dynamic programming: computation of scores

T C G C A

T

C

C

A

x

Any given point in matrix can only be reached from three possible positions (you cannot “align backwards”).

=> Best scoring alignment ending in any given point in the matrix can be found by choosing the highest scoring of the three possibilities.

score(x,y) = max

score(x,y-1) - gap-penalty

score(x-1,y-1) + substitution-score(x,y)

score(x-1,y) - gap-penalty

Dynamic programming: computation of scores

T C G C A

T

C

C

A

x

Any given point in matrix can only be reached from three possible positions (you cannot “align backwards”).

=> Best scoring alignment ending in any given point in the matrix can be found by choosing the highest scoring of the three possibilities.

Each new score is found by choosing the maximum of three possibilities. For each square in matrix: keep track of where best score came from.

Fill in scores one row at a time, starting in upper left corner of matrix, ending in lower right corner.

score(x,y) = max

score(x,y-1) - gap-penalty

score(x-1,y-1) + substitution-score(x,y)

score(x-1,y) - gap-penalty

Dynamic programming: example

A C G TA 1 -1 -1 -1C -1 1 -1 -1G -1 -1 1 -1T -1 -1 -1 1

Gaps: -2

Dynamic programming: example

A C G TA 1 -1 -1 -1C -1 1 -1 -1G -1 -1 1 -1T -1 -1 -1 1

Gaps: -2

Dynamic programming: example

A C G TA 1 -1 -1 -1C -1 1 -1 -1G -1 -1 1 -1T -1 -1 -1 1

Gaps: -2

Dynamic programming: example

A C G TA 1 -1 -1 -1C -1 1 -1 -1G -1 -1 1 -1T -1 -1 -1 1

Gaps: -2

Dynamic programming: example

T C G C A: : : :T C - C A1+1-2+1+1 = 2

A now the truth

Dynamic programming: computation of scores

T C G C A

T

C

C

A

x

Any given point in matrix can only be reached from three possible positions (you cannot “align backwards”).

=> Best scoring alignment ending in any given point in the matrix can be found by choosing the highest scoring of the three possibilities.

Dynamic programming: example

What about j-2 and a gap extension?

And now the true algorithm

V L I L P

V

L

L

P

n

m

Start from here

How does it work (score matrix d)?

5

V L I L P

V

L

L

P

1 4 1 -3

1 5 2 5 -4

1 5 2 5 -4

-3 -4 -3 -4 10

Blosum 50 matrixd matrix

How does it work? (The slow way O3)

V L I L P

V

L

L

P

9 3

17 10 4

10 15 5

4 5 10

0

0

0

0

000000

Start from here!

Gap-open W1 = -5Gap-extension U = -1

d matrixD matrix

How does it work? (The slow way O3)

V L I L P

V

L

L

P

17 10 4

10 15 5

4 5 10

0

0

0

0

000000

• Check all positions in (green) row and column to check score for gap extension.

• CPU intensive (O3)

Gap-open W1 = -5Gap-extension U = -1

d matrixD matrix

And now you!

How does it work? Fill out the D matrix

20

V L I L P

V

L

L

P

14 3

11 17 10 4

9 10 15 5

2 4 5 10

0

0

0

0

000000

• Check all positions in (green) row and column to check score for gap extension.

• CPU intensive (O3)

Gap-open W1 = -5Gap-extension U = -1

d matrixD matrix

How does it work (The slow way O3)

20

V L I L P

V

L

L

P

18 14 9 3

11 15 17 10 4

8 9 10 15 5

2 3 4 5 10

0

0

0

0

000000

• Check all positions in (green) row and column to check score for gap extension.

• CPU intensive (O3)

Gap-open W1 = -5Gap-extension U = -1

d matrixD matrix

And now the fast algorithm (O2)

Database (m)

Qu

ery

(n)

Open a gap Extending a gap

P

Q

Affine gap penalties

And now the fast algorithm (O2)

Database (m)

Qu

ery

(n)

Open a gap Extending a gap

P

Q

And now the true algorithm (cont.)

Database (m)

Qu

ery

(n)

P

Q

How does it work (D,Q, and P-matrices)D

P

m

n

V L I L P

V

L

L

P

-1

5 -1

0

0

0

0

000000

V L I L P

V

L

L

P

5

2 3 4 5 10

0

0

0

0

000000

W1 = -5U = -1

How does it work (D,Q,P, and E-matrices)D

P

m

n

V L I L P

V

L

L

P

0 -1

5 -1

0

0

0

0

000000

V L I L P

V

L

L

P

5

2 3 4 5 10

0

0

0

0

000000

W1 = -5U = -1

How does it work (D,Q, and P-matrices)D Q

m

n

V L I L P

V

L

L

P

5

-1 -1 -1 -1 -1

0

0

000000

V L I L P

V

L

L

P

5

2 3 4 5 10

0

0

0

0

000000

W1 = -5U = -1

How does it work (D,Q,P, and E-matrices)D Q

m

n

V L I L P

V

L

L

P

0 5

-1 -1 -1 -1 -1

0

0

000000

V L I L P

V

L

L

P

5

2 3 4 5 10

0

0

0

0

000000

W1 = -5U = -1

How does it work (D, Q, and P-matrices)D Q

m

n

V L I L P

V

L

L

P

0 5

-1 -1 -1 -1

0

0

000000

V L I L P

V

L

L

P

5

2 3 4 5 10

0

0

0

0

000000

PV L I L P

V

L

L

P

0 -1

5 -1

0

0

0

0

000000

-1

How does it work (D, Q, and P-matrices)D Q

m

n

V L I L P

V

L

L

P

0 5

-1 -1 -1 -1 -1

0

0

000000

V L I L P

V

L

L

P

15 5

2 3 4 5 10

0

0

0

0

000000

PV L I L P

V

L

L

P

0 -1

5 -1

0

0

0

0

000000

How does it work. Eij-matrix.(Keeping track on the path)

eij = 1 matcheij = 2 gap-opening database (move vertical) eij = 3 gap-extension database(move vertical) eij = 4 gap-opening query (move horizontal) eij = 5 gap-extension query(move horizontal)

V L I L P

V

L

L

P

2

4 1

0

0

0

0

000000

The fast algorithm (cont.)

Database (m)

Qu

ery

(n)

P

Q

eij = 1 matcheij = 2 gap-opening database eij = 3 gap-extension database eij = 4 gap-opening query eij = 5 gap-extension query

E14

5

2

3

How does it work (D,Q,P, and E-matrices)D Q

m

n

V L I L P

V

L

L

P

0 5

-1 -1 -1 -1 -1

0

0

000000

V L I L P

V

L

L

P

15 5

2 3 4 5 10

0

0

0

0

000000

PV L I L P

V

L

L

P

0 -1

5 -1

0

0

0

0

000000

E

V L I L P

V

L

L

P

1 2

4 1

0

0

0

0

000000

How does it work (D,Q,P, and E-matrices)D Q

P

m

n

E

6

V L I L P

V

L

L

P

10 12 9 3

3 4 5 10 4

-2 -2 -1 0 5

-1 -1 -1 -1 -1

0

0

0

0

000000

1

V L I L P

V

L

L

P

1 1 3 3

5 1 1 1 3

5 1 4 1 2

5 5 5 4 1

0

0

0

0

000000

13

V L I L P

V

L

L

P

9 4 -2 -1

11 12 5 -1 -1

8 9 10 0 -1

2 3 4 5 -1

0

0

0

0

000000

20

V L I L P

V

L

L

P

18 14 9 3

11 15 17 10 4

8 9 10 15 5

2 3 4 5 10

0

0

0

0

000000

And the alignment

Dm

n

20

V L I L P

V

L

L

P

18 14 9 3

11 15 17 10 4

8 9 10 15 5

2 3 4 5 10

0

0

0

0

000000

E1

V L I L P

V

L

L

P

1 1 3 3

5 1 1 1 3

5 1 4 1 2

5 5 5 4 1

0

0

0

0

000000

VLILPVL-LP

And the alignment. Gap extensions

D-matrix m

n

19

V L I PL

V

L

L

P

13 17 9 3

9 14 12 10 4

7 8 9 15 5

1 2 3 5 10

0

0

0

0

000000

E1

V L I L P

V

L

L

P

1 1 3 3

1 1 1 1 3

5 1 5 1 2

5 5 5 4 1

0

0

0

0

000000

A

10

13

10

4

0

A

1

1

4

5

0

E-matrix

And the alignment

Dm

n

19

V L I PL

V

L

L

P

13 17 9 3

9 14 12 10 4

7 8 9 15 5

1 2 3 5 10

0

0

0

0

000000

E1

V L I L P

V

L

L

P

1 1 3 3

1 1 1 1 3

5 1 5 1 2

5 5 5 4 1

0

0

0

0

000000

A

10

13

10

4

0

A

1

1

4

5

0

15 -5 -1 = 9?

And the alignment

Dm

n

19

V L I PL

V

L

L

P

13 17 9 3

9 14 12 10 4

7 8 9 15 5

1 2 3 5 10

0

0

0

0

000000

E1

V L I L P

V

L

L

P

1 1 3 3

1 1 1 1 3

5 1 5 1 2

5 5 5 4 1

0

0

0

0

000000

A

10

13

10

4

0

A

1

1

4

5

0

5 -5 -1 = 9?

And the alignment

Dm

n

19

V L I PL

V

L

L

P

13 17 9 3

9 14 12 10 4

7 8 9 15 5

1 2 3 5 10

0

0

0

0

000000

E1

V L I L P

V

L

L

P

1 1 3 3

1 1 1 1 3

5 1 5 1 2

5 5 5 4 1

0

0

0

0

000000

A

10

13

10

4

0

A

1

1

4

5

0

VLIALPVL--LP

15 -5 -1 = 9? ***

5 -5 -1 = 9?

And now you!

Summary

• Alignment is more complicated than what you have been told.

• Simple algorithmic tricks allow for alignment in O2 time

• More heuristics to improve speed– Limit gap length– Look for high scoring

regions