Finding Optimal Pairs of Patterns nach Hideo Bannai, Heikki Hyyrö, Ayumi Shinohara, Masayuki...

Preview:

Citation preview

Finding Optimal Pairs of Patterns

nach Hideo Bannai, Heikki Hyyrö, Ayumi Shinohara, Masayuki Takeda, Kenta Nakai, and Satoru Miyano

von Jan Beisenkamp

2

Inhalt

I. Einleitung

II. Notationen

III. Problemdefinition

IV. Datenstrukturen- (Generalized) Suffix Tree- Suffix Array

V. 2 Algorithmen

VI. Umsetzung mit Suffix Arrays

VII. Beispiele

3

Einleitung

• Suche nach optimalen Paaren von Stringmustern• Substrings zur Einteilung von Strings anhand

– von zwei disjunkten Sets (positiv/negativ Beispiele)– eines numerischen Attributs

Maximierung eines entsprechenden Scores• hier: Zwei Substrings mit einer beliebigen

bool‘schen Kombination

4

Einleitung

• Mustererkennung in der Bioinformatik wichtig

• Viele Arbeiten zu dem Thema, Highlights hier:– Effizienter O(N²) Algorithmus bei O(N²) möglichen

Ergebnissen– Beliebige Bool‘sche Funktionen zeigen komplexes

Zusammenspiel der Muster

5

Notationen

• Σ Alphabet, Σ* String• x, y, z sind jeweils Präfix, Substring und Suffix des

Strings w = xyz• length(w) ist die Länge des Strings w• w[i] i-tes Zeichen von w; w[i:j] Substring von i bis j• |S| Kardinalität der Menge S

6

Notationen

• Ψ(p,s) bool‘sche Funktion die genau dann true ist, wenn p Substring von s ist

• ‹p,F,q› (bool‘sches) Musterpaar, gebildet aus Substrings p, q und einer bool‘schen Funktion FBedeutung: Ψ(‹p,F,q›,s) = F(Ψ(p,s),Ψ(q,s))

7

Notationen

• Wir sagen ein Muster oder Musterpaar π passt zu s genau dann wenn Ψ(π,s) = true

• Für Stringmenge S={s1,…,sm}, ist M(π,S) die Teil-Menge aller String zu denen π passt

• Wir gehen davon aus, dass jedem String si ein numerisches Attribut ri zugeordnet ist. Dann gilt

}),(|{),( truesSsSM ii

)),(|(),(

truesrr iiSM i

8

Problemdefinition

• Gegeben sein eine Menge S={s1,…,sm} von Strings mit jeweils zu si assoziierten numerischen Werten ri, sowie eine score FunktionGesucht wird ein Bool‘sches Musterpaar

das score(|M(π)|,ΣM(π) ri) maximiert.

150* ,...,,,|,, FFFqpqFp

9

Positiv/Negativ Beispiele

• Gegeben sind zwei Mengen S1 und S2, mit Positiv- bzw. Negativ-Beispielen und wir suchen ein Muster das besser zu S1 als zu S2 passt

• Wir wählen S=S1 υ S2 und ri = 1 für si aus S1 und 0 sonst

• score erhält nun |M(π,S)| und = |M(π,S1)|

• Mögliche score-Funktionen sind der Informationsgewinn, der Gini Index oder der Chi-Quadrat Test

),( SM ir

10

Muster mit Korrelation

• Gegeben sind eine Sequenzmenge S und die Attribute ri

• Gesucht wird ein Musterpaar, dessen Auftreten in den Sequenzen sich mit ri korrelieren lassen.

• Eine Beispielfunktion ist die Inter-Klassen-Varianz

• Auch möglich ist z.B. ein Wilcoxon Rang Summen Test

)(

2||

12

,)(,)(

),(

M i

m

i i ryMxxm

ry

x

yyxscore

11

Datenstukturen

• Algorithmus konzeptuell entwickelt auf (generalized) suffix trees

• zur effizienteren Implementierung ersetzt durch Suffix Arrays

12

Suffixtree

• Ein Suffixtree zu einem String s ist ein gewurzelter Baum, dessen Kanten mit Substrings von s beschriftet sind und der folgende Kriterien erfüllt:– Sei l(v) der String der durch Konkatenation der

Substrings an den Kanten von der Wurzel zu v steht– Für jedes Blatt stellt l(v) einen Suffix von s dar– Für jeden Suffix existiert genau ein solches Blatt– Jeder innere Knoten hat mindestens zwei ausgehende

Kanten die mit unterschiedlichen Buchstaben beginnen

13

Suffixtree

• Banana$

• a$• ana$• anana$• Banana$• na$• nana$

a

$

nana$

$

na

$

na$

Banana$

14

Generalized Suffix Tree

• Erweiterung für m Strings S={s1,…,sm}

• Erzeugung eines Suffixtrees für s1$1…sm$m wobei $1…,$m eindeutige, unterschiedliche Endmarkierungen sind.

• Pfade werden beim ersten Auftretenden $i beendet und das entstandene Blatt mit idi markiert

15

Generalized Suffix Tree

• Banana$Banane#

• a$• ana$• anana$• anane#• ane#• Banana$• Banane#• e#• na$• nana$• nane#• ne#

a

$

n

$

n

$

n

e#

Banan

a$

e#aa$

e#

n

a$

e#e#a

e#

16

Suffix Array

• Ein Suffix-Array zu einem String s der Länge n ist eine Permutation der Zahlen 1…n die die lexikographische Sortierung der Suffixe anzeigt

• AS[i]=j zeigt, dass s[j:n] der i-te Suffix in lexikographischer Ordnung ist.

• Meist begleitet von einem lcp-Array, dass die Länge der längsten gemeinsamen Präfixe zweier benachbarten Suffixe enthält

lcps[i]=max{k|s[As[i-1]:As[i-1]+k-1]=s[As[i]:As[i]+k-1]}

17

Suffix Array

sortiert

6. a

4. ana

2. anana

1. Banana

5. na

3. nana

Suffixe:

1. Banana

2. anana

3. nana

4. ana

5. na

6. a

a (1)

ana(3)

-(0)

-(0)

na(2)

String S=„Banana“

Suffixarray As=[6,4,2,1,5,3]

LCPs=[0,1,3,0,0,2]

18

Datenstukturen

• Der lca (lowest common ancestor) zweier Knoten ist der nächste gemeinsame Vorfahr beider

• Das (fast) Äquivalent im Suffixarray ist die rmq (range minimum query), die zu zwei Einträgen i,j das minimale Element von lcp[i:j] liefert

• Beide Abfragen lassen sich nach linearen preprocessing in konstanter Zeit beantworten

19

O(N³) Algorithmus

• Es gibt O(N) viele Möglichkeiten für ein einzelnes Muster, da:– GST hat maximal O(N) Knoten– es kommen nur Muster der Form l(v) in Frage

• Es gibt O(N²) Kandidatenpaare für π=‹p,F,q› • Für festes π kann M(π) und damit auch |M(π)| und

in O(N) mit Hilfe eines Linearzeit Substring Algorithmus berechnet werden.

• Da score-Funktion konstante Zeit braucht, ergibt sich insgesamt O(N³)

),( SM ir

20

O(N) Algorithmus

• Basiert auf Lösung für das color set size problem• Preprocessing erspart nach der Auswahl der

Kandidaten die O(N) für Substring-Test• Erweiterung dieses Algorithmus für .

– Berechnet, |M(l(v))| wenn alle ri=1

• Hilfsvariablen:– LF(v): Menge aller Blätter im Teilbaum mit v als Wurzel

– ci(v): Zahl der Blätter in LF(v) die mit idi markiert sind

– I(idi): Liste aller mit mit idi markierten Blätter (depth first)

))(( vlM ir

21

O(N) Algorithmus

• Für diese Knoten gilt:

• Gesuchte Ergebnis lässt sich umschreiben als:

• Diesen Subtrahend nennen wir Korrekturfaktor:

))),((())(( truesvlrr iivlM i

))),(()1(()( truesvlrcr iiivLF i

))),(()(()( truesvlrvcr iiivLF i

))),(()1(()),(( truesvlrcSvlcorr iii

22

O(N) Algorithmus

• Erzeugung von trivial bei bottom-up Durchlauf da rekursiv

• Ein paar nützliche Eigenschaften:– In I(idi) bilden Blätter aus LF(v) ein Intervall der Länge ci

– Ein Intervall der Länge ci in I(idi) enthält ci-1 benachbarte Knotenpaare

– Für enthält der Teilbaum mit Wurzel v auch lca(x,y)

– genau dann wenn ein mit idi markiert ist

)(vLF ir

)(, vLFyx

truesvl i )),(( )(vLFx

23

O(N) Algorithmus

• Ablauf erster Algorithmus– Für alle v: Initialisierung einen Korrekturwert auf 0

– Durchlaufe alle benachbarten x,y aus I(idi) und addiere jeweils ri in den Korrekturwert von lca(x,y)

– Nun gilt für alle v: Die Summe der Korrekturwerte-Werte des an v hängenden Teilbaums ist (ci(v)-1)ri

– Wiederholt man dies für alle I(idi) ergibt sich als Teilbaumsumme:

)),(())),(()1(( Svlcorrtruesvlrc iii

24

O(N) Algorithmus

• Errechnung von ist nun möglich• Linearzeit Algorithmus:

– Konstante Anzahl von Linearzeit-Durchläufen des Baumes

– Lineare Anzahl von lca-Anfragen in Konstanter Zeit

• ermöglicht Suche nach bestem Muster

))(( vlM ir

))(( vlM ir

25

O(N) Algorithmus

ABC$ 1BCAC# 1CAB* 0

I($)={3,5,7}I(#)={1,6,8,9}I(*)={2,4,10}

4

1

2

1 4

5 6

7 8

9

3

10

A

B

C

C#

C$* $ AC#

B*

B* #

C#

A$C

26

O(N²) Algorithmus

• So gesammelte Information reicht so nicht für 2 Muster, da komplizierte Mengenrelation nötig ist

• Leichte Abwandlung zur Findung von ‹p,F,q› :– wir wählen fixes l(v1) und markiere alle Strings und

korrespondierenden Blätter mit ψ(l(v1,si))

– Wir wenden den Algorithmus von vorher an aber sammeln getrennt für Wert von ψ(l(v1,si))

– Nun haben wir:

))),(()),((( 1)),((bsvltruesvlrr iiibvlM i

27

O(N²) Algorithmus

• Für die Negation gilt:

• Dies ermöglicht die Bestimmung von:

und damit auch:

bvlM iii

iii

rbsvlr

bsvlfalsesvlr

)),((1

1

))),(((

))),(()),(((

},{,;))),(()),((( 21211 falsetruebbbsvlbsvlr iii

)))),((),),(((( 21))(,,(( 21truesvlsvlFrr iiivlFvlM i

28

O(N²) Algorithmus

• Bei fixem l(v1) können wir nun den O(N) Algorithmus nutzen

• Es gibt insgesamt O(N) Kandidaten für diesen Wert

Algorithmus braucht insgesamt O(N²) für die Auswertung von O(N²) möglichen Kandidaten

29

Umsetzung mit Suffix Arrays

• Suffix- + LCP-Array simulieren Baum

30

Umsetzung mit Suffix Arrays

• Suffixarray hat keine internen Knoten• Extraarray C der Länge N als Ersatz

• C[i] entspricht lca von AS[i-1] und AS[i]

• Der Korrekturfaktor für AS[i] und AS[j] wird in C[rmq(i+1,j)] gespeichert

• Bei mehr als zwei Kindern pro internem Knoten entsprechen mehrere C[i] dem selben Knoten, wird beim Auslesen korrigiert

31

Beispiele

• Anwendung zur Auswertung der Degeneration von mRNA in Hefe und Mensch– Zeitunterschiede um bis zu Faktor 100– u.A. beeinflusst durch Proteinbindung in der 3‘UTR

• Algorithmus in C mit POSIX Threads• Sun Fire 15 mit 96 UltraSPARC III Cu 1.2 GHz• Nur Ergebnisse der Form qpqp )()(,)()(

32

Positiv-/Negativ-Mengen, Hefe

• Menge Sf mit 393 schnell degenerierenden Sequenzen (Halbwehrzeit < 10 min)

• Menge Ss mit 379 langsam degenerierenden Sequenzen (Halbwehrzeit > 50 min)

• Alle Sequenzen Länge 100 nt• 46.554 Einzelmuster2.167.274.916

Musterpaare• Berechnungsdauer 3~4 Minuten• Auswertung mit Chi-Quadrat Test

33

Positiv-/Negativ-Mengen, Hefe

fnStnSMfn

tpSfpSMtp

fntnfptnfptpfntp

fnfptntpSSscore

Ss

ff

sf

;),(

;),(

))()()((

)**( 2

34

Positiv-/Negativ-Mengen, Hefe

• Oft UGUA – bekannter Verfall-Promoter

• enthält ⌐AUCC und ⌐ GUUG– vermutete Stabilisatoren

35

Rangbasiert, Mensch

• 2306 mRNA Sequenzen und assoziierte Verfallsraten (hepatozelluläres Karzinom)

• Durchschnittslänge 925,54 nt mit Gesamtlänge 2.134.294 nt

• Unausgeglichene Verteilung daher:Wilcoxon Rang Summen Test– Aufsteigend sortiert und Rang entsprechend Position in

Sortierung

36

Rangbasiert, Mensch

)(;)(

12/)1)((

2/)1((),(

M iryMx

SxS

Sxyyxz

37

Rangbasiert, Mensch

• Enthält auch UGUAUA, wie die Hefe

• A und U reiche Elemente– Bekannt für Deadenylierung Verfall

ENDE

Fragen?

Irgendwas unklar?

39

Quellen

• Hideo Bannai, Heikki Hyyrö , Ayumi Shinohara, Masayuki Takeda, Kenta Nakai, and Satoru Miyano, "Finding Optimal Pairs of Patterns", In Proceedings of the 4th International Workshop on Algorithms in Bioinformatics (WABI 2004), LNBI 3240:450-462, (2004).– http://bonsai.ims.u-tokyo.ac.jp/~bannai/papers/wabi2004.pdf

• [Algorithm Engineering, Uni-Dortmund, WS 05/06– http://ls11-www.cs.uni-dortmund.de/lehre/WiSe0506/ae.jsp ]

Recommended