Bioinformatik für Biochemiker Oliver Kohlbacher WS 2009/2010 7. Datenbanksuche Abt. Simulation biologischer Systeme WSI/ZBIT, Eberhard Karls Universität Tübingen Übersicht • Datenbanksuche statt Alignment • Heuristiken: schnell statt optimal • BLAST – Algorithmus & Komplexität – Signifikanz von Alignments – Anwendung & Ausgaben des Programms • Beispiel 2 Datenbanksuche • Problem – Gegeben: eine Sequenz und eine Sequenzdatenbank – Gesucht: „ähnlichste“ Vorkommen der Sequenz in der Datenbank • Beispiele – Suche nach dem nächsten Homologen in einem Genom – Identifizierung einer unbekannten Sequenz Anfragesequenz S Datenbanksequenz D GenBank – Wachstum • Größe von Genbank wächst immer noch exponentiell an • Derzeit sind über 99 Mio. Sequenzen mit ca. 99 Mrd. bp gespeichert http://www.ncbi.nlm.nih.gov/Genbank/genbankstats.html Komplexität von Datenbanksuche • Sucht man in großen Datensätzen nach einer Sequenz, ist dies naiv durch Berechnung des optimalen lokalen Alignments möglich • Problem: Hauptspeicher! • Zum Aufbau der DP-Matrix benötigt man O(| S||D|) Speicher • Sucht man eine DNA-Sequenz von 1.000 bp im menschlichen Genom (3 Gbp), so benötigt man 12.000 GB Hauptspeicher für die Matrix! • Suche mit Smith-Waterman ist auch recht langsam auf Datenbanken dieser Länge Heuristiken zur Datenbanksuche • Smith-Waterman ist ein “optimaler Algorithmus”, d.h. er findet ein optimales Alignment • In der Informatik verwendet man neben optimalen Algorithmen häufig auch Heuristiken • Heuristiken sind Algorithmen, die oft suboptimale (aber meist hinreichend gute) Lösungen liefern, dafür aber weniger rechenaufwändig als optimale Algorithmen sind • In der Datenbanksuche setzt man aus Geschwindigkeitsgründen ausschließlich Heuristiken ein • Eines der wichtigsten Werkzeuge zur heuristischen Suche ist BLAST BLAST • BLAST (Basic Local Alignment Search Tool) wurde 1990 von Altschul et al. vorgestellt • Wir werden zunächst den Algorithmus anreißen, dann die Verwendung von BLAST sowie die Interpretation der Ergebnisse • BLAST ist ein mehrstufiger Algorithmus: – Zunächst werden Regionen der Datenbank identifiziert, die Treffer enthalten können – Diese werden dann mit Hilfe eines lokalen Alignments näher untersucht • Auffinden der interessanten Regionen ist sehr schnell möglich • Anschließend müssen Alignments nur auf einem geringen Bruchteil der Datenbank berechnet werden ) deutlicher Geschwindigkeitsgewinn! Altschul SF, Gish W, Miller W, Myers EW, Lipman DJ. Basic local alignment search tool. J Mol Biol. (1990), 215(3):403-10. BLAST Grundidee: – Eine zur Anfrage ähnliche Sequenz in der Datenbank besitzt auch kurze Teilsequenzen (ohne Gaps), die zu Teilsequenzen der Datenbank ähnlich sind – Finde kurze Substrings in der Datenbank, die zu Substrings der Anfrage sehr ähnlich sind – Treten diese an einer Stelle gehäuft auf, haben wir vermutlich die Anfrage gefunden Anfragesequenz S Datenbanksequenz D BLAST – w-mere • BLAST basiert auf so genannten w-meren, Worten der Länge w • BLAST versucht in D alle Vorkommen kurzer Worte zu identifizieren, die ausreichend ähnlich zu gleich langen Worten aus S sind Beispiel: w = 2 S = RQCSAGW Alle 2-mere in S: RQ, QC, CS, SA, AG, GW Mit BLOSUM62 erzielen folgende 2-mere einen Score > 8, wenn sie mit den 2-meren aus S verglichen werden: RQ: QC: CS: … RQ QC, RC, EC, NC, DC, HC, KC, MC, SC CS, CA, CN, CD, CQ, CE, CG, CK, CT BLAST – w-mere • Für jede Anfrage S konstruiert BLAST zunächst eine Liste aller in S vorkommenden w-mere, dann eine Liste aller dazu ähnlichen w-mere (gemäß Scoringmatrix) • Nach diesen w-meren wird dann in D gesucht • Da keine Gaps zugelassen werden und nur direkte Identität mit sehr kurzen Sequenzen getestet werden muss, geht dies sehr schnell S w-mere aus S Treffer in D Ähnliche k-mere Treffer in D Datenbanksequenz D BLAST – Hits • Treffer (hits) in der Datenbank deuten auf Regionen hin, in denen evtl. Ähnlichkeit zur Anfragesequenz besteht • Starke Ähnlichkeit = viele Treffer nah beieinander • Ähnlichkeit bedingt aber auch richtige Reihenfolge der Treffer – Diagonalen! S D BLAST – HSPs • Im zweiten Schritt wird nun nach Paaren von Treffern gesucht, die auf der selben Diagonalen liegen und einen gewissen Höchstabstand in D nicht überschreiten • Diese Paare werden als HSPs (high-scoring pairs) bezeichnet S D BLAST – Alignment S • HSPs werden durch lokale Alignments erweitert soweit möglich (Abbruch, wenn Score unter Grenzwert fällt) • Alignment wird dabei nur auf den Regionen um HSPs herum berechnet (seeds) • Alignment kann lokal recht effizient (ähnlich SmithWaterman) berechnet werden D BLAST – Auswertung S • Nicht signifikante Alignments werden verworfen • Alignments die ausreichend gute Scores liefern, werden beibehalten • Diese entsprechenden lokalen Alignments werden dann von BLAST als Ergebnis ausgegeben • Alle möglichen Alignments werden dabei nach ihrer statistischen Signifikanz bewertet und sortiert D Statistik • Wann ist eine Sequenzsuche erfolgreich? • Wie unterscheidet man sinnvolle Alignments von solchen die durch Zufall entstanden sind? • Wann ist ein Alignment statistisch signifikant? • Es gibt eine Reihe von Größen, die zur Entscheidung dieser Fragen herangezogen werden – – – – Sequenzidentität Ähnlichkeit (raw score) Bit-Score (normalisierter Score) E-Wert (E-value) • Oft geht man davon aus, dass Sequenzidentität über 25-30% funktionelle und strukturelle Ähnlichkeit der Proteine impliziert Bit-Score • Da der unbereinigte Score (raw score) eines Alignments von der Länge der Sequenzen, der verwendeten Scoringmatrix und Gapkostenfunktion abhängt, ist der Vergleich der Raw-Scores nicht aussagekräftig • Karlin und Altschul haben eine Normalisierung vorgeschlagen, der die Ergebnisse untereinander besser vergleichbar macht, den so genannten Bit-Score s´, der sich wie folgt aus dem Raw-Score s berechnet: • Karlin-Altschul-Parameter λ und K ergeben sich dabei jeweils aus der verwendeten Scoringfunktion E-Werte • Der E-Wert ist die wichtigste statistische Größe bei der Bewertung eines BLAST-Ergebnisses • Er trifft eine Aussage über die statistische Signifikanz des Alignments, d.h. wie wahrscheinlich es ist, dass die Ähnlichkeit der beiden Sequenzen ein zufälliges Ergebnis ist • Berechnung des E-Werts basiert auf den Bit-Scores: • Genauer betrachtet ist der E-Wert E(s) der Erwartungswert für die Anzahl der Alignments mit Score s´ die sich zufällig ergeben E-Werte • Für die Wahrscheinlichkeit P(s´), dass ein Alignment mit einem Score von s´ oder besser zufällig zu finden ergibt sich dann: • E-Wert kann Werte zwischen Null und unendlich annehmen • Sehr kleine E-Werte bedeuten natürlich ein statistisch signifikanteres Alignment • Gute Alignments haben sehr kleine E-Werte (z.B. · 0.001) • Alignments mit größeren E-Werten sind nicht als relevant anzusehen Vorbereitung • BLAST erfordert eine Vorbereitung der Sequenzdatenbank bevor die Suche gestartet werden kann • Dabei werden die Sequenzen aus einem beliebigen Format (z.B. FASTA) in ein spezielles BLAST-Format umgewandelt und zusätzliche Index-Strukturen angelegt • Dies erledigt das Programm formatdb • Die Vorbereitung einer Datenbank muss nur einmal durchgeführt werden, danach können beliebig viele Suchen damit durchgeführt werden • Ändert sich die Datenbank, muss formatdb natürlich wieder neu ausgeführt werden • Details zur Verwendung in der Übung Aufruf von BLAST • Von BLAST existieren eine Reihe von Varianten, je nachdem was und worin gesucht werden soll: – blastp – blastn – blastx – tblastn – tblastx Proteinsequenz in Protein-DB NA-Sequenz in NA-DB alle Translationen einer NA-Sequenz in Protein-DB eine Proteinsequenz gegen alle sechs übersetzten Leserahmen einer NA-DB alle sechs Translationen einer NA-Sequenz gegen alle entsprechenden Translationen einer NA-DB (sehr rechenaufwändig!) • Aktuelle Versionen von BLAST vereinen dies in einem einzigen Programm (blastall), dem man den Namen der BLASTVariante als Kommandozeilenparameter mitgibt: • Beispiel: blastall –p blastp … sucht eine Proteinsequenz in einer Proteindatenbank Parameter • BLAST hat natürlich jede Menge an Parametern, die das Verhalten des Algorithmus bestimmen • Relevant sind in erster Linie – Wortlänge w (Default: 3 für Proteine, 11 für NA) – E-Wert bis zu dem Alignments als relevant angesehen werden sollen (Default: 10.0) – Verwendete Scoring-Matrix und Gapkosten (Default: BLOSUM62, σ = 0, ρ = 0) • Diese Parameter müssen BLAST – sofern sie von den Standardeinstellungen abweichen – an der Kommandozeile mitgegeben werden • blastall verrät mögliche Parameter, wenn es ohne Kommandozeilenparameter aufgerufen wird, Details in der Übung Interpretation der Ergebnisse • BLAST erzeugt eine Menge Output, der erstmal interpretiert werden muss • Ausgabe besteht aus einer oft recht langen Textdatei • In der Ausgabe erscheinen – Versionsnummer – Eingabedaten – Eine Liste aller Treffer – Alle Treffer im Detail (inkl. Alignment) • Wir werden uns dieses Format nun oberflächlich ansehen (Details: Übung) BLAST-Ausgabe BLASTP 2.2.8 [Jan-05-2004] Reference: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402. Query= 1HSO:B CLASS I ALCOHOL DEHYDROGENASE 1, ALPHA SUBUNIT (374 letters) Database: Arabidopsis_chr1.fasta 7493 sequences; 3,192,001 total letters Searching...............done BLAST-Ausgabe Score Sequences producing significant alignments: (bits) ref|NP_177837.1| alcohol dehydrogenase (ADH) 382 ref|NP_564409.1| alcohol dehydrogenase,... 335 ref|NP_176652.2| alcohol dehydrogenase,... 320 ref|NP_173659.1| alcohol dehydrogenase,... 289 ref|NP_173660.1| alcohol dehydrogenase,... 286 E Value e-107 5e-93 3e-88 6e-79 5e-78 • Der zweite Teil der Ausgabe enthält die Trefferliste • Am Anfang jeder Zeile dieser Liste steht jeweils die ID (aus der FASTA-Beschreibung) der Sequenz aus der Datenbank • Die beiden letzten Spalten enthalten den Bit-Score und den EWert für das zugehörige Alignment BLAST-Ausgabe >ref|NP_177837.1| alcohol dehydrogenase (ADH) [Arabidopsis thaliana] Length = 379 Score = 382 bits (980), Expect = e-107 Identities = 190/374 (50%), Positives = 249/374 (66%), Gaps = 2/374 (0%) Query: 1 Sbjct: 2 Query: 61 Sbjct: 62 STAGKVIKCKAAVLWELKKPFSIEEVEVAPPKAHEVRIKMVAVGICGTDDHVVSGTMVTP 60 ST G++I+CKAAV WE KP IEEVEVAPP+ HEVRIK++ +C TD + TP STTGQIIRCKAAVAWEAGKPLVIEEVEVAPPQKHEVRIKILFTSLCHTDVYFWEAKGQTP 61 L-PVILGHEAAGIVESVGEGVTTVKPGDKVIPLAIPQCGKCRICKNPESNYCLKNDVSNP 119 L P I GHEA GIVESVGEGVT ++PGD V+P+ +CG+CR C + ESN C ++ LFPRIFGHEAGGIVESVGEGVTDLQPGDHVLPIFTGECGECRHCHSEESNMCDLLRINTE 121 Query: 120 QG-TLQDGTSRFTCRRKPIHHFLGISTFSQYTVVDENAVAKIDAASPLEKVCLIGCGFST 178 +G + DG SRF+ KPI+HFLG STFS+YTVV VAKI+ +PL+KVC++ CG ST Sbjct: 122 RGGMIHDGESRFSINGKPIYHFLGTSTFSEYTVVHSGQVAKINPDAPLDKVCIVSCGLST 181 Query: 179 GYGSAVNVAKVTPGSTCAVFGLGGVGLSAIMGCKAAGAARIIAVDINKDKFAKAKELGAT 238 G G+ +NVAK G + A+FGLG VGL A G + AGA+RII VD N +F +AKE G T Sbjct: 182 GLGATLNVAKPKKGQSVAIFGLGAVGLGAAEGARIAGASRIIGVDFNSKRFDQAKEFGVT 241 Query: 239 ECINPQDYKKPIQEVLKEMTDGGVDFSFEVIGRLDTMMASLLCCHEACGTSVIVGVPPDS 298 EC+NP+D+ KPIQ+V+ EMTDGGVD S E G + M+ + C H+ G +V+VGVP Sbjct: 242 ECVNPKDHDKPIQQVIAEMTDGGVDRSVECTGSVQAMIQAFECVHDGWGVAVLVGVPSKD 301 BLAST und BioPython • BioPython bietet viele Möglichkeiten BLAST direkt aus einem Python-Programm heraus aufzurufen und die Ergebnisse komfortabel auszulesen • Dazu bietet BioPython einen BLAST-Output-Parser an (Parser = Code der bestimmte Dateiformate lesen und interpretieren kann) • Damit kann man recht schnell Alignments berechnen, sortieren, miteinander vergleichen usw. • Details zur Verwendung: – Übung – www.biopython.org Literatur + Links • Merkl/Waak, S. 128ff: etwas ausführlichere Grundlagen • Korf, Yandell, Bedell: BLAST, O‘Reilly, 2003: alles was Sie zu BLAST wissen müssen • BLAST zum Herunterladen für praktisch alle Rechner (inkl. Windows: ia32-win32): ftp://ftp.ncbi.nih.gov/blast/executables/release/2.2.22/