Skjulte Markov Modeller og Genidentifikation 2003

Relaterede dokumenter
Modul 3: Sandsynlighedsregning

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

Side 1 af 14. Eksamen: Bioinformatik It og Sundhed 27 Jan 2011 kl 9-13

Side%1%af%14% Eksamen: Bioinformatik It og Sundhed 27 Jan 2011 kl 9-13

Pladseffektive implementeringer af HMM algoritmer Carsten Sørensen. Speciale, Juni 2012 Vejleder : Christian Nørgaard Storm Pedersen

Danmarks Tekniske Universitet

Genetiske afstande og afstandsmatricer

En forsker har lavet et cdna insert vha PCR og har anvendt det følgende primer sæt, som producerer hele den åbne læseramme af cdna et:

Biologi opgave Opsamling: Cellebiologi (Bioanalytiker modul3)

Fra DNA til protein - lærerens tekst

Side 1 of 13. Kursus navn: Kursus nr Introduktion til Bioinformatik

Struktur og funktion af gener

Biologiske signaler i graviditeten - Genetisk information

Side 1 af 13. Eksamen: Bioinformatik It og Sundhed 27 Jan 2011 kl 9-13

Danmarks Tekniske Universitet

Menneskets væskefaser

Velkommen. Test dit eget DNA med PCR. Undervisningsdag på DTU Systembiologi. Undervisere: Sebastian, Louise og Ana

Hvorfor er genfinding et vanskeligt problem?

Gen-identifikation ved sekvens-sammenligning. Tejs Scharling. Specialerapport. Datalogisk Institut Aarhus Universitet Danmark

BM121 Resume af tirsdags forlæsningen, Uge 47

Genetiske Aspekter af HCM hos Kat. - en introduktion til forskningsprojektet

3u BI, terminsprøve (Bio A)

Bioinformatik Algoritmiske Aspekter. Christian Nørgaard Storm Pedersen BRICS. Datalogisk Institut Aarhus Universitet.

1. Hvad er kræft, og hvorfor opstår sygdommen?

Side 1 of 12. Kursus navn: Kursus nr Introduktion til Bioinformatik

Velkommen. Test dit eget DNA med PCR. Undervisningsdag på DTU Systembiologi. Undervisere:

Cellekernen (Nucleus) Sebastian Frische Anatomisk Institut

Dynamisk programmering

at du trænes i at genkende aminosyrer i en simpel proteinstruktur (pentapeptid = lille protein bestående af 5 (penta) aminosyrer)

Kromosomer med genet: Genotype (= arveformel): RR Rr rr Fænotype (= fremtoning): Rød Rød Hvid

Side 1 of 11. Kursus navn: Kursus nr Introduktion til Bioinformatik

Kvægavlens teoretiske grundlag

Bioinformatik Open Source Software i biologiens tjeneste

Eukaryote celler arbejder

SUBS_BACLE 1 0 ELYA_BACHD 1 MRQSLKVMVLSTVALLFMANPAAASEEKKEYLIVVEPEEVSAQSVEESYD 50

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

BIOTEKNOLOGI HØJT NIVEAU

CELLE OG VÆVSLÆRE 1 LEKTION 1. Nima Kalbasi, DDS Anatomi og fysiologi

Banan DNA 1/6. Formål: Formålet med øvelsen er at give eleverne mulighed for at se DNA strenge med det blotte øje.

Klip-og-kopier DNA: reparér mutationer med 'genom-redigering' DNA, RNA og protein

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Identifikation af potentielle microrna gener ved hjælp af komparativ genomanalyse

DM507 Algoritmer og datastrukturer

Cellen og dens funktioner

Cellens livscyklus GAP2. Celledeling

DM507 Algoritmer og datastrukturer

Side 1 of 12. Kursus navn: Kursus nr Introduktion til Bioinformatik

Dynamisk programmering

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Plan. Markovkæder Matematisk modelling af kølængde, yatzy, smittespredning og partikelbevægelser. Materiale mm.

# Problemet med genetisk ustabilitet

(19) DANMARK (11) DK B1 (12) PATENTSKRIFT. Ci2. Patent- og Varemærkestyrelsen

Dynamisk programmering. Flere eksempler

Kromosomforandringer. Information til patienter og familier

Forskningsnyheder om Huntingtons Sygdom På hverdagssprog Skrevet af forskere. Til det globale HS-fællesskab Ofte stillede spørgsmål, januar 2011

Kromosomforandringer. Information til patienter og familier

(19) DANMARK (11) DK B1 ( 1 2) PATENTSKRIFT. Patent- og Varemærkestyrelsen

Dynamisk programmering

27611 Eksamen Sommer 2007

DM507 Algoritmer og datastrukturer

Dynamisk programmering. Flere eksempler

På grund af reglerne for copyright er det ikke muligt at lægge figurer fra lærebøger på nettet. Derfor har jeg fjernet figurerne fra slides ne, men

Deoxyribonukleinsyre

Danmarks Tekniske Universitet

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Generne bestemmer. Baggrundsviden og progression: Niveau: 8. klasse. Varighed: 12 lektioner

Det lyder enkelt, men for at forstå hvilket ærinde forskerne er ude i, er det nødvendigt med et indblik i, hvordan celler udvikles og specialiseres.

Dansk resumé for begyndere

Proteiners byggesten er aminosyrer

Danmarks Tekniske Universitet

Lærervejledning Til internet-spillet Kræftkampen og undervisningshæftet Hvorfor opstår kræft? Biologi klasse

BIOLOGI A-NIVEAU NY ORDNING. Tirsdag den 19. august Kl STX082-BIA STUDENTEREKSAMEN AUGUST 2008

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Ting man gør med Vektorfunktioner

Er der flere farver i sort?

Proteiner: en introduktion. Modul 1; F13 Rolf Andersen, 18/2-2013

Epigenetik Arv er andet end gener

Pointen med Funktioner

EKSAMENSOPGAVER. Eksamensopgaver uden bilag

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Abstrakte datatyper C#-version

Simulering af stokastiske fænomener med Excel

(19) DANMARK. 2six,l (12) PATENTSKRIFT. Patent- og Varemærkestyrelsen (11) DK B1

Ting man gør med Vektorfunktioner

Eksperimentel matematik Kommentarer til tag-med opgaver

Asger Hobolth (AU, Matematisk Institut): Kaffe, computere og konveks analyse kan kvantificere kendskabet til kræft

Regneark II Calc Open Office

Celle- og vævslære. Maria Jensen 1

Præsentation: Genetikeren Theo Dobzhansky har sagt: Nothing in biology makes sense except in the light of evolution.

Gennemsnit og normalfordeling illustreret med terningkast, simulering og SLUMP()

1. Afrikansk plante med mulig gavnlig virkning på diabetes type II. 2. Bestemmelse af genomer hos forskellige arter organismer

Hvad er en funktion? Funktioner og graftegning. Funktioners egenskaber. Funktioners egenskaber. f(b) y = f(x) f(a) f(a)

27611 Eksamen Sommer 2008

1. Afrikansk plante med mulig gavnlig virkning på diabetes type II. 2. Bestemmelse af genomer hos forskellige arter organismer

BIOTEKNOLOGI HØJT NIVEAU

Datastrukturer (recap)

Transkript:

Aarhus Universitet 18. december 2003 Datalogisk Institut Ny Munkegade, Bldg. 540 8000 Århus C Skjulte Markov Modeller og Genidentifikation 2003 Niels Christian Bach 19951570 Torben Lauritzen 19940336

Dette speciale er dedikeret til vores familier Trine, Sophia, Stine og Nanna.

Indhold 1. Indledning 1 1.1. Specialets opbygning.............................. 2 2. Biologisk model 4 2.1. Biologiske Begreber............................... 4 2.1.1. DNA................................... 4 2.1.2. Genom.................................. 7 2.1.3. Gen................................... 9 2.1.4. Proteinsyntese............................. 9 2.1.5. Evolution................................ 13 2.1.6. Anvendelse af geninformation..................... 14 2.2. Formalisering.................................. 14 3. Skjulte Markov Modeller 16 3.1. Grundlæggende begreber............................ 16 3.2. Parvis Alignment................................ 18 3.3. Viterbi og Forward algoritmen......................... 22 3.4. Parameterestimering.............................. 24 4. Push-algoritmen 25 4.1. Motivation.................................... 25 4.2. Push-algoritmen for to sekvenser....................... 26 4.2.1. Push................................... 26 4.2.2. Udførelse................................ 27 4.2.3. Backtracking.............................. 28 4.2.4. Pladsbesparelse og fronter 1...................... 28 4.2.5. Hirschbergs Pladsbesparelse...................... 31 4.2.6. Hirschberg og Skjulte Markov Modeller................ 34 4.3. Push-algoritmen for tre sekvenser....................... 34 4.3.1. Pladsbesparelse og fronter 2...................... 35 4.3.2. Hirschbergs Pladsbesparelse for tre sekvenser............ 36 4.3.3. Delproblem: To sekvens alignment.................. 37 4.4. Udvidelse til genidentifikation......................... 38 i

ii Indhold 5. Implementation 39 5.1. Implementation af algoritmen......................... 39 5.1.1. Opbygning............................... 39 5.1.2. Input.................................. 39 5.1.3. Implementation af Push-algoritmen.................. 41 5.1.4. Output................................. 44 5.1.5. Profiling................................. 45 5.1.6. Implementationsbetragtninger for Viterbi algoritmen........ 45 5.1.7. Spildplads i forbindelse med tresekvens projektion......... 45 5.1.8. Begrænsninger............................. 46 5.2. Eksperimenter udført på algoritmen..................... 47 5.2.1. Teoretiske mål............................. 47 5.2.2. Eksperimenterne............................ 48 5.2.3. Sammenligning af forskellige implementationer........... 49 5.2.4. Asymptotisk udførelsestid....................... 52 5.2.5. Asymptotisk pladsforbrug....................... 54 5.2.6. Modelafhængig udførelsestid...................... 56 5.2.7. Modelafhængigt pladsforbrug..................... 56 5.2.8. Afrunding af eksperimenterne..................... 59 6. Genidentifikation 61 6.1. Genfinder I................................... 61 6.2. Genfinder II................................... 63 6.3. Simulerede sekvenser.............................. 64 6.4. Gærsekvenser.................................. 65 7. Konklusion 67 7.1. Perspektiv.................................... 67 7.1.1. Parameterestimering.......................... 67 7.1.2. Blast-søgning.............................. 67 7.1.3. Grafisk interface/smm-designer.................... 68 A. XML 69 B. Emissionssandsynligheder 76 C. Kode 81 C.1. Getmaxprob................................... 81 C.2. Notify...................................... 82 C.3. Bestprob..................................... 83 C.4. getnotifylist.................................. 86 D. Summary in English 87

Tabeller 2.1. Genomstørrelser................................. 8 2.2. Livets kode................................... 11 3.1. Viterbi algoritmen............................... 18 3.2. Jukes-Cantor Substitutionsmodel....................... 20 5.1. Asymptotiske udførelsestider......................... 52 5.2. Asymptotisk pladsforbrug........................... 54 iii

1. Indledning...turning the pages that describe the miracle of human life, written in the mysterious language of all the ages, the language of God. Dr. Francis S. Collins Livets Sprog, eller Guds Sprog, som Dr. Collins 1 kalder det, har et alfabet, der består af kun fire bogstaver (A, G, C, T), og ordene i sproget er generne, de arveenheder, der definerer en organisme. Den samlede arvemasse for en organisme, genomet, kan betragtes som én lang sekvens af de fire bogstaver. Måden man finder generne på er ved at lede efter bestemte mønstre i denne sekvens, som antyder, at der måske er et gen. Desværre er det meget svært at finde gener, hvis man kun leder i én sekvens. Man kan være uheldig både at undgå at finde nogle gener, som rent faktisk er der, og man kan forudsige nogle gener, som ikke findes i virkeligheden. For at nedbringe usikkerheden prøver man ofte at finde de samme gener i to forskellige organismer på én gang. Det er muligt fordi to organismer fra beslægtede arter har arvemasser, der ligner hinanden meget. Fx er arvemassen mellem to mennesker 99.9% identiske. To forskellige organismer har derfor ofte gener tilfælles, som de har arvet fra en fælles stamfader, men hvor det ene måske staves en smule anderledes end det andet. Vores mål har været at lave et framework, som kan bruges til at sammenligne tre sekvenser og finde gener i dem alle tre samtidig. Derved håber vi at kunne bidrage til opklaring af gen/ikke-gen spørgsmålet for sekvenser, hvor dette stadig er uklart, når man fx kun sammenligner to sekvenser. Vores framework er baseret på en sandsynlighedsteoretisk model kaldet en Skjult Markov Model (SMM). Givet en genstruktur af de sekvenser vi sammenligner, tillægges denne struktur en sandsynlighed af vores SMM, og når vi maksimerer denne sandsynlighed (for alle genstrukturer), får vi det bedste bud på en genstruktur. Vores væsentligste bidrag er en pladseffektiv implementation af dette framework, som er uafhængig af den anvendte SMM. For at teste kvaliteten af vores implementation har vi både analyseret simulerede og ægte sekvenser og fundet genstrukturer i dem. En af fordelene ved at vi har brugt en SMM er 1 Direktør, National Human Genome Research Institute. Dr. Francis S. Collins stod i spidsen for det offentlige Human Genome Project, der skulle sekventiere det menneskelige genom. 1

2 KAPITEL 1. INDLEDNING ATG TTT GGT CTA CCT CAA CAG GAA GTC TCC GAA GAG GAG AAA AGA GCT CAT CAA GAA CAA ACT GAG AAA ACC TTG AAA CAG GCC GCT TAT GTG GCT GCG TTT CTT TGG GTT TCC CCA ATG ATC TGG CAT TTG GTG AAA AAG CAA TGG AAA TAA Figur 1.1.: Et ord fra Livets Sprog. Genet hedder TOM5 (Translocase Outer Membrane) og dets funktion er translokase, dvs. at katalysere proteintransport i den ydre membran i mitokondrierne. Genet stammer fra en organisme, der hedder Saccharomyces cerevisiae (gær), som er en af de bedst studerede organismer, der findes. nemlig, at vi har haft mulighed for at simulere et output, som i vores tilfælde er nogle sekvenser med en genstruktur. Dette output (hvor strukturen er fjernet) har vi brugt som input til vores framework. Resultatet har vi sammenlignet med det simulerede output inkl. struktur. Desuden har vi anvendt vores program med nogle ægte sekvenser fra fire forskellige slags gær (taget fra [K + 03]). At vælge den bedst mulige SMM, herunder at vælge SMMens parametre til at finde gener, er et omfattende arbejde, som ikke er en del af denne rapport. Til gengæld har vi, som tidligere nævnt, adskilt SMMen fra implementationen af algoritmen, så det efterfølgende er nemt at ændre SMMen og derved opnå bedre genidentifikationsresultater, end vi er i stand til, med den SMM og de parametre vi har brugt. 1.1. Specialets opbygning Resten af denne rapport er opbygget således: Kapitel 2 - Biologisk Model: Her opsummerer vi kort den biologiske verdens sammenhæng og funktion på genniveau. I slutningen af kapitlet formaliserer vi de biologiske begreber, vi anvender i resten af rapporten. Kapitel 3 - Skjulte Markov Modeller: I dette kapitel gennemgår vi den statistiske teori, vi vil anvende til at lave genidentifikationen, dvs. den måde vi vil forsøge at finde mønstre i sekvenserne. Kapitel 4 - Push-algoritmen: Principperne bag den algoritme, vi har implementeret, bliver gennemgået i dette kapitel. Vi starter med to sekvenser og udvider senere til tre sekvenser. Kapitel 5 - Implementation: Detaljer omkring hvordan vi har implementeret algoritmen. I slutningen af kapitlet er der en gennemgang af de eksperimenter, vi har gennemført for at undersøge, om implementationen lever op til de tids- og pladsmæssige krav, vi forudsiger.

1.1. SPECIALETS OPBYGNING 3 Kapitel 6 - Genidentifikation: I dette kapitel anvender vi vores implementation til at identificere gener i tre sekvenser. Både simulerede og ægte sekvenser er undersøgt. Bilag A - XML: Et eksempel på en SMM i vores XML-format. Bilag B - Emissionssandsynligheder: Initialisering af emissionssandsynligheder for Genfinder I. Bilag C - Kode: C-kode for de vigtigste metoder. Bilag D - Summary: Resumé på engelsk. På adressen http://www.genomics.dk/speciale/ er der en hjemmeside, hvor denne rapport findes i både postscript- og pdf-format. Desuden ligger kildekoden til frameworket på denne side.

2. Biologisk model Da specialet handler om at identificere gener, er det nødvendigt at have lidt baggrundsviden, for at vide hvad vi taler om i den resterende del. Derfor gennemgår vi i korte træk de relevante biologiske begreber, der knytter sig til arvelighedslæren eller genetikken. Efter introduktionen af de begreber, der er væsentlige for os, formaliserer vi de begreber vi anvender senere. 2.1. Biologiske Begreber Set med en genetikers øjne kan man overordnet inddele alle levende organismer i 3 hovedgrupper eller -domæner. For det første deler man op i Prokaryoter og Eukaryoter, hvor Prokaryoter igen deles op i Bakterier(Eubakterier) og Arker(Archaeabakterier) [A + 02, figur 1-21 s. 18]. Alle tre hoveddomæner antages at have den samme oprindelse, men de har udviklet sig forskelligt, efter de er blevet adskilt. Opdelingen er baseret på, at arvematerialet i Prokaryoter bevæger sig frit i cytoplasmaet i cellernes indre, medens Eukaryoter har en kerne i deres celler, som indeholder det komplette arvemateriale for organismen (pånær visse organeller 1, som fx mitokondrier), og at Arkers metabolisme fungerer som i Bakterier, medens deres reproduktionsmekanisme fungerer som i Eukaryoter. 2.1.1. DNA DNA (Deoxyribonucleicacid) er en lang kæde af mindre molekyler kaldet nukleotider eller baser, og kaldes derfor et polynukleotid. Baser er de mindste kemiske byggesten, som vi vil beskæftige os med. En base kan være enten A (Adenin), G (Guanin), C (Cytosin), T (Thymin) eller U (Urasil), hvor de første 2 betegnes puriner og de sidste 3 pyrimidiner. Figur 2.1 viser opbygningen af de forskellige baser. De fire første indgår i DNA, medens Thymin skiftes ud med Urasil i RNA, som vi omtaler senere. Baser er en del af et nukleotid, som, udover basen, består af et sukker med 5 kulatomer (dexoyribose) og en eller flere fosfat-grupper. To nukleotider kan bindes sammen med en binding imellem kulstof nr. 3 i sukkeret på det ene nukleotid og kulstof nr. 5 i sukkeret på det andet nukleotid, via en fosfor-gruppe. Ved at lave mange af sådanne bindinger, opnår man en lang kæde af nukleotider, hvor 1 Organeller menes at være bakterier, som er trængt ind i cellerne på et tidligt tidspunkt i evolutionen, og som derefter har kopieret sig sammen med cellerne. 4

2.1. BIOLOGISKE BEGREBER 5 Figur 2.1.: Opbygningen af de forskellige baser, som illustreret i [Mus99]. Baserne til venstre er puriner, og til højre er det pyrimidiner.

6 KAPITEL 2. BIOLOGISK MODEL Figur 2.2.: DNA dobbelt-helix [Mus99]. kulstof nr. 5 i den første nukleotid (5 -enden) ikke er bundet til et andet nukleotid, og det samme gælder for kulstof nr. 3 i den sidste nukleotid (3 -enden) i kæden. DNA udgøres netop af en sådan kæde. Når man opskriver en DNA-sekvens, er konventionen, at den starter i 5 -enden og slutter i 3 -enden. I resten af specialet bruger vi betegnelserne A, G, C, T og U, når vi taler om nukleotider eller baser. DNA optræder oftest som en dobbelt-helix, som vist på figur 2.2, hvor der indgår to DNAsekvenser. Sekvenserne bindes sammen af hydrogen-bindinger mellem nukleotiderne, således at A bindes til T, og C bindes til G. De to DNA-sekvenser er derfor hinandens komplementære, så de på den måde begge kan tjene som skabelon for kopiering af DNA et, hvilket ses på figur 2.3. Længden af en DNA-sekvens angives ofte i base par (bp). RNA (Ribonucleicacid), er også et polynukleotid. Det minder meget om DNA, fx indgår A, C og G nukleotiderne både i RNA og DNA, men T er udskiftet med U. I modsætning til DNA, optræder RNA som regel kun som en enkelt streng, der til gengæld folder tilbage til sig selv, så store dele af RNA et sidder i en dobbelt-strenget struktur. RNA bruges som midlertidigt lager under proteinsyntesen, kaldet mrna (messenger RNA), men visse typer RNA har også en direkte funktion og bliver således ikke translateret til et protein. Det gælder fx rrna, som er en del af et ribosom 2. 2 Et ribosom er et stort kompleks bestående af mere end 50 proteiner og adskillige rrnaer, som laver proteinsyntese fra mrna [A + 02, s. 342].

2.1. BIOLOGISKE BEGREBER 7 Figur 2.3.: Kopiering af en DNA-sekvens kan ske på begge strenge [Mus99]. 2.1.2. Genom Når man taler om en organismes genom, mener man hele organismens arvemateriale, dvs. de DNA-sekvenser, der bærer arvematerialet. I tabel 2.1 ses nogle forskellige organismers genomstørrelse. Eukaryote genomer er en samling af kromosomer. Mennesker har således 23 kromosompar, 22 par af såkaldte autosomer og et xx-par (kvinder) eller xy-par (mænd), hvor x og y kaldes kønskromosomer. Det giver et samlet genom på 24 kromosomer. Et kromosom består af en meget lang DNA-sekvens, som er pakket sammen omkring forskellige proteiner, hvilket kaldes kromatin. På figur 2.4 ses et kromosom og den sammenhæng, det optræder i. Når kromosomet afbildes som et X, er der i virkeligheden 2 kopier af det samme kromosom, som er bundet sammen ved deres centromerer, som man kalder midten af et kromosom. Denne konformation viser kromosomerne umiddelbart før de deler sig, som led i en celledeling. Det er på dette tidspunkt, hvor det er lettest at se dem i et lysmikroskop, da det er på dette tidspunkt de er mest kondenserede. I 2001 blev Human Genome Project og Celera Genomics i konkurrence med hinanden færdige med at sekventere det menneskelige genom. Før, undervejs og efter, er der kommet mange andre organismer til, som har fået sekventeret deres genomer. Sekventeringen alene er et imponerende stykke arbejde, men det bliver først virkeligt anvendeligt, når man får kortlagt genomerne og finder ud af hvilken funktionalitet, der knytter sig til forskellige områder i dem.

8 KAPITEL 2. BIOLOGISK MODEL Art Træk Leveområde Genomstørrelse / [10 6 bp] Antal gener Eubakterier Escherichia coli Mycobacterium tuberculosis Arker Methanococcus jannaschii Eukaryoter Saccharomyces cerevisiae Drosophila melanogaster (frugt flue) Homo sapiens (menneske) Laboratorie favorit tuber- Forårsager kulose Litotrop, anaerob, methanproducerende Menneskelige tarme Menneskeligt væv 4,639 4289 4,447 4402 Gejsere 1,664 1750 Minimal model Drueskræl, øl 12,069 6300 Eukaryot Nøgle til genetikken Rådden frugt 137 14000 omkring dyrs udvikling Mest studerede dyr Huse 3200 30000 Tabel 2.1.: Oversigt over nogle genomstørrelser for udvalgte organismer fra de tre hoveddomæner [A + 02, tabel 1-1 s.20]. Figur 2.4.: Et kromosom set i dets kontekst [Mus99].

2.1. BIOLOGISKE BEGREBER 9 2.1.3. Gen Et gen er en DNA-sekvens, som indeholder koden for et bestemt protein eller funktionelt RNA (RNA molekyler, som anvendes direkte i stedet for at blive oversat til et protein). Genstruktur er betegnelsen for genernes indre opbygning/opdeling. I Eukaryoter er der både kodende dele, kaldet exons (expressed sequences), og ikke-kodende dele, kaldte introns (intervening sequences). Derimod er hele genet kodende i Prokaryoter, således at deres gener kan anskues som et-exon-gener. Også genstart (sekvensen ATG) og genslut (sekvenserne TAA, TAA og TGA) signalerne er med i vores definition af genet. Introns er adskilt fra exons (Intervening Sequences) ved deres donor-site-sekvenser og acceptor-site-sekvenser, som er henholdsvis GT og AG. Under proteinsysntesen skilles introns fra exons i en proces, der kaldes splicing, som beskrevet i afsnit 2.1.4. 2.1.4. Proteinsyntese Proteinsyntese er betegnelsen for den proces, der ud fra et givet gen producerer det protein, der kodes for. En skematisk afbildning af processerne for Prokaryoter og Eukaryoter er vist på henholdsvis figur 2.6 og 2.7. Før vi forklarer proteinsyntesen, skal vi have defineret, hvad et protein og et codon er. Et protein er en lang kæde af aminosyrer. En aminosyre er den grundlæggende byggesten i proteiner, på samme måde som nukleotider er det i DNA og RNA, blot er der 20 forskellige aminosyrer. Proteiner har mange funktioner, hvor en af de vigtigste er deres rolle som katalysator for forskellige reaktioner. For proteinernes virkemåde er deres foldning ekstremt vigtig, idet deres sekundære, tertiære og kvadrære (se figur 2.5) struktur er med til at skabe de nødvendige active-sites, som et andet molekyle binder til for at lave en katalyseret reaktion. Foldningen er entydigt bestemt ud fra den primære struktur, som vi arbejder med. En sekvens af tre på hinanden følgende baser, der optræder i et exon, betegnes som et codon. Under produktionen af et protein, oversættes et codon til en aminosyre, som vist i tabel 2.1.4, der kaldes den genetiske kode. Tabellen gælder i langt de fleste organismer, men i fx mitokondrier er der nogle små afvigelser i koden, som er muliggjort ved, at de har deres egne transskriptions- og proteinsyntese systemer, som virker uafhængigt af resten af cellen og som derfor har kunnet opbygge variationer i koden i forhold til resten af cellen [A + 02, s. 336]. Af de 64 mulige codons er der tre, der ikke omsættes til aminosyrer. Det drejer sig om TAA, TAG og TGA som, når de mødes under oversættelsen fra codon til aminosyre under proteinsyntesen, afslutter denne (og dermed afslutter proteinet). Disse tre codons kaldes derfor for stopcodons. Desuden er codonet ATG specielt, idet det koder for aminosyren Methionin, men samtidig angiver starten på et gen. Det betyder, at der er 61 codons, der koder for en aminosyre, men kun 20 aminosyrer, der

10 KAPITEL 2. BIOLOGISK MODEL Figur 2.5.: De forskellige niveauer strukturen af et protein indeles i [Mus99]. Et Pleated sheet kaldes også for Beta-sheet.

2.1. BIOLOGISKE BEGREBER 11 Codon Amino Codon Amino Codon Amino Codon Amino TTT Phe TCT Ser TAT Tyr TGT Cys TTC Phe TCC Ser TAC Tyr TGC Cys TTA Leu TCA Ser TAA Stop TGA Stop TTG Leu TCG Ser TAG Stop TGG Trp CTT Leu CCT Pro CAT His CGT Arg CTC Leu CCC Pro CAC His CGC Arg CTA Leu CCA Pro CAA Gln CGA Arg CTG Leu CCG Pro CAG Gln CGG Arg ATT Ile ACT Thr AAT Asn AGT Ser ATC Ile ACC Thr AAC Asn AGC Ser ATA Ile ACA Thr AAA Lys AGA Arg ATG Met ACG Thr AAG Lys AGG Arg GTT Val GCT Ala GAT Asp GGT Gly GTC Val GCC Ala GAC Asp GGC Gly GTA Val GCA Ala GAA Glu GGA Gly GTG Val GCG Ala GAG Glu GGG Gly Tabel 2.2.: Livets kode. Oversættelse af codons til aminosyrer. optræder i organismerne. En aminosyre kan således have mere end et codon der koder for den. Codonsekvensen er altid aflæst i 5 til 3 retningen. I Eukaryot-proteinsyntesen er der følgende delprocesser: Transskription bruger den ene DNA-streng i en dobbelt-helix som skabelon, for at lave en komplementær RNA-streng. Denne form for RNA kaldes pre-mrna. Figur 2.6.: Proteinsyntesen i en Prokaryot. Der er ingen ikke-kodende dele i Prokaryote gener og der er ingen kerne, så derfor kan mrna direkte translateres til protein [A + 02, s. 315].

12 KAPITEL 2. BIOLOGISK MODEL Figur 2.7.: Proteinsyntesen i en Eukaryot [A + 02, s. 315]. 5 Capping og 3 Polyadenylation modificerer enderne på pre-mrna, således at det efter splicing kan genkendes som mrna. RNA Splicing fjerner introns fra pre-mrna, som efter 5 capping, splicing og 3 polyadenylation kaldes mrna, hvor m betyder messenger. Eksport Når et stykke mrna er helt færdigt, transporteres det gennem kernemembranen til cytoplasmaet. Translation I cytoplasmaet oversættes mrna til et protein, vha. ribosomer. Til dette formål bruges en speciel form for RNA, en gruppe kaldet trna (transfer RNA), som i den ene ende binder til en aminosyre og i den anden ende har et anticodon 3, som binder til det codon der koder for den givne aminosyre jvf. figur 2.1.4. Ribosomet kører hen over mrnasekvensen og sørger for at anvende det rigtige trna på det rette sted, således at det korrekte protein genereres. 3 Da C binder til G og A til T, er et anticodon entydigt defineret ud fra det codon, der bindes til.

2.1. BIOLOGISKE BEGREBER 13 2.1.5. Evolution Det antages at alle organismer har den samme stamfader, og organismer der er tilstrækkeligt nært beslægtede har ofte gener med cirka samme placering på genomet og samme funktion. Når man taler om evolution på genom-niveau, menes mutation, dvs. ændring, af den DNA-sekvens, der udgør genomet. De dele af genomet, som udgør generne, muterer som regel meget langsomt i forhold til de dele, der ikke koder for nogen gener. Det skyldes, at det har meget store konsekvenser at ændre et gens funktionalitet eller helt at ødelægge et gen, i modsætning til hvis man ændrer nukleotidesammensætningen i intergen områder. På denne måde bevares generne, og det giver mening at sammenligne beslægtede arters genomer. For at en mutation skal få betydning for de kommende generationer, er det nødvendigt, at den opstår i kønscellerne. Kopiering af genomet i forbindelse med en kønscelledeling, også kaldet meiose, er den væsentligste årsag til mutationer. Undervejs i kopieringsprocessen kan der ske en fejl, selvom der er mange forskellige fejlretningsmekanismer. Hvis en sådan mutation faktisk viser sig at være brugbar, kan det være at organismen overlever, og måske bliver stamfader til en ny art. Mutationerne deles ind i følgende grupper (hvor der kopieres fra stamsekvensen til dattersekvensen): Substitution: Nukleotid α i stamsekvensen er erstattet af nukleotid β i dattersekvensen. Deletion: Nukleotid α i stamsekvensen er slettet i dattersekvensen. Insertion Nukleotid β er indsat i dattersekvensen. Invertion: Et stykke DNA er vendt om i dattersekvensen i forhold til stamsekvensen. Translocation: Et stykke DNA fra stamsekvensen har en anden placering i dattersekvensen. Duplication: Et stykke DNA i stamsekvensen er kopieret og indsat 2 steder i dattersekvensen. Af de nævnte mutationer er de tre første langt de hyppigst forekommende. Vi vil i resten af specialet derfor se bort fra Invertion, Translocation og Duplication og kun fokusere på Substitution, Insertion og Deletion.

14 KAPITEL 2. BIOLOGISK MODEL 2.1.6. Anvendelse af geninformation Når man kender genernes placering og funktion, kan man begynde at anvende denne information. Som eksempel kan oplysingerne bruges til at diagnosticere sygdomme ved at aflæse et bestemt gen i en patients genom og teste, om der er opstået mutationer i forhold til det normale (fungerende) gen. Er der så tale om en gendefekt, arbejder man i øjeblikket på en behandling kaldet genterapi. Genterapi er årsagsbehandling i stedet for symptombehandling, som traditionel medicinering er. Det er naturligvis en stor fordel, men desværre er man ikke nået så langt, at genterapi kan tilbydes mennesker, og så har man oven i købet haft nogle tilbageslag, som har forsinket udviklingen yderligere. Genterapi virker på en af følgende måder [Lab03]: Et normalt fungerende gen indsættes på et tilfældigt sted i genomet, så det erstatter et defekt gen. Et defekt gen erstattes af et fungerende gen. Det defekte gen kan repareres. Reguleringen af et bestemt gen kan ændres, således at man ændrer i kvantiteten af det tilhørende protein. I de fleste tilfælde forsøger man at anvende den første metode. Til at udføre indsættelsen af det fungerende gen anvender man en bære-enhed, også kaldet en vector. I øjeblikket bruger man forskellige slags vira til at agere vector. De vira, man anvender, er i stand til at indsætte deres eget arvemateriale i DNA i de celler, de inficerer. Man inficerer derfor de celler, man ønsker at reparere (fx leverceller), med en virus, som helst ikke skal forårsage anden sygdom. Til gengæld indeholder virussen en kopi af det fungerende gen, som på denne måde kommer ind i genomet i de inficerede celler. 2.2. Formalisering Formålet med dette afsnit, er at koble de biologiske begreber, der blev gennemgået i afsnittet før sammen med de mere formelle begreber, vi vil anvende i det efterfølgende. Derved får vi fjernet de overflødige biologiske detaljer og opnår en model, der er nemmere at overskue. Grundstenene vi vil benytte er nukleotiderne. Definition 2.2.1 (Nukleotid) Et nukleotid er et element i mængden N = {A, C, G, T }. Et nukleotid kaldes til tider også en base, idet et nukleotid er entydigt bestemt ved dets base. Som tidligere nævnt kaldes en sekvens sammensat af nukleotider for en DNAsekvens.

2.2. FORMALISERING 15 Definition 2.2.2 (DNA-sekvens) En DNA-sekvens er en streng s N. Hvis vi i det efterfølgende taler om en sekvens, mener vi en DNA-sekvens. Definition 2.2.3 (Sekvensnavne) Med S k sekvens. Længden af S k kalder vi L k. betegner vi i det følgende den k te input Definition 2.2.4 (Exon) Et exon er en kodende del af et gen. Definition 2.2.5 (Intron) Et intron er den ikke-kodende del af et gen. Definition 2.2.6 (Codon) Et codon er en sekvens af tre på hinanden følgende baser i et exon. Definition 2.2.7 (Startcodon) Et startcodon er sekvensen ATG. Definition 2.2.8 (Stopcodon) Et stopcodon er en af sekvenserne TAA, TGA eller TAG. De sidste to definitioner dækker de to opfattelser af genstruktur, som vi anvender fremover. Definition 2.2.9 (Genstrukturmodel I) En genstruktur består af et startcodon, et exon og et stopcodon. Definition 2.2.10 (Genstrukturmodel II) En genstruktur består af et startcodon, nul eller flere exon-intron dele, et exon og et stopcodon.

3. Skjulte Markov Modeller Dette kapitel er en introduktion til Skjulte Markov Modeller (SMM, fra engelsk: Hidden Markov Model). Teorien om SMMer [D + 98] vil danne grundlag for vores valgte metode til at lave genidentifikation. Vi definerer, hvad en SMM er, og introducerer nogle af de begreber, vi vil bygge videre på. Herefter gennemgår vi et eksempel på en par-smm, og endelig udvider vi notationen, så vi kan bruge den generelle formulering i en par-smm. Ved genidentifikation er man interesseret i at identificere de kodende regioner i et gen. For at gøre dette, skal man kunne skelne imellem en masse støj, fx strukturer, der ligner gener, men ikke er det, og så de rigtige gener. Derfor sammenligner man ofte det samme område på genomer fra forskellige organismer, idet det tillægges større vægt at finde strukturen af et gen i to organismer end kun i en. En væsentlig grund til at det kan lade sig gøre at finde de samme gener i forskellige organismer er, at de kodende regioner af et genom muterer meget langsommere end de ikke-kodende dele (se afsnit 2.1.5). En Skjult Markov Model er en statistisk model, som er velegnet til mange anvendelser inden for bioinformatik. Den mest anvendte brug af SMMer inden for bioinformatik er som en sandsynlighedsteoretisk profil af en famillie af sekvenser: Givet en sekvens kan man finde sandsynligheden for at sekvensen tilhører famillien af sekvenser. En SMM er velegnet til at genkende en regulær struktur, som fx genstruktur (se definition 2.2.9 og 2.2.10), hvor man leder efter signaler, som kan betyde en bestemt del af genstrukturen, og som overholder strukturen. Man kan vise, at en SMM netop kan genkende regulære sprog. En af fordelene ved en SMM er derfor, at den netop kan opfange, at der kan være forskellige lovlige strukturer og at den kan vægte dem med forskellige sandsynligheder. Teorien omkring SMMer blev udviklet til brug inden for talegenkendelse i starten af 70erne. Formél sprogteori er blevet brugt til at løse biologiske problemer før, se fx [SEA92]. En tidlig brug af en SMM inden for bioinformatik blev præsenteret på en konference i 1992 og i en teknisk rapport, som blev publiceret i [H + 93] og [K + 94]. 3.1. Grundlæggende begreber Definition 3.1.1 (Skjult Markov Model) En SMM er en 4-tupel (S,T,A,E). Hvor S er en mængde af tilstande, T er en matrix af transitionssandsynligheder {t kl k, l S}, A er et alfabet af symboler og E er en mængde af emissionssandsynligheder {e k k S}. En SMM har altid en starttilstand (tilstand 0) og en stoptilstand. En vej igennem en 16

3.1. GRUNDLÆGGENDE BEGREBER 17 SMM er en sekvens af tilstande π = π 1 π 2...π L, hvor π i er tilstand i. Transitionssandsynligheden er kun afhængig af den foregående tilstand på vejen. Den er givet ved: t kl = P (π i = l π i 1 = k) (3.1) hvor l, k S. Dette er Markov egenskaben for modellen. I en tilstand kan der genereres et symbol fra en fordeling over alfabetet A. Symbolet kalder vi for x i for tilstand i. Emissionssandsynligheden er givet ved: e k (b) = P (x i = b π i = k) (3.2) det er sandsynligheden for at symbol b udsendes i tilstand k. Sekvensen af symboler, der genereres af en vej π, kalder vi x = x 1 x 2...x L. En SMM kan simulere en sekvens x over alfabetet (A). Definition 3.1.2 (Simulering af en SMM) En simulering af en SMM genererer en sekvens x, hvor hvert x i er udsendt fra en tilstand π i jvf. dennes emissionsfordeling, og π i er en tilstand i vejen π, som er fundet ud fra transitionssandsynlighederne for de enkelte tilstande. Simuleringen starter i tilstand 0. At det hedder en Skjult Markov Model hænger sammen med definition 3.1.2, idet det der genereres, ikke er vejen af tilstande, π, men derimod symbolerne langs vejen. Vejen π, af tilstande, er således skjult. Givet en sekvens af symboler x og en vej π igennem SMMen kan vi beregne sandsynligheden for, at x udskrives langs π. Vejen π fastlægger transitionssandsynligheden t πi π i+1 for hver transition, og x fastlægger, hvad emissionssandsynlighederne e k (b) er. Starttilstanden er tilstand 0 og stoptilstanden er tilstand L + 1. Den samlede sandsynlighed er P (x, π) = t 0π1 Vi vil gerne finde den mest sandsynlige vej π givet input x: L i=1 e πi (x i )t πi π i+1 (3.3) π = argmax π P (x, π). (3.4) Vi maksimerer over alle mulige tilstandsveje π, der udskriver x. Den mest sandsynlige vej π kan findes rekursivt. Antag at v k (i) er sandsynligheden for den mest sandsynlige vej, der stopper i tilstand k og har udskrevet x 1, x 2,.., x i, er kendt for alle tilstande k. Vi kan beregne sandsynlighederne for symbol x i+1 : v l (i + 1) = e l (x i+1 )max k (v k(i)t kl ). (3.5)

18 KAPITEL 3. SKJULTE MARKOV MODELLER Initialisering: (i = 0) v 0 (0) = 1, v k (0) = 0, k > 0 Rekursion: For (i = 0...L) v l (i) = e l (x i )max (v k(i 1)t kl ) k Terminering: P (x, π ) = max (v k(l)t k(l+1) ) k Tabel 3.1.: Viterbi algoritmen Dette giver en rekursiv måde at finde sandsynligheden for den mest sandsynlige vej. Denne metode kaldes Viterbi algoritmen [D + 98, p. 55-57, 82-85, 109]. For at finde den mest sandsynlige vej π holder vi styr på de tilstande, der indgår i maksimeringen i hver iteration. Hver gang vi maksimerer over alle tilstande l huskes, hvilken tilstand den største sandsynlighed kom fra, sådan at når vi er færdige, kan vi lave backtrack og finde den mest sandsynlige vej. Mange forskellige veje af tilstande kan give anledning til det samme output x. Det kan være interessant at vide, hvad den totale sandsynlighed P (x) er for at sekvensen x udskrives. P (x) = π P (x, π). Sandsynligheden P (x) kan findes ved hjælp af Forward algoritmen, som er en variation af Viterbi algoritmen, hvor maksimeringen blot er skiftet ud med en summering. 3.2. Parvis Alignment Nu vil vi beskrive, hvordan man kan bruge en såkaldt par-smm til at aligne to sekvenser. Betragt to sekvenser S1: AGGAGGCC S2: TTAGGCGG som vi gerne vil aligne. Ved aligne forstår vi at sætte de dele over hinanden, som på en eller anden måde matcher. Resultatet af at aligne nogle sekvenser er et alignment. Definition 3.2.1 (Alignment af N sekvenser) N sekvenser sat over hinanden i en N l-matrix, hvor der kan være indsat mellemrumstegn, således at række i uden mellemrumstegn netop er sekvens i. Der må dog ikke være søjler i alignmentet kun med mellemrumstegn. I det følgende anvender vi alignment for to sekvenser. Her ses et muligt alignment: Eksempel 3.2.1 (Eksempel alignment) S1: AGG-A-GG-CC S2: -T-TAGGCG-G

3.2. PARVIS ALIGNMENT 19 Man kan bruge Smith-Waterman [SW81] algoritmen til at finde alignments med dynamisk programmering. Denne algoritme har både et tids- og pladsforbrug på O(L 1 L 2 ) for to sekvenser. Det gør man ved at definere en cost funktion, der tildeler et alignment en score. At finde et alignment er så blevet til et optimeringsproblem, hvor man skal maksimere eller minimere scoren over mængden af mulige alignments af inputsekvenserne. Vi vil bruge en SMM til at lave alignments med, hvor scoren blot erstattes med en sandsynlighed. Senere ser vi på hvordan man finder det alignment der har størst sandsynlighed. Definition 3.2.2 (Søjle) For to sekvenser er en søjle fra et alignment en 2-tupel k 2 ({A, C, G, T, }) 2 \ ( ) 2. Et alignment er bygget op af Substitution, Insertion og Deletion, som er flg. ( # ) # Substitution 1 : En nukleotid i S1 er blevet erstattet med en nukleotid i S2 (muligvis ( - # den samme) ) Insertion: En nukleotid er indsat i S2 ( # ) - Deletion: En nukleotid er slettet i S2 hvor # = {A, C, G, T }. En par-smm har tilstande S = {Start, Stop, Substitution, Insertion, Deletion}, som kan ses på figur 3.1 med tilhørende transitionssandsynligheder, T. Hvordan man bestemmer sandsynlighederne i en SMM nævner vi i afsnit 3.4. Alfabetet (A) er en liste af søjler som er flg. ( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( )( ) A C G T - - - - A C G T A C G T A C G T A C G T - - - - A C G T A A A A C C C C G G G G T T T T For hver tilstand skal vi angive en emissionsfordeling (E). For tilstanden Insertion og Deletion er de ofte følgende: e Insertion ( ( ) # - ) = 1/4 edeletion ( ( - #) ) = 1/4, hvor # = {A,C,G,T}. For tilstanden Substitution kan man se emissionstabellen i tabel 3.2, fx er e Substitution ( ( A C) ) = α. Denne tabel 3.2 kaldes for Jukes-Cantor substitutionsmodellen med parameter α. I dette eksempel vil vi sætte α = 0.01, hvilket betyder fx at e Substitution ( ( A A) ) = 0.22 og e Substitution ( ( A C) ) = 0.01. Hermed har vi specificeret en par-smm til alignment. Dvs. vi har beskrevet de forskellige dele af 4-tuplet (S,T,A,E). Lad os nu se på betydningen af at et alignment har en sandsynlighed. Med udgangspunkt i eksempel 3.2.1 skriver vi alignmentet op som input til en par-smm: x = ( A ( G ) ( G ( - ( A ) ( G ( G ) ( G ( C ) -) T -) T) A) (Ḡ G) C) (Ḡ -) G 1 Substitution kaldes også (mis)match

20 KAPITEL 3. SKJULTE MARKOV MODELLER 3/4 1/3 Substitution 1/20 3/4 1/10 1/10 1/10 Start 1/3 Insertion 1/20 End 3/4 1/10 1/10 1/10 1/3 1/20 Deletion Figur 3.1.: Tilstande og mulige transitionssandsynligheder for en SMM. A C G T A (1 12α)/4 α α α C α (1 12α)/4 α α G α α (1 12α)/4 α T α α α (1 12α)/4 Tabel 3.2.: Jukes-Cantor Substitutionsmodel

3.2. PARVIS ALIGNMENT 21 Udfra ovenstående inputsekvens x vil vi finde π = argmax π P (x, π) hvilket betyder, at vi skal maksimere over alle mulige veje af tilstande for denne inputsekvens, men der er faktisk kun en mulig vej af tilstande. Det er tydeligt at se på inputsekvensen x hvilke tilstande den har gennemløbet: x = ( ( A G ) ( G ( - ( A ) ( G ( G ) ( G ( C ) -) T -) T) A) (Ḡ G) C) (Ḡ -) G π = ( # ( # ( # ( - ( # ( - ( # ( # ( - ( # ( # ) -) #) -) #) #) #) #) #) #) -) # Det spørgsmål vi i virkeligheden gerne vil svare på er: Hvad er det mest sandsynlige alignment af S 1 og S 2. Måden vi vil løse dette problem på er ved at omdefinere emissionssandsynlighederne (se ligning (3.2)) og den samlede sandsynlighed (se ligning (3.3)). Vi skal først have defineret nogle funktioner, som gør beskrivelsen lidt lettere, så vi senere kan opskrive rekursionsligningerne for en par-smm til Viterbi algoritmen. Givet inputsekvenser S 1 og S 2 lad os antage, at den første tilstand i et alignment skal være ( - #). Det betyder at man vil aligne ( - S 2 [1]), så første nukleotid på S2 er brugt. Til at beskrive at tilstanden aligner forskellige dele af inputsekvenserne, definerer vi funktionen f adv, som giver advancevektoren: ( ) ( ) ( ) # - # f adv ( ) = (1, 1) f adv ( ) = (0, 1) f adv ( ) = (1, 0) # # - Vi skal vide hvor meget et præfiks af vejen, π p = π 1 π 2..π i, vil generere af inputsekvenserne. Det kan vi finde ved at summere alle advancevektorerne for de tilstande der indgår i præfikset. Summen f adv (π 1 ) + f adv (π 2 ) +... + f adv (π i ) = (v 1, v 2 ) giver de præfikser S 1 [1..v 1 ] og S 2 [1..v 2 ] som er blevet genereret. Det symbol x i, der udskrives i tilstand π i, er x i = ( S1 [v 1 ] S 2 [v 2 ] ( S1 [v 1 ] ( - - S 2 [v 2 ] ) ) ), π i = ( #) #, π i = ( #) -, π i = ( ) - # (3.6) Den sandsynlighed vi skal maksimere, når vi vil finde π, bliver så: P (S 1, S 2, π) = t 0π1 L i=1 e πi (x i )t πi π i+1 (3.7)

22 KAPITEL 3. SKJULTE MARKOV MODELLER 3.3. Viterbi og Forward algoritmen I dette afsnit gennemgår vi hvordan Viterbi og Forward algoritmerne virker. Beskrivelsen tager udgangspunkt i Viterbi algoritmen. Viterbi algoritmen er en rekursiv algoritme, der, for et givet input, kan finde den mest sandsynlige vej π igennem en SMM, som genererer dette input. For alignment af to sekvenser giver det anledning til følgende rekursionsligninger: Hvis q er en substitution ( # #) : Hvis q er en deletion ( # -) : Hvis q er en insertion ( - #) : D(q, i, j) = max p D(q, i, j) = max p D(q, i, j) = max p For alle tre tilstande kan man sætte: [ ( ) ] S1 [i] D(p, i 1, j 1)t pq e q ( ) S 2 [j] [ ( S1 [i] D(p, i 1, j)t pq e q ( - ) ) [ ( ) ] - D(p, i, j 1)t pq e q ( ) S 2 [v 2 ] ] (3.8) (3.9) (3.10) D(q, 0, 0) = 1/3 (3.11) Derved bliver sandsynligheden for det mest sandsynlige alignment: hvor L 1 og L 2 er længderne af sekvenserne. P (S 1, S 2, π ) = max(d(q, L 1, L 2 ) t q(l+1) ) (3.12) q Rekursionsligninger kan implementeres vha. dynamisk programmering. Vi genbruger de løsninger, vi har beregnet i stedet for at beregne dem igen. En indgang D(q, i, j) kan fortolkes, som sandsynligheden for den mest sandsynlige vej π 1 π 2...q hvor delsekvenserne S 1 [1..i] og S 2 [1..j] er genereret. Forward algoritmen er, som tidligere nævnt, at man summerer i stedet for at maksimere i rekursionligningerne. I figur 3.2 kan man se en matrix for hver tilstand som udfyldes vha. ligningerne (3.8) (3.9) (3.10) henholdsvis. Det er illustreret med pile, hvilke indgange i matricerne man skal bruge for at beregne en indgang i Substitutionsmatricen.

3.3. VITERBI OG FORWARD ALGORITMEN 23 Insertion Deletion 0 Sekvens 2 0 L 1 0 0 Sekvens 2 L 1 L 2 L 2 3 1 0 0 Sekvens 2 L 1 2 Sekvens 1 Sekvens 1 Sekvens 1 Substitution L 2 Figur 3.2.: Matricer til dynamisk programmering.

24 KAPITEL 3. SKJULTE MARKOV MODELLER Tidskompleksiteten for Viterbi algoritmen er O(L 1 L 2 ), og pladsforbruget er O(L 1 L 2 ), hvor L 1 = S 1 og L 2 = S 2. 3.4. Parameterestimering Når man skal designe en SMM, skal man specificere de fire elementer i (S,T,A,E): Tilstande, transitionssandsynligheder, alfabet og emissionssandsynligheder. Strukturen af modellen er vigtig, men uden de rette parametre (sandsynligheder) kan det være svært at opnå gode resultater. I dette afsnit gennemgår vi kort, hvordan man fx kan estimere parametrene. Hvis man har et alignment, og man kender vejen π igennem den tilhørende SMM, kan man estimere transitionssandsynlighederne [D + 98] ved at tælle hvor mange gange, man laver en transition fra tilstand t 1 til tilstand t 2 (se ligning 3.13). Det samme gælder emissionssandsynlighederne, hvis man ved hvor mange gange de forskellige emissioner forekommer. Man skal bruge et træningssæt, som skal være så stort, at det kan indfange de variationer der forekommer i forskellige alignments. Til gengæld skal det ikke være så stort at man overtræner modellen, så det kun er træningssættet den aligner godt. Parametrene kan sættes således: t kl = A kl l A e k (b) = E k(b) kl b E k(b) (3.13) hvor A kl = antal transitioner fra k til l i træningssættet og E k (b) = antal emissioner af b i k i træningssættet. Hvis man ikke kender vejen π, er man nødt til at bruge en iterativ process. Der findes iterative metoder, hvor man kan justere parametrene for hver iteration, som garanterer at processen konvergerer mod et lokalt maksimum. Mange sådanne træningsmetoder bruger Forward algoritmen [D + 98], der gør det samme som Viterbi algoritmen med den undtagelse, at den summerer i stedet for at maksimere.

4. Push-algoritmen I dette kapitel beskriver vi en måde at implementere Forward- og Viterbi-algoritmerne på, således at man får en lineær pladsbesparelse foræret, uden at det bliver implementationsmæssigt sværere at lave for tre sekvenser, sammenlignet med to. Desuden adskiller vi algoritmen og implementationen fra strukturen af den SMM, vi vil anvende, således at en udskiftning af SMMen ikke medfører et behov for en reimplementation. Kapitlet er bygget op således, at vi først gennemgår vores algoritme, det vi har kaldt Push-algoritmen, for alignment af to sekvenser (4.2). Herefter viser vi, hvad Hirschbergs Pladsbesparelse er, og hvordan vi kan bruge den i algoritmen (4.2.5). Endelig er der en gennemgang af udvidelsen af Push-algoritmen, til at kunne aligne tre sekvenser (4.3). 4.1. Motivation Hvis man gerne vil aligne et antal sekvenser, fx vha. en SMM, kan det lade sig gøre i tid og ikke mindst plads proportional med produktet af længderne af de sekvenser, der skal alignes. For alignments af mere end to sekvenser vil de sekvenser, der er interessante, ofte være længere, end hvad der er praktisk muligt at aligne. Især er pladskravet en begrænsende faktor da fx et kubisk pladsforbrug for tre sekvenser hurtigt overstiger de hukommelseskapaciteter, man arbejder med i dag. For at give et eksempel på dette, har vi i afsnit 5.2.8 lavet et overslag på hvor meget plads, der skal til at aligne tre sekvenser, der er ca. 1000 bp lange. Resultatet er, at der skal over 300 Gb RAM til, før det bliver muligt. Hirschberg [Hir75] har beskrevet en pladsbesparende metode, som gennemgåes i afsnit 4.2.5. Ved at benytte denne metode, opnår man en lineær pladsreduktion på bekostning af en fordobling af udførelsestiden. Derved bliver det realistisk at forsøge at aligne tre sekvenser, der har en længde, der er mindre end de 1000 bp fra før (se afsnit 5.2.8). Den traditionelle implementation af Hirschbergs Pladsbesparelse for to sekvenser, dvs. implementation af et antal rekursionsligninger som dynamisk programmering, er mere eller mindre kompliceret, afhængig af hvor mange detaljer rekursionerne indfanger. Et af problemerne i dette tilfælde er, at ændrer man i sine rekursionsligninger, skal man også ændre tilsvarende i algoritmen. Vil man udvide sit alignment til at gælde for tre sekvenser, er man nødt til at ændre sine rekursionsligninger til noget passende, samtidig med at man skal have sin algoritme til at håndtere en ekstra dimension. 25

26 KAPITEL 4. PUSH-ALGORITMEN A C G A T C A C G A T C A G C A Figur 4.1.: Dynamisk programmerings matrix for to sekvenser, med (0,0) i øverste venstre hjørne. De sorte punkter svarer til celler, som defineret i def. 4.2.1 Vi har lavet en implementation, som nemt kan udvides til tre sekvenser, og som har indbygget pladsbesparelsen. Det har vi gjort ved at adskille den SMM, vi bruger, fra implementationen af algoritmen, og ved at anvende datastrukturer, som både virker for to og tre sekvenser. 4.2. Push-algoritmen for to sekvenser Dette afsnit beskriver, hvordan vi har valgt at implementere alignment algoritmen, inkl. Hirschbergs Pladsbesparelse. Beskrivelsen tager udgangspunkt i alignment af to sekvenser. 4.2.1. Push I alignment algoritmer, som implementeres ved hjælp af dynamisk programmering, er det centrale at beskrive, hvorledes en række matricer udfyldes, som givet ved rekursionsligningerne. Man udfylder en indgang, når de indgange, den afhænger af, jvf. rekursionsligningerne, er beregnet. Man kan sige, at en indgang i matricerne spørger sine naboer, om de værdier den har behov for. Vi har valgt en anden strategi, idet vi skubber de beregnede værdier frem. Forstået på den måde, at en celle skubber sine værdier frem til sine naboer, i stedet for at spørge naboerne om deres værdier. Forward dynamisk programmering er beskrevet i [SM97, s. 75-76] og [Gus97, s. 295-302], bruger samme princip, men med et andet formål end det vi fokuserer på. I vores tilfælde er fordelen ved at skubbe værdierne frem, at vi opnår en lineær pladsreduktion, som er uafhængig af SMMen, og at den implementationsmæssigt er gratis (se afsnit 4.2.4).

4.2. PUSH-ALGORITMEN FOR TO SEKVENSER 27 Definition 4.2.1 (Celle) En celle indeholder et indeks fra hver sekvens. Desuden er der en liste med sandsynligheder. En for hver mulig umiddelbare forgænger på vejen til cellen. Havde vi haft en dynamisk programmeringsmatrix, ville det svare til, at vi starter i (0, 0) og slutter i (L 1, L 2 ), men det har vi ikke længere behov for, idet vi blot holder styr på hvilke celler, der er ready, og hvilke der er pending. Definition 4.2.2 (Pending) En celle er pending, hvis den har modtaget værdier fra mindst én nabo, men ikke fra alle. Definition 4.2.3 (Ready) En celle er ready, hvis den har modtaget værdier fra alle sine naboer. Dette kan gøres ved at opretholde en mængde af celler, der er ready (deres rækkefølge er ligegyldig) og en datastruktur, som understøtter indicerede opslag til de celler, der er pending. Grunden til, at vi har brug for at slå pending celler op, er at man sender til de naboer, der svarer til det indeks, der er i ready cellerne plus det antal karakterer, der udsendes (hvad der svarer til advancevektoren, se afsnit 3.2). Dvs. at hvis det er en celle, der svarer til index (i, j) i henholdsvis sekvens et og to, i gang med at sende, og det er til en tilstand, som udsender en karakter fra hver sekvens (advancevektor (1,1)), så skal der skubbes værdier til en pending celle, med indeks (i + 1, j + 1). 4.2.2. Udførelse Skabelonen for Push-algoritmen er meget simpel. Når algoritmen udføres, opretholder man to datastrukturer, en stak til celler, der er ready, og en liste til celler, der er pending. ready-stakken er fra starten initieret med den første celle, svarende til indeks 0 i både S 1 og S 2, medens pending-listen er tom. Herefter følger algoritmen nedenstående skabelon: while ready.hasmore(): next = ready.pop() readied = notify(next, pending, S1, S2) ready.update(readied) Så længe der er flere celler på ready-stakken, fjernes den øverste og gemmes i next. notify skubber værdierne fra next videre til de naboer, der kan nåes, og hvis indices ligger inden for de sekvenser, der sendes med som parameter. Hvis naboerne ikke er oprettet i pending, tilføjes de. Returværdien fra notify er en liste af celler, der er blevet ready. ready-stakken opdateres med de nye ready-celler. Når en værdi sendes fra en celle r, der er ready, til en celle p, der er pending, opdateres p, således at den husker på sandsynligheden for den vej, der går gennem r. r sender den værdi videre, som er maksimal i forhold til alle de veje, der kom til r ganget med

28 KAPITEL 4. PUSH-ALGORITMEN transitionssandsynligheden til p. Hver gang vi sender fra en ready celle r med index (i r, j r ), sender vi til en pending celle p med index (i p, j p ), således at i r + j r < i p + j p. Dette kan kun gøres indtil i r = L 1 og j r = L 2, hvor algoritmen stopper og vi kan finde sandsynligheden for den mest sandsynlige vej givet de to input sekvenser og modellen, ved at tage maksimum over sandsynlighederne for de forskellige veje, der er gemt i den sidste ready celle. Pladsforbruget af algoritmen er proportionalt med det antal celler, der findes i pendinglisten, som oplagt er en matrix med størrelsen L1 L2. Pladsforbruget skal desuden ganges med antallet af tilstande, idet cellernes størrelse er proportionale med dette. I vores tilfælde er der tre tilstande, og pladsforbruget er derfor O(L 1 L 2 ). På samme måde er tidsforbruget propoertionalt med det antal celler, der skal sendes til, ganget med antal gange, der skal sendes til den samme celle, som igen er O(L 1 L 2 ). 4.2.3. Backtracking For at finde alignmentet af de to sekvenser, er vi nødt til at backtracke vejen, som det mest sandsynlige alignment har fulgt. Dette gøres nemt ved at starte med den sidste ready celle og så finde den nabo, der ligger umiddelbart før på alignmentets vej. Dette opslag skal foregå i pending-listen, idet stakken med ready celler ikke undersøtter indicerede opslag. Dette er dog ikke noget problem, hvis ready cellerne er de samme objekter som pending cellerne. Herefter findes den næste celle på stien på samme måde, og dette gøres iterativt, indtil vi når til den celle, der svarer til index (0, 0). Resultatet af backtrackingen er en vej igennem matricen, hvorfra man nu kan lave alignmentet, ved at indsætte ( # #) når man går fra (i, j) til (i + 1, j + 1), ( # ) når man går fra (i, j) til (i + 1, j) eller ( #) når man går fra (i, j) til (i, j + 1). 4.2.4. Pladsbesparelse og fronter 1 Beskrivelsen af algoritmen har hidtil taget udgangspunkt i, at alle cellerne i pending listen gemmes undervejs. Det betyder et tidsforbrug på O(n 2 ) og et tilsvarende pladsforbrug, for n L 1 L 2. Tidsforbruget kan vi ikke umiddelbart gøre noget ved, men pladsforbruget kan reduceres med én dimension til O(n). Ideen er, at vi kun gemmer de pending celler, som er blevet sendt til, og så snart de bliver ready, fjernes de fra pending-listen. Grunden til at det er muligt er, at en celle kun afhænger af sine nærmeste foregående naboer, som vist på figur 4.2, hvor cellen med nummer 4 kun afhænger af værdier fra cellerne med nummer 1,2 og 3, som defineret i afsnit 3.3. Det giver følgende skabelon for algoritmen: