Lade Inhalt...

Entwicklung einer auf OpenGL basierenden grafischen Oberfläche für das de novo Design von Proteinstrukturen

Diplomarbeit 2004 107 Seiten

Informatik - Angewandte Informatik

Leseprobe

Inhalt

Abbildungsverzeichnis

Symbolverzeichnis

1 Motivation und Grundlagen
1.1 Motivation
1.2 Das Protein
1.2.1 Aufbau von Proteinen
1.2.2 Faltung von Proteinen
1.2.3 Die α-Helix
1.2.4 Das β-Faltblatt
1.2.5 Das Rückgrat eines Proteins
1.2.6 Das Ramachandran-Diagramm
1.3 Die Tetrapeptidfunktionen der ACGT ProGenomics AG
1.4 Grundlagen der Grafikprogrammierung
1.4.1 OpenGL
1.4.1 Theoretische Grundlagen von OpenGL
1.4.2 DirectX
1.4.3 Das Tao-Framework

2 Herangehensweise

3 Programmierung
3.1 Das .NET-Framework
3.2 Softwareentwicklung
3.2.1 Phasen
3.2.2 Begriffe

4 Programmierung der grafischen Oberfläche
4.1 Erstellen der Sekundärstrukturelemente in OpenGL
4.2 Geometrische und topologische Eigenschaften der Sekundärstrukturelemente

5 Berechnen der Sequenz
5.1 Parameter für die Berechnung
5.2 Erstellen der Sequenz
5.3 Auswertung der Ergebnisse

6 Zusammenfassung und Ausblick
6.1 Zusammenfassung und offene Aufgaben
6.2 Ausblick

7 Literaturverzeichnis

8 Anhang
A) Programmierbeispiel A
B) Programmierbeispiel B
C) Programmierbeispiel C
D) Die energetisch besten Sequenzen für das Protein 1QYS

Abbildungsverzeichnis

Abbildung 1: HIV Protease-Inhibitor Komplex

Abbildung 2: Peptidbindung zwischen einem C- und einem N-Atom

Abbildung 3: Rechtsgängige α-Helix

Abbildung 4: β-Faltblatt

Abbildung 5: N-Cα- und Cα-C-Bindung

Abbildung 6: Sterische Bindung zwischen Carbonyl-Sauerstoff und Amid-Wasserstoff

Abbildung 7: Ramachandran-Diagramm

Abbildung 8: ψ und φ zwischen der dritten und der vierten Aminosäure

Abbildung 9: OpenGL Grafik-Pipeline

Abbildung 10: Punkttransformationen Translation und Rotation

Abbildung 11: 4*4-Matrix

Abbildung 12: Addition der Verschiebungskoordinaten

Abbildung 13: Skalierung eines Punktes

Abbildung 14: Rotation eines Punktes durch Multiplikation

Abbildung 15: Translationsgleichung mit inhomogenen Koordinaten

Abbildung 16: Orthogonale und perspektivische Projektion

Abbildung 17: Reihenfolge bei der Abarbeitung von Transformationen

Abbildung 18: Kamera und Viewport im Ursprung

Abbildung 19: Objekt mit Gouraud-Shading

Abbildung 20: Objekt mit Flat-Shading

Abbildung 21: Das Drahtgittermodell eines Würfels

Abbildung 22: Implementierung der Dlls

Abbildung 23: SimpleOpenGlControl

Abbildung 24: Klassendiagramm der entwickelten Software

Abbildung 25: Listenbefehle in der Übersicht

Abbildung 26: Quad- bzw. Triangle-Strukturen in einem Faltblatt

Abbildung 27: Faltblatt-Objekt im Programm

Abbildung 28: Helix-Objekt im Programm

Abbildung 29: Helix bestehend aus Quad-Objekten

Abbildung 30: Übersicht der GLUT-Befehle

Abbildung 31: Faltblatt-Objekt mit Atomen

Abbildung 32: Generierung der Aminosäuren

Abbildung 33: Generierung eines Sekundärstrukturelementes

Abbildung 34: Position von Faltblatt und Aminosäurekette

Abbildung 35: Positionen des Faltblatts und der Atome

Abbildung 36: Helix-Objekt im Koordinatenursprung

Abbildung 37: Die Generierung der AS (Atome)

Abbildung 38: Position von Helix und Aminosäuren

Abbildung 39: Positionen der Helix und der Atome der Aminosäuren stimmen jetzt überein

Abbildung 40: Winkelkonformation in Sekundärstrukturen

Abbildung 41: Verdrillungswinkel und Ausrichtung der Stränge bei antiparallelen Faltblatt

Abbildung 42: Verdrillungswinkel und Ausrichtung der Stränge bei parallelen Faltblatt

Tabelle 5.1: Ergebnisdatensatz des Tetrapeptides ACNK

Abbildung 43: Dichtefunktion von ACNK

Abbildung 44: Richardson & Richardson Nomenklatur

Tabelle 5.2: Anzahl der Tetrapeptide an den Positionen N1, I und C1 in einer Helix

Tabelle 5.3: Anzahl der Tetrapeptide an den Positionen N1, I und C1 in einem Faltblatt

Abbildung 45: Bestimmung der Wahrscheinlichkeitswerte für Tetrapeptide

Abbildung 46: 3-D-Plot der Dichtefunktion des Tetrapeptides IAHV

Abbildung 47: Hierarchische Baumstruktur

Abbildung 48: Struktur des DataSet -Modells

Abbildung 49: Struktur NodeChild im Programm

Abbildung 50: Grafische Darstellung der Proteinstruktur des Proteins 1G28C

Abbildung 51: Erstellen eines View auf der Datenbank für Faltblattstrukturen

Abbildung 52: Erstellen eines View auf der Datenbank für Helixstrukturen

Abbildung 53: Selektion der Ausgangsknoten für Helixstrukturen

Abbildung 54: Selektion der Ausgangsknoten für Faltblattstrukturen

Abbildung 55: Erstellen einer Sequenz aus Tetrapeptiden (schematisch)

Abbildung 56: Hydropathie Index von Aminosäure-Seitenketten

Abbildung 57: Abarbeitung der Ausgangsknotenpunkte

Tabelle 5.4: Die Anzahl der berechneten Sequenzen für ein Faltblatt-Objekt

Tabelle 5.5: Die Anzahl der berechneten Sequenzen für ein Helix-Objekt

Abbildung 58: 3D Darstellung des Proteins 1QYS

Abbildung 59: Ausschnitt aus einer Ergebnisdatei nach der Kraftfeldberechnung

Abbildung 60: Ausschnitt aus einer Ergebnisdatei mit der aufsummierten Gesamtenergie

Abbildung 61: Die energetisch beste Struktur im Vergleich zur Originalstruktur

Abbildung 62: Die energetisch zweitbeste Struktur im Vergleich zur Originalstruktur

Abbildung 63: Die energetisch drittbeste Struktur im Vergleich zur Originalstruktur

Symbolverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

Thesen zur Diplomarbeit

I. Proteine sind für eine Vielzahl von biologischen Funktionen verantwortlich

II. Proteine sind molekulare Werkzeuge, mit denen die genetische Information umgesetzt wird.

III. Die Eigenschaften eines Proteins werden wesentlich durch seine dreidimensionale Struktur bestimmt.

IV. Die Gewinnung von neuen Proteinstrukturen ist bisher nur im Labor mit erheblichem Aufwand realisierbar.

V. Mit der im Rahmen dieser Diplomarbeit entwickelten Software ist es möglich, neue Proteinstrukturen nach eigenen Vorgaben zu erstellen (de novo Protein Design).

1 Motivation und Grundlagen

1.1 Motivation

Proteine sorgen dafür, dass chemische Reaktionen in Zellen katalysiert und reguliert werden (Enzyme), sie übermitteln Signale von Zelle zu Zelle (Hormone), erkennen Signale und leiten sie dem Zellinneren zu (Rezeptoren), transportieren schlecht wasserlösliche Stoffe wie Sauerstoff (Hämoglobin) oder Eisen (Transferrin) und leiten oder pumpen Ionen durch Zellmembranen (Ionenkanäle und -pumpen) [Löffler, Petrides, 2003, 1]. Proteine verleihen der Zelle ihre jeweilige Gestalt. Ihre dreidimensionale Struktur oder Tertiärstruktur enthält die wesentlichen Informationen, um all diese Funktionen effizient und unter strenger Kontrolle ablaufen zu lassen. Die räumliche Struktur, also die Form, ist das Geheimnis der Funktionen von Proteinen. Ein wichtiges Thema in der Biologie der letzten Jahre ist deshalb die Bestimmung oder die Vorhersage solcher Proteinstrukturen. Der Schlüssel zum Verständnis der Funktionen von Proteinen heißt: Die Funktion ist von der dreidimensionalen Struktur abhängig, die wiederum durch die Aminosäuresequenz in einer definierten physikochemischen Umgebung festgelegt ist.

Die experimentelle Bestimmung von Proteinstrukturen ist sehr aufwendig. Für die Untersuchung der Struktur von Proteinen gibt es zwei Verfahren: Die Röntgenstrukturanalyse und die Kernmagnetresonanz-Spektroskopie (Nuclear Magnetic Resonance, NMR). Bei Proteinen, die sich kristallisieren lassen, kann man mit der Röntgenstrukturanalyse (Beugung von Röntgenstrahlen) recht genau die Position jedes einzelnen Atoms in Bezug auf die anderen Atome des Moleküls bestimmen. Die NMR-Spektroskopie ergänzt die Röntgenstrukturanalyse, da sie Informationen über die dreidimensionale Struktur in Lösung liefert, etwa über die Flexibilität von Teilen des Proteins, die sich in kristalliner Form nicht zeigen [Nelson, Cox, 1]. Theoretische Aussagen, wie man von der Sequenz auf die Struktur schließen kann, sind nach dem heutigen Stand der Technik noch sehr unzuverlässig. So liegen zwar häufig die Sequenzen für Proteine vor, aber nicht deren dreidimensionale Strukturen. Spezielle biologische Funktionen können jedoch nur aus der räumlichen Struktur eines Proteins abgeleitet werden. Die Funktionen vieler Proteine erfordern die Bindung anderer Moleküle. Ein Molekül, das von einem Protein gebunden wird, bezeichnet man als Ligand. Ein Ligand kann ein beliebiges Molekül sein, aber auch ein anderes Protein. Eine Protein- Ligand -Wechselwirkung ist unter anderem entscheidend, wenn ein Organismus rasch auf Veränderungen der Umwelt und des Stoffwechsels reagieren muss [Nelson, Cox, 2]. Die molekulare Struktur, an der ein Ligand an ein Protein bindet, wird Bindungsstelle genannt. Sie ist komplementär zum Liganden, was Größe, Form, Ladung und hydrophobe bzw. hydrophile Eigenschaften betrifft. Ein bestimmtes Protein kann verschiedene, voneinander getrennte Bindungsstellen für mehrere unterschiedliche Liganden besitzen.

Mit der vorliegenden Diplomarbeit wird versucht, von einer Struktur zu einer mit ihr kompatiblen Sequenz zu gelangen. Ziel der Arbeit ist, ein neuartiges Werkzeug zu entwickeln, mit dem Proteinstrukturen nach eigenen Vorgaben erstellt werden können (de novo Protein Design). Nachdem der Nutzer ein aus den periodischen Sekundärstrukturelementen bestehendes strukturelles Rahmengerüst definiert hat, wird der eigentliche Prozess des de novo Protein Designs gestartet, bei welchem die Sekundärstrukturelemente mit Aminosäuren befüllt werden.

Der Vorteil dieser neuen Methode liegt auf der Hand: Dem Benutzer wird erlaubt, neue Proteinstrukturen gezielt für bestimmte Aufgaben zu erzeugen. Ein Beispiel für die Anwendung ist das im vorigen Abschnitt erwähnte Schlüssel–Schloss-Prinzip (Abbildung 1). Die Bildung von Protein– Ligand –Komplexen, also von Schloss-Schlüssel-Komplexen, erfordert komplementäre Oberflächen- eigenschaften der Komponenten (Geometrie, Elektrostatik, Wasserstoffbrücken). Wenn man davon ausgeht, dass die Liganden struktur bekannt ist, die Struktur des Proteins dagegen nicht, so soll mit dem zu erstellenden Werkzeug die Oberflächenstruktur des Proteins so modelliert werden können, dass ein möglichst genau passendes Schloss (Proteinstruktur) erzeugt wird.

Ein grafisches Protein-Design-Tool, wie es hier entwickelt werden soll, ist derzeit noch nicht implementiert, bzw. ist eine frei verfügbare Implementierung noch nicht bekannt.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1: HIV Protease-Inhibitor Komplex.

1.2 Das Protein

1.2.1 Aufbau von Proteinen

Der menschliche Körper verfügt über 30.000 bis 50.000 verschiedene Proteine, die u. a. für Struktur, Katalyse, Informationsvermittlung und Abwehr verantwortlich sind [Löffler, Petrides, 2003, 2]. Sie bestehen aus linearen Ketten ihrer Grundbausteine, den Aminosäuren. Aminosäuren werden in Zellen gebildet und mit Hilfe der sog. Ribosomen zu Peptiden und Proteinen verknüpft (Abbildung 2). Sie besitzen eine Carboxyl- und eine Aminogruppe, die an dasselbe Kohlenstoffatom (das α-Kohlenstoffatom) gebunden sind. Sie unterscheiden sich durch ihre R-Gruppen[1] oder Seitenketten, deren Strukturen, Größen und elektrische Ladungen unterschiedlich sind und die Löslichkeit der Aminosäuren in Wasser beeinflussen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2: Unter Abgabe eines Wassermoleküls, vereinigen sich die Aminosäuren zu einem Dipeptid. Es entsteht eine sog. Peptidbindung zwischen einem C- und einem N-Atom.

Die Peptidbindung ist das charakteristische Strukturmerkmal von Polypeptidketten. Erst ab einer Kettenlänge von mehr als 50 Aminosäuren bezeichnet man sie als Proteine. Ein Protein muss jedoch nicht zwingend aus nur einer Aminosäurekette bestehen. Es kann auch aus mehreren, aneinander assoziierten Ketten zusammengesetzt sein. Ausgehend von hundert Kettengliedern und 21 verschiedenen Aminosäuren (zu den bekannten 20 Aminosäuren kommt Selenocystein als Sonderfall hinzu) ergeben sich 21100 verschiedene Möglichkeiten, ein Protein zusammenzusetzen. Hier zeigt sich die große strukturelle und funktionelle Vielfalt der Proteine. Die Struktur eines Proteins bestimmt auch dessen Funktion.

Als Grundlage der Sequenz, in der Aminosäuren verknüpft werden, dient die Gensequenz. Diese Gensequenz setzt sich aus vier Nukleotiden zusammen:

- Adenin
- Cytosin
- Guanin
- Thymin

Die Buchstaben A, C, G und T sind eine bekannte abkürzende Schreibweise dieser Nukleotide.

1.2.2 Faltung von Proteinen

Die Eigenschaften eines Proteins werden wesentlich durch seine dreidimensionale Struktur bestimmt. Da Proteine aus lediglich 20 Aminosäuren aufgebaut sind, könnte man von ihnen mehr oder weniger ähnliche Eigenschaften erwarten. Denaturierte (ungefaltete) Proteine haben tatsächlich ähnliche Charakteristika. Die dreidimensionale Struktur eines nativen (physiologisch gefalteten) Proteins wird jedoch durch seine Primärstruktur bestimmt, durch die es einen einmaligen Satz charakteristischer Eigenschaften erhält.

Die Struktur der Proteine betrachtet man auf vier verschiedenen Ebenen [D. Voet, J. G. Voet, Biochemie, 1]. Die dem Protein zugrunde liegende Aminosäuresequenz wird als Primärstruktur bezeichnet. Die Sekundärstruktur einer Polypeptidkette ist definitionsgemäß seine lokale Gerüstkonformation. Bei den Proteinen werden damit Faltungsmuster des Polypeptidgerüsts wie Helices, Faltblattstrukturen und Windungen bezeichnet. Die Tertiärstruktur eines Proteins ist seine dreidimensionale Anordnung, d. h. die Faltung seiner Sekundärstrukturelemente und die räumliche Platzierung der Seitenketten. Unterschiedliche physikalische Wechselwirkungen sind für die Ausbildung der Tertiärstruktur verantwortlich [Löffler, Petrides, 2003, 3]. Das sind elektrostatische Wechselwirkungen, intramolekulare Wasserstoffbrücken, hydrophobe Wechselwirkungen und Disulfidbrücken. Einige Proteine bestehen aus zwei oder mehreren separaten Polypeptidketten oder Untereinheiten, die identisch oder verschieden sein können. Die Anordnung dieser Proteinuntereinheiten in dreidimensionalen Strukturen macht die Quartärstruktur aus. Sie verleiht Proteinen oft funktionelle Eigenschaften, die durch nur geringe Veränderungen der Lagebeziehung der einzelnen Untereinheiten reguliert werden können. Besteht ein Protein aus mehreren Untereinheiten, kann es sich um identische oder nichtidentische Polypeptidketten handeln. Proteine mit identischen Untereinheiten werden als Homooligomere bezeichnet, die identischen Untereinheiten als Protomere. Sind die Untereinheiten verschieden, so spricht man von Heterooligomeren.

1.2.3 Die α-Helix

Die α-Helix-Sekundärstruktur wurde im Jahre 1951 von den amerikanischen Forschern Linus PAULING und Robert COREY entdeckt und beschrieben. Unter Ausbildung von Wasserstoffbrücken zwischen dem Sauerstoffatom der Carbonylgruppe einer Peptidbindung und dem Stickstoffatom der NH-Gruppe einer anderen Peptidbindung kommt es zu charakteristischen räumlichen Strukturen, nämlich durch inner molekulare Wasserstoffbrücken zur Helixstruktur (griech. Schraube) (Abbildung 3) . Die α-Helix besitzt unter den vorkommenden Helices die stabilste Form. Bei dieser Anordnung finden sich pro 360 °-Windung 3,6 Aminosäuren. Pro Drehung werden 0,54 nm zurückgelegt [Löffler, Petrides, 2003, 4]. Eine einzelne α-Helix ist meist nicht sehr lang, dazu ist die Struktur nicht stabil genug. Zwei oder mehr Helices können sich aber zu sehr stabilen Strukturen verdrillen, wenn ihre Seitenketten das zulassen. Solche superspiralisierten Helices finden sich z. B. im Myosin des Muskels und dem Keratin der Haare.

Eine Helix kann rechts- oder linksgängig und ein- oder mehrsträngig sein. Die Gängigkeit von Helices wird bestimmt, indem man vom Aminoende beginnend der Windung der Schraube folgt. Beschreibt man dabei eine Rechtsdrehung, so ist die Helix rechtsgängig, im anderen Fall ist sie linksgängig.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3: Rechtsgängige α-Helix. Die Wasserstoffbrücken-Bindungen zwischen den N-H-Gruppen und den C=O-Gruppen von Resten sind durch gestrichelte Linien gekennzeichnet [D. Voet, J. G. Voet, Biochemie, 2].

Neben der rechtsgängigen α-Helix gibt es eine Reihe weiterer Helices, die sich in Drehrichtung und Ganghöhe unterscheiden. In globulären Proteinen dominiert aber die α-Helix. Nur die rechtsgängige 310-Helix spielt eine gewisse weitere Rolle, da α-Helices öfter an ihren Enden in 310-Helices auslaufen. Die α-Helix ist eine röhrenförmige Einheit im Protein, die strukturelle oder funktionale Aufgaben übernehmen kann, z. B. die Verankerung von Proteinen in der Lipid-Doppelschicht.

1.2.4 Das β-Faltblatt

Eine andere Struktur sind lang gezogene Bereiche von Aminosäuren. Sie bestehen aus sog. β-Strands oder β-Strängen, die sich wie Spaghetti parallel oder antiparallel nebeneinander anlagern.

Beim antiparallelen Faltblatt verlaufen benachbarte, durch Wasserstoffbrücken verbundene Polypeptidketten in entgegen gesetzter Richtung (Abbildung 4). Bei einem parallelen Faltblatt verlaufen diese Polypeptidketten in derselben Richtung. Um das kenntlich zu machen, werden die Stränge mit einem Pfeil versehen, der stets vom N- zum C-Terminus zeigt. Ein antiparallel konformiertes β-Faltblatt ist deutlich stabiler als eins aus parallel orientierten Ketten, was auf der maximal möglichen Anzahl von intermolekularen Wasserstoffbrücken beruht. Ein einzelner β-Strang bildet zunächst keine von seinem Rückgrat ausgehenden H-Brücken aus. Erst zwei oder mehr β-Stränge formieren dann ein β-Faltblatt, wenn jeder Strang H-Brücken zwischen seinen eigenen und zwischen benachbarten Peptidgruppen ausbildet (Abbildung 4) [Biochemie]. Ein Faltblatt besitzt keinen Start- oder Endpunkt, sondern jeder Strang des Faltblattes besitzt diese.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 4: β-Faltblatt.

Da sich Peptide wie in Abbildung 4 derart verknüpfen, dass das Rückgrat mit einem Stickstoffatom (N) beginnt und mit einem Kohlenstoffatom (C) endet, spricht man in diesem Zusammenhang von N- und C-Terminus. Ersterer ist in der Abbildung durch ein N kenntlich gemacht, so dass man an dieser Stelle vom Anfang der Kette sprechen kann.

1.2.5 Das Rückgrat eines Proteins

Proteine bestehen aus unverzweigten Ketten von Aminosäuren, die durch Peptidbindungen miteinander verknüpft sind. Eine Peptidbindung entsteht formal durch Wasserabspaltung von der Aminogruppe der einen und der Carboxylgruppe einer weiteren Aminosäure (Abbildung 2). Dadurch gehen die freien α-Amino- und α-Carboxylgruppen verloren und liegen nur an den Enden des Proteins in freier Form vor. Es entsteht somit eine wechselnde Folge von C-Atomen (aus der Carboxylgruppe) und N-Atomen (aus der Aminogruppe) sowie der Cα -Atome, von denen die Seitenketten abgehen. Die Sequenz

-N-Cα-C-N-Cα-C-

wird als Rückgrat der Peptidkette bezeichnet. Das Rückgrat einer Polypeptidkette kann daher als eine Reihe starrer Ebenen dargestellt werden, wobei aufeinander folgende Ebenen einen gemeinsamen Drehpunkt an Cα besitzen (Abbildung 5). Die starren Peptidbindungen begrenzen die Zahl der Konformationen, die eine Polypeptidkette einnehmen kann.

Konventionsgemäß werden die Bindungswinkel, die auf Rotation um Cα zurückzuführen sind, als φ (phi) für die N-Cα-Bindung und als ψ (psi) für die Cα-C-Bindung bezeichnet. Außerdem schreibt die Konvention vor, dass sowohl φ als auch ψ gleich 180° sind, wenn das Polypeptid seine vollständig gestreckte Konformation einnimmt und alle Peptidgruppen in derselben Ebene liegen (Abbildung 5). Prinzipiell können φ und ψ Werte zwischen -180° und +180° annehmen, aber viele Werte sind wegen sterischer Hinderung (aus Platzgründen) zwischen Atomen im Polypeptidrückgrat und in den Aminosäureseitenketten ausgeschlossen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 5: Aufeinander folgende α-Kohlenstoffatome sind in der Polypeptidkette durch drei Bindungen getrennt. N-Cα- und die Cα-C-Bindung können sich drehen, wobei die resultierenden Bindungswinkel als φ bzw. ψ bezeichnet werden. Die C-N-Peptidbindung ist nicht frei drehbar. Andere Einzelbindungen im Rückgrat können je nach Größe und Ladung der Seitenketten ebenfalls in ihrer Drehbarkeit beeinträchtigt sein.

1.2.6 Das Ramachandran-Diagramm

Das Ramachandran-Diagramm (benannt nach dem Erstbeschreiber G. N. Ramachandran [D. Voet, J. G. Voet, Biochemie, 3]) zeigt die sterisch erlaubten φ- und ψ-Winkel zwischen den Atomen eines Dipeptids. Sterisch[2] unmöglich sind solche Konformationen, in denen der interatomare Abstand zwischen zwei nicht-bindenden Atomen geringer ist als der entsprechende van-der-Waals-Abstand[3] (Abbildung 6). Diese Information ist in einer Konformationskarte oder dem Ramachandran-Diagramm gespeichert (Abbildung 7). Abbildung 7 zeigt, dass ein Großteil der Fläche des Diagramms, d. h. die meisten Kombinationen von φ und ψ für eine Polypeptidkette unzulässig sind. Die speziellen Regionen des Ramachandran-Diagramms, die erlaubte Konformationen definieren, sind von den zur Berechnung gewählten van-der-Waals-Radien abhängig. Mit jeder realistischen Kombination von Werten lassen sich auf der Konformationskarte nur drei allgemeine Regionen finden, die für eine Polypeptidkette erlaubt sind [D.Voet, J.G.Voet, 3].

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 6: Sterische Bindung zwischen dem Carbonyl-Sauerstoff und dem Amid-Wasserstoff an benachbarten Resten verhindert das Auftreten der Konformation ψ = 30°, φ = -60°.

Die meisten Punkte, die in „verbotene“ Regionen von Abbildung 7 fallen, liegen zwischen zwei vollständig zugänglichen Flächen. Diese verbotenen Konformationen werden allerdings zugänglich, wenn Verdrehungen von wenigen Grad um die Peptidbindung erlaubt sind.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 7: Ein Ramachandran-Diagramm, das die sterisch erlaubten ψ- und φ-Winkel zeigt. Die Regionen der „normalerweise“ erlaubten Winkel ψ und φ sind rot gezeichnet, wogegen die gelb getönten Regionen Konformationen entsprechen, die die äußerste Grenze für van-der-Waals-Kräfte aufweisen. Die Konformationen mehrerer Sekundärstrukturen sind angegeben. Helix links- und rechtsdrehend, paralleles (↑↑) und antiparalleles Faltblatt (↑↓).

1.3 Die Tetrapeptidfunktionen der ACGT ProGenomics AG

Grundlage für die spätere Berechnung der Sequenz waren die Tetrapeptidfunktionen der ACGT ProGenomics AG. Die zur Konformationsanalyse verwendeten Proteinstrukturen wurden der Proteindatenbank PDB, stand 08.12.2003, entnommen [Berman et al. 2000].

An die für die Analyse verwendeten Proteinstrukturen wurden definierte Qualitätsanforderungen gestellt. Es fanden ausschließlich durch Röntgenkristallographie aufgeklärte Strukturen Verwendung, die eine Kettenlänge von mindestens 30 Aminosäuren aufwiesen. Kleinere, meist unstrukturierte Peptide wurden so aus der Konformationsbetrachtung ausgeschlossen. Weiterhin wurden nur diejenigen Strukturen dem Ausgangsdatensatz beigefügt, deren Auflösung besser als 3 Å war. Der Ausgangsdatensatz beinhaltete 35.397 Strukturen unbekannter Redundanz und diente als primäre Datenbasis zur Konformationsbetrachtung der Tetrapeptide.

In den heute bekannten Proteinstrukturen finden sich oft längere Bereiche, deren Struktur aus experimentellen Gründen nicht aufgelöst ist (sog. Gaps). Würden jedoch die Diederwinkel zwischen zwei randständigen Aminosäuren eines Gaps an den Positionen n und n + m (mit m > 1) errechnet werden, dann führte dies offensichtlich zu falschen Ergebnissen. Daher war es notwendig, solche Gaps in Proteinstrukturen sicher zu erkennen. Dazu wurde die maximale Länge einer Peptidbindung mit 1.4 Å als Grenzwert für den Abstand des Carboxy-C-Atoms der Aminosäure n und des Stickstoffatoms der Aminosäure n + 1 festgelegt. Wenn dieser Abstand größer als der Grenzwert war, so wurde zwischen diesen Aminosäuren ein Gap erkannt und demzufolge keine Diederwinkel errechnet.

Die Proteinstrukturen des Ausgangsdatensatzes wurden nach Tetrapeptiden durchsucht, bei denen die mittleren Aminosäuren der Proteinrückgratatome N, Cα und C aufgelöst sein mussten. Grund hierfür war die Errechnung der Diederwinkel ψ und φ zwischen der zweiten und dritten Aminosäure (Abbildung 8), die eine definierte Positionsangabe dieser Atome voraussetzt. Es wurden ebenfalls nur Atompositionen berücksichtigt, deren Occupancy -Wert einen Betrag von 1,00 in den PDB (Protein Data Base) -Daten zugewiesen wurde.

Fehlende Proteinrückgratatome wurden nicht hinzumodelliert, so dass bei Fehlen eines oder mehrerer Atome keine Diederwinkel errechnet und das entsprechende Tetrapeptid nicht berücksichtigt werden konnte.

Jeder gefundene Tetrapeptidtyp (z. B. KEVI, Abbildung 8) wurde mit dem Index, der seine Position innerhalb der Proteinsequenz bestimmt, den zugehörigen Diederwinkeln ψ23 und φ23 der mittleren beiden Aminosäuren und dem PDB-Code, aus dem dieses Tetrapeptid stammt, in einer separaten Datei gespeichert, die als Ausgangsdatensatz zur weiteren Datenaufbereitung diente. Diese Informationen wurden in die Datenbank der ACGT ProGenomics AG übernommen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 8: ψ und φ zwischen der dritten und der vierten Aminosäure des Tetrapeptids KEVI im Ramachandran-Diagramm.

1.4 Grundlagen der Grafikprogrammierung

1.4.1 OpenGL

OpenGL ist eine plattformunabhängige Softwareschnittstelle (API, Application Programming Interface) zur Grafikhardware. Sie beinhaltet über 250 Kommandos (200 im OpenGL-Kern und weitere 50 in der OpenGL Utility Library), die für das Darstellen von Objekten und deren Operationen in 3-D-Anwendungen benötigt werden [Shreiner et al., 2004]. Es ist die primäre Entwicklungsumgebung, um portable, interaktive 2D- und 3-D-Grafikanwendungen zu entwickeln.

OpenGL entstand ursprünglich aus einem von SGI (Silicon Graphics, Inc.) entwickelten Projekt, das die verschiedenen 3-D-Standards mit Microsoft und SGI zu vereinheitlichen versuchte. Das Projekt wurde jedoch früh aufgrund finanzieller Schwierigkeiten vonseiten SGI abgebrochen. Von da an überließ man OpenGL der freien Entwicklung. Durch das ARB (Architecture Review Board) wird der OpenGL-Standard, den es mittlerweile seit 1992 gibt, festgelegt. Große Unternehmen wie 3Dlabs, Apple, ATI, Dell, Hewlett-Packard, IBM, Intel, NVIDIA, Sun und nicht zuletzt Silicon Graphics gehören dem ARB an.

OpenGL stellt alle Objekte zur Verfügung, die für die Darstellung beliebiger komplexer Szenen notwendig sind. Dies sind z. B. Polygone, Beleuchtung, Projektionsarten in der Ebene und Texturen. High-Level-Kommandos zum Darstellen von komplizierten 3-D-Objekten wie Automobile, Teile des menschlichen Körpers, Flugzeuge oder komplexe Moleküle werden nicht unterstützt. Mit OpenGL muss das gewünschte Modell aus einem kleinen Set geometrischer Primitive, also aus Punkten, Linien oder Polygonen, zusammengebaut werden. Eine komplexe Bibliothek, die solche Eigenschaften unterstützt, kann natürlich auf OpenGL aufsetzen. Die OpenGL Utility Library (GLU) unterstützt einen großen Teil der zu modellierenden Eigenschaften wie z. B. die Darstellung von quadrischen Oberflächen und NURBS -Kurven. GLU ist ein Standardteil jeder OpenGL-Implementierung. Neben der GLU-Bibliothek gibt es die OpenGL Utility Toolkit Bibliothek (GLUT), welche die Nutzung von OpenGL unter Windows erheblich vereinfacht. Die GLUT gehört nicht zum Standard-Installationsumfang von OpenGL, sondern muss gesondert installiert werden.

Im Folgenden werden die wichtigsten grafischen Operationen beschrieben, die OpenGL benötigt, um ein Bild zu rendern und auf dem Computerbildschirm darzustellen (Abbildung 9).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 9: OpenGL Grafik-Pipeline.

Im ersten Schritt werden Formen mit Hilfe von geometrischen Primitiven erzeugt. OpenGL stellt die Primitive Punkte, Linien, Polygone, Bilder und Bitmaps zur Verfügung. Alle geometrischen Primitive werden durch Knoten spezifiziert. Das Positionieren der Punkte erfolgt durch affine Transformationen und mit Hilfe der ModelView -Matrix.

Im zweiten Schritt werden die erzeugten Objekte im dreidimensionalen Raum angeordnet und der gewünschte Aussichtspunkt, von dem aus die Szene betrachtet werden soll, festgelegt. Mit der perspektivischen oder der orthogonalen Projektion werden alle Ecken eines Objektes in einem Einheitswürfel skaliert und transformiert. Dies geschieht mit Hilfe der Projektionsmatrix. Wenn sich Objekte außerhalb des Zeichenbereichs befinden, werden sie weggelassen. Dies wird auch als Clipping bezeichnet.

Im dritten Schritt muss allen erzeugten Objekten eine Farbe zugewiesen werden. Die Farbgebung hängt von der Anwendung selbst, von speziellen Lichtverhältnissen oder Texturen der erstellten Objekte ab. Die drei Aktionen können auch kombiniert werden. Außerdem werden die homogenen Koordinaten im Einheitswürfel in normale x-, y-, z-Koordinaten des 3-D- Viewports mit Hilfe der Viewport -Matrix umgewandelt. Die x- und y-Koordinaten entsprechen der Position im dargestellten Fenster, während die z-Koordinate die Distanz im Raum angibt.

Im vierten und letzten Schritt werden die mathematischen Beschreibungen der Objekte und deren zugehörige Farbinformationen in Pixel auf dem Bildschirm umgerechnet. Jedes Pixel kann mit individuellen Farbwerten und einer Tiefeninformation eigenständig gesetzt werden.

Die Vorteile von OpenGL bei der Implementierung in eine zu entwickelnde Software sind die Plattformunabhängigkeit, die Erweiterbarkeit des Quellcodes und die Unterstützung des Client-Server-Modells, das die grafische Ausgabe von der Datenberechnung trennt. So kann man z. B. über ein Netzwerk OpenGL-Programme auf einem entfernten Server laufen lassen und die Ausgabe auf den lokalen Computer umleiten [OpenGL vs. Direct3D]. Für professionelle Grafikhardware liegen zumeist optimierte Treiber vor. OpenAL ist der Gegenpart zu Microsofts Direct-Sound und bietet dem Entwickler auf gleicher Basis wie OpenGL eine plattformübergreifende Audio-API.

Ab OpenGL Version 1.4 wird auch Bump Mapping unterstützt, eine spezielle Version des Texture Mapping. Hier wird der Eindruck vermittelt, dass eine Textur nicht glatt und unnatürlich ist, sondern eine raue bzw. strukturierte Oberfläche hat. Es gibt drei Verfahren für das Mappen von Texturen: Emboss Bump Mapping, Environment Bump Mapping und Dot Product Bump Mapping. Die realistischste Darstellung wird mit dem von 3Dlabs entwickelten Dot Product Bump Mapping erreicht.

OpenGL hat aber auch Nachteile. Bei sehr preiswerter Hardware ist nur eine geringe oder schlechte Treiberunterstützung gewährleistet. Von verschiedenen Entwicklern stammende Erweiterungen sind nicht zwingend im OpenGL-Core enthalten, weshalb es keine einheitliche API zur Nutzung der neuen Features gibt.

SGI und das OpenGL-Steuerungsgremium ARB gaben auf der Siggraph 2004 in Los Angeles die Freigabe der Grafik-Library-Spezifikation OpenGL 2.0 bekannt. Das jüngste Release dieser 3-D-API unterstützt insbesondere erweiterte Funktionen der Schattierungssprache OpenGL Shading Language. Es bietet auf hoher Programmierebene Zugriff auf neue programmierbare Fähigkeiten moderner Grafikprozessoren und bietet Entwicklern einen weiteren wesentlichen Schritt, interaktive Grafikanwendungen mit Fotorealismus und Echtzeit-3-D-Features ausstatten zu können [AUTOCAD Magazin]. Zur neuen Funktionalität gehören das Erstellen von Shader und Programmobjekten und das Schreiben von Vertex- und Fragment-Shader mit Hilfe der OpenGL Shading Language.

1.4.1 Theoretische Grundlagen von OpenGL

Die hier aufgeführten Grundlagen sind wichtig für die erfolgreiche Nutzung von OpenGL. So sind Grundkenntnisse über abstrakte mathematische (geometrische) und physikalische Zusammenhänge für das Verständnis von großer Bedeutung. Sie liefern das Fundament, um effektiv virtuelle Realitäten zu erzeugen.

3-D-Raum

Auf ein zweidimensionales Papier zweidimensionale Objekte zu zeichnen, fällt im Allgemeinen leicht. In der dritten Dimension ist das schon etwas schwieriger, da der Raum sich hier mithilfe einer zusätzlichen und vor allem schief eingezeichneten dritten Achse perspektivisch darstellen lässt.

Transformation

Die Transformation ist von zentraler Bedeutung für die Behandlung von 3-D-Grafikelementen. Unter einer Transformation ist eine Änderung des Ursprungszustandes eines bestimmten Objektes zu verstehen. Die elementarsten und am häufigsten verwendeten Transformationen sind Translation und Rotation (Abbildung 10).

Translation

Eine Translation (engl. translate für verschieben) bewirkt die Verschiebung eines Raumpunktes entlang einer Geraden (Abbildung 10). Die Verschiebung wird durch einen Verschiebungsvektor beschrieben und entspricht damit mathematisch dem zuvor beschriebenen Richtungsvektor. Die Länge, um die der Punkt im Raum verschoben wird, kommt dem Betrag des Verschiebungsvektors gleich.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 10: Punkttransformationen Translation und Rotation.

Die Verschiebung wird in einer Transformationsmatrix abgespeichert. Wenn mehrere Verschiebungen hintereinander ausgeführt werden, resultiert daraus ein Gesamtverschiebungsvektor, der sich mathematisch aus der einfachen Addition der einzelnen Verschiebungsvektoren errechnet. In OpenGL ist bei zusammengesetzten Transformationen die Reihenfolge der Transformationsschritte zu beachten.

Rotation

Neben der Translation ist die Rotation, die am häufigsten angewandte Transformationsart in OpenGL. Auch hier werden Raumpunkte, die über Ortsvektoren beschrieben werden, transformiert. Im Gegensatz zur Transformation werden sie aber im Raum verdreht und nicht verschoben. Für jede Drehung benötigt man eine Drehachse und einen Drehpunkt. Die Drehachse ist immer eine der drei Koordinatenachsen, und der Drehpunkt ist immer der Ursprung des zugrunde gelegten Koordinatensystems. Der zu transformierende Punkt wandert um den Kreisbogen im festen vektoriellen Abstand (Radius) vom Ursprung. Wie bei der Transformation die Verschiebungsrichtung von Bedeutung ist, ist bei der Rotation die Festlegung der Drehrichtung wichtig. Ein positiver Drehwinkel entspricht einer positiven Drehung.

Skalierung

Die Skalierung ist eine besonders einfache Form der Transformation. Mithilfe der Skalierung kann man die Größe eines Objektes in allen drei Achsen manipulieren. Der Skalierungsfaktor s hat dabei die folgende Wirkung: Wenn s > 1, wird das Objekt vergrößert, wenn 0 < s < 1, wird das Objekt verkleinert, und wenn s < 0, wird das Objekt skaliert und gespiegelt.

Matrizen

Im Zusammenhang mit OpenGL tritt immer wieder ein bestimmter Matrixtyp auf, der in der Mathematik auch als homogene Matrix bezeichnet wird. Diese Matrix ist quadratisch, besitzt also die gleiche Anzahl von Spalten- und Zeilenelementen. Wir sprechen hier von einer 4*4-Matrix (Abbildung 11). Diese homogene Matrix (ModelView- Matrix) speichert die Gesamttransformation und somit alle definierten Einzeltransformationen. Die Werte u, v und w verwendet OpenGL für die Speicherung der Projektionstransformation. Diese Werte sind nur „Helfer“ bei der Multiplikation und spielen für die Manipulation keine Rolle. Allgemein werden Matrizen mit Vektoren PUNKTAbbildung in dieser Leseprobe nicht enthalten-multipliziert. Ausgehend von einem untransformierten Raumpunkt (Ortsvektor) P wird über die Matrixoperation MAbbildung in dieser Leseprobe nicht enthaltenP der transformierte Raumpunkt P’ berechnet und stellt das Ergebnis der Koordinatentransformation dar. In der ModelView -Matrix befinden sich also vier Vektoren, die das (lokale) Koordinatensystem des Objektes und damit seine Lage und Position im übergeordneten globalen (Weltsystem) speichern.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 11: 4*4-Matrix.

Homogene Koordinaten

Ein großes Problem bei den verschiedenen Transformationsarten ist, das keine einheitliche Repräsentation der Matrizen vorliegt, die zur Berechnung der Translation, der Rotation und der Skalierung benötigt wird. So wird bei der Transformation zu Punktekoordinaten des zu verschiebenden Objektes, ein Verschiebungsvektor addiert (Abbildung 12). Bei der Skalierung werden diese Punkte mit einem Skalierungsfaktor multipliziert (Abbildung 13), während bei der Rotation diese Punkte mit einer Matrix multipliziert werden (Abbildung 14). Es findet also keine einheitliche Behandlung der Punkte statt. Besonders bei zusammengesetzten Transformationen kann das zu einem erheblichen Mehraufwand führen. Wenn die Punkte in homogenen Koordinaten vorliegen, können alle drei Transformationsarten über die Multiplikation mit einer Matrix einfach miteinander kombiniert werden.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 12: Addition der Verschiebungskoordinaten zu den Ursprungskoordinaten eines Punktes.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 13: Skalierung eines Punktes durch Multiplikation mit der Skalierungsmatrix S.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 14: Rotation eines Punktes durch Multiplikation mit der Rotationsmatrix R (hier explizit Rotation um z-Achse).

Homogene Koordinaten wurden für geometrische Anwendungen entwickelt und später in grafische Anwendungen implementiert [Computer Graphics, 1]. Grafikbibliotheken und moderne Grafikprozessoren arbeiten mit homogenen Koordinaten und Transformationen. Ein Punkt (x, y, z) wird in homogenen Koordinaten durch die vier Koordinaten (x, y, z, W) repräsentiert. Jede Multiplikation aller vier Komponenten mit einem Skalar ungleich 0 bezeichnet den gleichen Punkt im dreidimensionalen Raum. Jeder Punkt hat also unendlich viele äquivalente Komponenten in homogenen Koordinaten. Üblicherweise normiert man homogene Koordinaten so, dass die vierte Komponente gleich 1 ist. Auch der „unendlich ferne“ Punkt ist in dieser Darstellung eingeschlossen. Bei ihm steht an der vierten Komponente eine 0. Bedingung bei der Verwendung von inhomogenen Koordinaten ist, dass mindestens ein Punkt ungleich 0 ist. Ein Punkt der Form (0, 0, 0 ,0) ist demnach nicht erlaubt.

Da die Punkte nun als Spaltenvektor mit vier Elementen vorliegen, ist eine Multiplikation mit einer 4*4-Transformationsmatrix möglich (Abbildung 15).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 15: Translationsgleichung mit inhomogenen Koordinaten (vorher) und mit homogenen Koordinaten (nachher).

Die Projektions- und Ansichtstransformation

Um eine Szene mit dreidimensionalen Körpern betrachten zu können, muss dem Grafiksystem mitgeteilt werden, von welcher Position aus in welche Blickrichtung dies geschehen und ob die Sehstrahlen des Betrachters parallel oder perspektivisch verlaufen sollen. Über den glMatrixMode-Befehl (GL_PROJECTION) wird zu Beginn die Perspektivmatrix zur aktuellen Bearbeitung freigegeben. In dieser Matrix werden alle Informationen zur Projektionstransformation abgelegt, die im Ergebnis zu der Sichtweise der Szene führen. Alle Szenendefinitionen zur globalen Szenedarstellung wie deren Betrachtungswinkel, Perspektive und Bildausschnitt sollten innerhalb der GL_PROJECTION-Matrix erfolgen. Nachdem der Sichtpunkt festgelegt und die Ansichtstransformation durchgeführt wurde, werden die Kameraparameter und die Art der Projektion festgelegt. Grundsätzlich unterscheidet man bei den projektiven Abbildungen zwei Typen (Abbildung 16).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 16: Orthogonale und perspektivische Projektion.

Perspektivprojektion

Das Viewing Volume einer perspektivischen Projektion ist ein Pyramidenstumpf (Abbildung 16). Mit glFrustum() definiert man einen solchen und erzeugt dabei eine Matrix, die zur aktuellen Positionsmatrix multipliziert wird [Einführung in OpenGL]. Die Kamera (Viewpoint) befindet sich im Ursprung. Die Blickrichtung ist entlang der negativen z-Achse. Das Viewing Volume wird durch die Parameter links, unten, vorn und rechts, oben und hinten für die x-, y- und z-Koordinaten der linken unteren bzw. der rechten oberen Ecke der nahen Clipping-Ebene (Schnittebene durch die Pyramide) definiert. Nur Objekte innerhalb des Pyramidenstumpfes, also innerhalb der sechs Clipping-Ebenen, werden dargestellt.

Orthogonale Projektion

Die orthogonale Projektion hat einen Quader als Sichtkörper. Die z-Achse spielt keine Rolle (alle z-Koordinaten werden bei der Parallelprojektion auf z = 0 abgebildet). Die Funktion zur Definition eines Sichtkörpers ist glOrtho(). Ortho steht für die orthogonale Geometrie, die nichts anderes besagt, als dass die Mantelflächen senkrecht zueinander stehen. Die Mantelflächen dieses Sichtkörpers sind die sog. Schnittebenen, die man unter OpenGL definieren muss, um den darzustellenden Ausschnitt der Szene zu bestimmen.

Sicht- und Modelltransformationen

Die Sicht- und die Modelltransformation sind in OpenGL untrennbar miteinander verbunden. Sie werden in einer einfachen ModelView -Matrix miteinander kombiniert. Es gibt unterschiedliche Betrachtungsmöglichkeiten einer Transformation: Bewegt man z. B. die Kamera weg von einem Objekt, entspricht das dem Fall, dass man das Objekt in die entgegen gesetzte Richtung zur Kamera bewegt.

Ein Beispiel für zwei aufeinander folgende Transformationen ist das Zeichnen der schematischen Darstellung des Stranges im Programm. Der Strang besteht aus hintereinander angeordneten Quadern, welche die Aminosäuren darstellen und einer Pfeilspitze, die die Richtung vom N- zum C-Terminus vorgibt. Die Pfeilspitze wird im Koordinatenursprung erzeugt, in diesem um 90 Grad gedreht und danach an den Anfang des Stranges verschoben. Wenn man das Dreieck zuerst verschiebt und danach die Rotation ausführt, befindet sich das Objekt nicht an der erwarteten Position. Der Grund ist einfach: Der Rotationsmittelpunkt ist in OpenGL immer der Koordinatenursprung, wenn das Objekt sich also nicht im Nullpunkt befindet, ergibt sich eine Drehachse aus dem Objektmittelpunkt und dem Koordinatenursprung. Die Reihenfolge, in der Transformationen ausgeführt werden, kann als kritisch bezeichnet werden. Führt man Transformation A und danach Transformation B aus, ist das Ergebnis ein anderes, als wenn man zuerst Transformation B und danach Transformation A ausführt.

Alle Transformationen in OpenGL werden durch 4*4-Matrizen (Abbildung 11) realisiert. Jeder einzelne glMultMatrix() oder anders lautende Transformationsbefehl multipliziert eine neue 4*4-Matrix M mit der aktuellen ModelView -Matrix C und erzeugt eine neue Matrix CM. Am Ende werden die einzelnen Vertices v mit der aktuellen Modelview-Matrix multipliziert. Das bedeutet, dass der letzte Transformationsbefehl, der im Programm aufgerufen wird, der erste Befehl ist, der auf die Vertices angewandt wird. Die Matrizen werden also in der umgekehrten Reihenfolge aufgerufen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 17: Reihenfolge bei der Abarbeitung von Transformationen.

Wie der Auszug aus dem Quellcode in Abbildung 17 zeigt, beinhaltet die ModelView-Matrix die Matrizen I, N, NM und abschließend die Matrix NML. I repräsentiert die Identitätsmatrix. Der transformierte Vertex ist also NMLv. Die Reihenfolge bei der Vertexmultiplikation ist demnach N(M(Lv), d. h. v wird im ersten Schritt mit L multipliziert, das Ergebnis Lv wird mit M multipliziert und das Ergebnis MLv wird abschließend mit N multipliziert. Die Transformationen werden in der umgekehrten Reihenfolge abgearbeitet. Analog zu dem obigen Beispiel können die Transformationen auch auf komplexe Listenobjekte angewandt werden.

Eine Sicht- oder Blickfeld-Transformation ändert die Position und die Orientierung des Punktes, von welchem aus die Szene betrachtet wird. Alle Szenendefinitionen zur globalen Szenedarstellung wie deren Betrachtungswinkel, Perspektive und Bildausschnitt sollten innerhalb der GL_PROJECTION-Matrix erfolgen. Der Initialblickpunkt liegt im Ursprung des globalen Koordinatensystems und kennzeichnet den Mittelpunkt des OpenGL-Darstellungsbereiches (Viewport). Die Initialblickrichtung zeigt von dem Initialblickpunkt weg in Richtung der negativen z-Achse. Der Blickpunkt liegt immer auf dem Blickrichtungsvektor (Abbildung 18).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 18: Kamera und Viewport im Ursprung.

Im einfachsten Fall bewegt man die Kamera (Viewport) nach hinten. Dies hat den gleichen Effekt, als ob das Objekt nach vorn bewegt würde.

Um später eine bessere Übersicht über die gesamte Szene zu bekommen, soll es dem Benutzer erlaubt sein, mit der Kamera um die Szene zu kreisen. Für diese Art der Betrachtung steht die gluLookAt() Routine zur Verfügung (Anhang B Seite 97). Der Funktionsaufruf lautet:

gluLookAt( k_CameraPosX, k_CameraPosY, k_CameraPosZ,

k_CameraViewPointX, k_CameraViewPointY, k_CameraViewPointZ,

0.00, 0.00, 1.00);

Blickpunkt (k_CameraPos) und Szenemittelpunkt (k_CameraViewPoint) werden über die ersten zwei Parameter des gluLookAt-Befehls in Form von Ortsvektoren definiert. Aus der vektoriellen Differenz (Szenemittelpunkt-Blickpunkt) resultiert der Richtungsvektor. Der Szenemittelpunkt ist aber keinesfalls als Mittelpunkt der Szene zu verstehen, vielmehr ist er der Mittelpunkt des Viewports.

[...]


[1] R-Gruppe oder Rest-Gruppe ist eine andere Bezeichnung für die Seitenketten eines Proteins.

[2] Aus Platzgründen sind bestimmte Atom Konformationen nicht möglich.

[3] Als van-der-Waals-Radius eines Atoms bezeichnet man den Radius einer gedachten harten Kugel, welche als Modell für das Atomverhalten herangezogen wird. Van-der-Waals-Radien werden durch die Abstände nichtverbundener Atompaare in Kristallen ermittelt. Der van-der-Waals-Radius ist nach Johannes Diderik van der Waals benannt, der 1910 mit dem Nobelpreis für Physik ausgezeichnet wurde

Details

Seiten
107
Erscheinungsform
Originalausgabe
Jahr
2004
ISBN (eBook)
9783832497958
ISBN (Buch)
9783838697956
Dateigröße
1.7 MB
Sprache
Deutsch
Katalognummer
v224912
Institution / Hochschule
Hochschule Merseburg – Informatik und angewandte Naturwissenschaften
Note
1,3
Schlagworte
bioinformatik eiweiß open protein

Autor

Teilen

Zurück

Titel: Entwicklung einer auf OpenGL basierenden grafischen Oberfläche für das de novo Design von Proteinstrukturen