Volltext - Praktische Informatik

Transcription

Volltext - Praktische Informatik
Universität Siegen
Fachbereich 12 - Elektrotechnik und Informatik
Diplomarbeit
Vergleich molekularer Graphen mit Hilfe des
SiDiff-Algorithmus
Oliver Grassow
Erstprüfer: Prof. Dr. Udo Kelter, Universität Siegen
Zweitprüfer: Prof. Dr.-Ing. Madjid Fathi Torbaghan, Universität Siegen
Siegen, im November 2008
Inhaltsverzeichnis
1 Einleitung ........................................................................................................... 1
1.1
1.2
Aufgabenstellung und Motivation .............................................................. 1
Aufbau der Ausarbeitung ........................................................................... 2
2 Molekulare Graphen ......................................................................................... 4
2.1
2.2
2.3
2.4
Einordnung Wirkstoffentwurf .................................................................... 4
Aufbau und Eigenschaften molekularer Graphen ...................................... 5
Notationen und Dateiformate ..................................................................... 7
Feature Trees ............................................................................................ 10
3 Differenzberechnung mit SiDiff ..................................................................... 14
3.1
3.2
3.3
Der SiDiff-Algorithmus............................................................................ 14
Konfigurierbarkeit .................................................................................... 17
Anpassungserfordernisse .......................................................................... 19
4 Markierungsprozess funktioneller Gruppen ................................................ 23
4.1
4.2
Verwendete funktionelle Gruppen ........................................................... 23
Algorithmus zur Gruppenmarkierung ...................................................... 25
4.2.1
4.2.2
4.2.3
4.3
Verfahren zum Pattern Matching ...................................................... 25
Verfahren zur Markierung funktioneller Gruppen ............................ 28
Verwendeter Algorithmus ................................................................. 32
Dateiformat zur Speicherung .................................................................... 36
5 Integration in die Differenzberechnung ....................................................... 39
5.1
5.2
Datenmodell molekularer Graphen .......................................................... 39
Anpassung der Konfigurationsskripte ...................................................... 42
5.2.1
5.2.2
5.2.3
5.3
5.4
CandidatesConfig .............................................................................. 42
CompareConfig ................................................................................. 43
MatchingConfig ................................................................................ 49
Integration der Gruppenmarkierung ......................................................... 51
Verwendete Ähnlichkeitsmetriken ........................................................... 53
6 Ergebnisse ........................................................................................................ 56
6.1
6.2
6.3
Testumgebung .......................................................................................... 56
Testdatenbestand ...................................................................................... 56
Testläufe ................................................................................................... 58
6.3.1
6.3.2
Markierung funktioneller Gruppen ................................................... 59
Vergleich molekularer Graphen ........................................................ 61
II
6.4
Evaluierung der Ergebnisse ...................................................................... 67
7 Zusammenfassung und Ausblick ................................................................... 70
A Katalog funktioneller Gruppen...................................................................... 72
Gruppen mit Kohlenstoff.................................................................................... 72
Gruppen mit Halogen ......................................................................................... 72
Gruppen mit Sauerstoff ...................................................................................... 73
Gruppen mit Stickstoff ....................................................................................... 74
Gruppen mit Phosphor........................................................................................ 76
Gruppen mit Schwefel ........................................................................................ 76
Polyzyklische Kohlenstoffstrukturen ................................................................. 77
B Algorithmus zur Markierung funktioneller Gruppen ................................. 78
C Testergebnisse Gruppenmarkierung ............................................................. 80
Testläufe mit speziellen Teststrukturen .............................................................. 80
Testläufe mit Molekülen des Datenbestands ...................................................... 87
Laufzeiten für Gruppenmarkierung .................................................................... 88
D Testergebnisse Molekülvergleich ................................................................... 89
Getestete Konfigurationen .................................................................................. 89
Testläufe mit speziellen Teststrukturen .............................................................. 91
Testläufe mit Molekülen des Datenbestands ...................................................... 93
Laufzeiten für Molekülvergleiche .................................................................... 100
Literaturverzeichnis........................................................................................... 101
III
Abbildungsverzeichnis
2.1 Hierarchie der Repräsentationen ........................................................................ 5
2.2 Beispiele SLN und SMILES für einen aromatischen Ring................................ 8
2.3 Beispiel einer MOL-Datei .................................................................................. 9
2.4 Beispiel CML-Datei aus Testdatenbestand ...................................................... 10
2.5 Beispiel zur Erzeugung eines Feature Tree...................................................... 11
3.1 Datenmodell des SiDiff-Vergleichsalgorithmus .............................................. 15
3.2 Schematischer Ablauf der Matching-Phase ..................................................... 16
3.3 Korrespondenzbildung für zwei Moleküle ...................................................... 20
3.4 Zuordnungsproblematik bei gespiegelten Strukturen ...................................... 21
4.1 Beispielmuster für die Verbindungsklassen der Alkene und Nitrate ............... 24
4.2 Überblick über den rekursiven Pattern Matching Prozess ............................... 27
4.3 Beispiel verwendeter Datenstrukturen in [IGPM-VVS] .................................. 28
4.4 Beispielstrukturen für Algorithmus zur Markierung funktioneller Gruppen ... 29
4.5 Beispielbelegung Matching Tree bei Mustersuche .......................................... 30
4.6 Beispiel zur Ermittlung der kanonischen Nummerierung................................ 32
4.7 Klassendiagramm der Molekülstruktur ............................................................ 33
4.8 Klassendiagramm der Verwaltungsstrukturen ................................................. 33
4.9 Beispielsituation bei Markierung eines Imide-Musters ................................... 35
4.10 DTD zur Definition der markierten Moleküle ............................................... 37
4.11 DTD zur Definition der Muster funktioneller Gruppen ................................. 38
5.1 Internes Datenmodell für die Differenzberechnung......................................... 40
5.2 Molekül-Datenmodell im internen SiDiff-Graphen ......................................... 42
5.3 Auszug der CandidatesConfig zum Vergleich molekularer Graphen .............. 43
5.4 Auszug der CompareConfig............................................................................. 48
5.5 Auszug aus MatchingConfig ............................................................................ 51
5.6 Markierte Strukturen für Vergleich .................................................................. 54
6.1 Zusammensetzung des Datenbestands ............................................................. 58
6.2 Zeitaufwand zur Markierung des Datenbestands ............................................. 61
6.3 Zeitaufwand zur Markierung einzelner Moleküle ........................................... 61
6.4 Korrespondenzbildung beim Vergleich von Molekül 5 mit Molekül 457 ....... 64
6.5 Aufwand zum Vergleich mit dem Datenbestand ............................................. 66
IV
Zusammenfassung
Die Bioinformatik beschäftigt sich unter anderem mit dem medizinischen Teilbereich
des Wirkstoffentwurfs. Ein wichtiger Schritt innerhalb dieses Prozesses ist die Ermittlung von Molekülstrukturen, die zu einem Anfragemolekül eine möglichst hohe
strukturelle Ähnlichkeit aufweisen.
Der in der Fachgruppe der Praktischen Informatik der Universität Siegen entwickelte
SiDiff-Algorithmus erfüllt die Aufgabe, Differenzen zwischen unterschiedlichen Versionen eines technischen Dokuments zu ermitteln und sehr detailliert anzuzeigen. Zu
diesem Zweck werden die Dokumente intern in Graphen umgewandelt, die anschließend entsprechend des strukturellen Aufbaus sowie der Eigenschaften der Elemente
verglichen werden. Aufgrund dieses strukturellen Vergleichsablaufs, der Hochkonfigurierbarkeit des Algorithmus und der ausgesprochen detaillierten Differenzermittlung wird in der vorliegenden Arbeit untersucht, inwieweit der SiDiff-Algorithmus
geeignet ist, um molekulare Graphen effizient miteinander zu vergleichen.
Im Rahmen dieser Arbeit wird ein Verfahren vorgestellt, mit dessen Hilfe Substrukturen in Form von funktionellen Gruppen in den zu vergleichenden Molekülen markiert
werden können, um diese mit zusätzlichen Eigenschaften anzureichern. Ausgelegt auf
den Vergleich dieser markierten Moleküle erfolgt anschließend eine Anpassung und
Konfiguration des Vergleichswerkzeugs. Anhand eines Testdatenbestands wird die
Genauigkeit und Effizienz der eingesetzten Verfahren untersucht.
V
1 Einleitung
1.1
Aufgabenstellung und Motivation
Im Rahmen der Softwareentwicklung, speziell dem Bereich der Softwaremodellierung, hat sich im Laufe der letzten Jahre die UML (Unified Modeling Language) mit
ihren vielfältigen Diagrammtypen als Modellierungsstandard durchgesetzt. Der Einsatz von Diagrammen bei der Softwareentwicklung unterstützt die Kommunikation
sowohl der Anwender mit den Entwicklern als auch der Entwickler untereinander.
Ein weiterer Grund für die Verwendung von Modellen stellt das Entwicklungskonzept der MDA (Model Driven Architecture) dar, wonach ein Modell ein System auf
einer höheren Abstraktionsstufe beschreibt als Code und somit der Code nur eine
Ausgestaltung des Modells darstellen sollte (vgl. [Kel05]).
Während der gesamten Entwicklung, besonders jedoch in den frühen Entwicklungsphasen, entstehen zahlreiche Dokumente, die durch sämtliche Phasen hindurch
ständig bearbeitet und weiterentwickelt werden, was eine Versionierung dieser Dokumente erforderlich macht. Verteilte Entwicklerteams und parallele Bearbeitung
machen es häufig erforderlich, dass sich Entwickler die Differenzen zwischen zwei
Versionen eines Dokuments ermitteln und anzeigen lassen müssen. Sowohl für die
Differenzberechnung auf rein textbasierten Dokumenten, als auch für den Vergleich
von Diagrammen, die durch einen hohen Grad an Strukturiertheit gekennzeichnet
sind, haben sich mittlerweile mehrere Standards etabliert, die in gängigen Versionsmanagementsystemen zum Einsatz kommen. Im Fokus dieser Arbeit steht der SiDiffAlgorithmus, der dazu entwickelt wurde, Versionen technischer Dokumente, hauptsächlich von UML-Diagrammen, zu vergleichen und deren Differenzen zu ermitteln.
Zu diesem Zweck werden die Elemente der zu vergleichenden Dokumente zunächst
in eine Graph-Darstellung transformiert, so dass der eigentliche Vergleichsvorgang
im Folgenden auf diesen Graphen vorgenommen werden kann. Neben den rein strukturellen Merkmalen werden auch die Eigenschaften der Elemente in diesen Vergleichsprozess miteinbezogen. Wie die bisherigen Untersuchungen zeigen, erreicht
der SiDiff-Algorithmus gute Laufzeiten für den Vergleich kleiner Dokumente und
akzeptable für den Vergleich großer Modelle, bei einer sehr geringen Fehlerrate (vgl.
[Kel05]). Eine hohe Konfigurierbarkeit ermöglicht zudem die Anpassung an neue
Dokumenttypen.
Im Rahmen zahlreicher Erweiterungen wurde dieser Algorithmus konsequent weiterentwickelt und mittlerweile an die meisten gängigen Dokumenttypen der UML
angepasst. Es stellt sich nun die Frage, inwieweit diese effiziente Umsetzung eines
Algorithmus zum Vergleich graphartiger Dokumentstrukturen auch in anderen Anwendungsgebieten zum Einsatz kommen könnte. Ein mögliches Anwendungsfeld
liegt dabei im Bereich der Bioinformatik.
1
1.2 Aufbau der Ausarbeitung
Die Bioinformatik, als Anwendungsdisziplin zur computergestützten Bearbeitung
von Problemstellungen aus den Bereichen von Biologie und Chemie, beschäftigt sich
unter anderem mit dem medizinischen Teilbereich des Wirkstoffentwurfs. Eine aus
diesem Bereich stammende Aufgabenstellung ist der Vergleich eines WirkstoffMoleküls mit einer Datenbank, in der bereits bekannte Molekülstrukturen abgelegt
wurden, um möglichst ähnliche Strukturen zu ermitteln. Ein Verfahren, das neben
den rein strukturellen Vergleichen auch die Eigenschaften von Atom-Gruppierungen
miteinbezieht, ist das der Feature Trees. Dabei werden in einem molekularen Graphen aus Atomknoten und Bindungskanten zunächst die funktionellen Gruppen markiert, bevor im Anschluss der angereicherte Graph mit der Datenbank verglichen
wird.
Die vorliegende Arbeit beschäftigt sich mit der Fragestellung, inwieweit der SiDiff-Algorithmus geeignet ist, um molekulare Graphen strukturell miteinander zu
vergleichen.
1.2 Aufbau der Ausarbeitung
In Kapitel 2 wird das Anwendungsgebiet im Bereich der Bioinformatik genauer untersucht. Darin werden zunächst Art und Beschaffenheit molekularer Graphen erläutert und gängige Dateiformate mit dem in ihnen enthaltenen Informationsgehalt diskutiert. Das Verfahren der Gruppenmarkierung mithilfe von Feature Trees wird vorgestellt und es wird gezeigt, inwieweit dieses Verfahren im Rahmen von SiDiff eingesetzt werden kann, um den Vergleichsprozess zu unterstützen.
Eine genaue Beschreibung der Funktionsweise des SiDiff-Algorithmus erfolgt in
Kapitel 3 . Die Entwicklung des Algorithmus, der Vergleichsablauf sowie die Konfigurierbarkeit werden dabei ebenso behandelt wie die sich ergebenden Anpassungserfordernisse, die vorzunehmen sind, um molekulare Graphen effizient miteinander
vergleichen zu können.
Kapitel 4 beschäftigt sich mit dem Markierungsprozess der funktionellen Gruppen
in den zu verwendenden Molekülstrukturen. Der gewählte Algorithmus zur Gruppenidentifizierung wird vorgestellt und gegen andere gängige Verfahren abgegrenzt. Die
im Rahmen dieser Arbeit zu verwendenden Muster funktioneller Gruppen werden
aufgezeigt und das neue Datenformat zur Speicherung der Moleküle, in dem die
Gruppenmarkierungen enthalten sind, wird definiert.
Auf den eigentlichen Vergleich der Moleküle wird in Kapitel 5 eingegangen. Zunächst wird die Abbildung der Molekülelemente auf die Struktur des internen SiDiffGraphen definiert, der für die Vergleiche verwendet wird. Dazu werden die anzupassenden Konfigurationsskripte ermittelt und deren Struktur und Bedeutung aufgezeigt.
Die erforderliche Integration der Komponente zur Markierung der funktionellen
Gruppen wird abschließend behandelt.
2
1.2 Aufbau der Ausarbeitung
Kapitel 6 befasst sich mit den eigentlichen Testläufen. Zunächst werden die Testumgebung und die zu verwendenden Testdaten spezifiziert, bevor die Ergebnisse der
einzelnen Testläufe aufgezeigt und evaluiert werden.
Abschließend wird in Kapitel 7 eine kurze Zusammenfassung der ermittelten Ergebnisse geliefert und ein Ausblick auf mögliche Erweiterungen gegeben.
3
2 Molekulare Graphen
2.1 Einordnung Wirkstoffentwurf
Die Bioinformatik stellt eine Anwendungsdisziplin dar, in der es um die computergestürzte Bearbeitung von Fragestellungen aus den Bereichen Biologie und Chemie
geht. Eine genauere Definition liefert ([Hüt06], S.3):
„Bioinformatik ist die Entwicklung und das Betreiben von Datenbanken, Software
und mathematischen Werkzeugen zur Analyse, Organisation und Interpretation biologischer Daten.“
Eine klare Abgrenzung zu anderen Bereichen, wie beispielsweise der Physik oder
der Medizin, fällt aufgrund des eng miteinander verwobenen Charakters der Naturwissenschaften ausgesprochen schwer. [Kel07] platziert in seiner Einführung zum
Wirkstoffdesign die Bioinformatik zwischen der strukturellen Biologie und der Chemoinformatik, die beide neben vielen anderen Disziplinen wie der Pharmakologie,
der Pharmazie und der Wirtschaftswissenschaften ebenso am Prozess des Wirkstoffentwurfs beteiligt sind wie die Bioinformatik selbst. Im Rahmen der Analyse tritt in
der Bioinformatik häufig die Problematik auf, biologische Strukturen miteinander zu
vergleichen und eine möglichst gute Überdeckung zu erzielen. [Pol07] nennt als Anwendungsgebiete in diesem Zusammenhang das Sequenzalignment von DNA (desoxyribonucleic acid) oder RNA (ribonucleic acid), die Interaktionsuntersuchungen von
Proteinen im Rahmen der Proteomik und den Aufbau phylogenetischer Bäume entsprechend der evolutionären Ähnlichkeit von Organismen, Genen oder Proteinen.
Auch im Prozess des Wirkstoffentwurfs stellt sich die Frage nach der Ähnlichkeit von
Strukturen, in diesem Falle nach der Ähnlichkeit von Molekülstrukturen.
Beim Wirkstoffentwurf geht es darum, einen Wirkstoff zu entwickeln, der eine bestimmte Wirkung im Organismus entfaltet. [Koh07] gliedert den Prozess zu dessen
Erzeugung in die Schritte der Sammlung biologischer Daten, Ermittlung des Targets1,
Identifizierung der Leitstruktur2, Optimierung der Leitstruktur bezüglich Nebenwirkungen oder der Synthese, dem Prozess der prä-klinischen und klinischen Prüfung
und schließlich der Zulassung in den jeweiligen Ländern. Von besonderer Bedeutung
im Rahmen dieser Arbeit sind die Schritte der Identifizierung und der Optimierung
der Leitstruktur. Als Leitstruktur dienen häufig kleine Moleküle, die an das zuvor
identifizierte Target binden können. Beschrieben werden diese Moleküle durch molekulare Graphen, die, je nach Abstraktionsebene, einen unterschiedlichen Informationsgehalt aufweisen. Gerade im Bereich der Lead-Optimierung stellt sich die Frage,
1
2
Das Ziel, an dem die Wirkung entfaltet werden soll
Engl.: Lead; Substanz, die an das identifizierte Target binden kann
4
2.2 Aufbau und Eigenschaften molekularer Graphen
welche Molekülstrukturen der bereits bekannten und in Datenbanken hinterlegten
Moleküle zu einer gefundenen Leitstruktur möglichst ähnlich sind. Ziel ist es ein Molekül zu entdecken, das aufgrund seiner Struktur ebenfalls in der Lage ist, an das Target zu binden und darüber hinaus noch weitere Vorteile mit sich bringt. Beispielsweise könnte ein strukturähnliches Molekül einfacher zu synthetisieren sein oder im
Körper geringere Nebenwirkungen verursachen. Ein wichtiger Schritt in diesem Zusammenhang ist also der Vergleich einer Molekülstruktur mit bereits bekannten Molekülstrukturen, um strukturell Ähnliche zu identifizieren.
2.2
Aufbau und Eigenschaften molekularer
Graphen
Moleküle sind Verbindungen aus zwei oder mehr Atomen (vgl. [Int08]). Jedes Atom
hat einen spezifischen Elementtyp und verfügt entsprechend seiner Elektronenkonfiguration über eine bestimmte Anzahl an Bindungen, die es mit anderen Atomen eingehen kann. Dabei können manche Atome auch Mehrfachbindungen mit anderen
Atomen aufbauen, so dass man, bezogen auf die Bindung, von einer numerischen
Ordnung dieser Bindung sprechen kann. Neben den Verbindungsinformationen verfügen Atome über weitere Eigenschaften wie die Atommasse, zugehörige Energieniveaus und die Elektronegativität3.
Abbildung 2.1 Hierarchie der Repräsentationen (Quelle: [Koh07], Foliensatz „Chemoinformatik“,
S.21), Rechts: Molekülbeispiel für 2D-Strukturdarstellung
3
Elektronegativität beschreibt Fähigkeit der Atome, Bindungselektronen in kovalenten Bindungen
an sich zu ziehen und stellt somit ein Maß für die Bindungsfähigkeit (nach [Blu06])
5
2.2 Aufbau und Eigenschaften molekularer Graphen
Molekulare Graphen können auf unterschiedlichen Abstraktionsebenen betrachtet
werden, wie in Abbildung 2.1 schematisch dargestellt ist. Auf der untersten Ebene
besteht ein Molekül lediglich aus der Summenformel, die angibt, aus welchen Atomen es zusammengesetzt ist (vgl. [Lat08]). Informationen darüber, welche Atome
miteinander verbunden sind, lassen sich häufig nicht eindeutig ableiten. Die nächsthöhere Ebene beinhaltet Informationen darüber, welche Atome miteinander verbunden sind, so dass sich eine zweidimensionale Struktur ergibt. Diese Ebene wird häufig zur Modellierung und zur Verdeutlichung chemischer Reaktionen verwendet. Üblicherweise werden zur Darstellung Atomknoten mit ihrem Elementtyp beschriftet
und Bindungskanten entsprechend ihrer Ordnung durch eine oder mehrere Linien
repräsentiert (vgl. [Koh07]). Durch die Kristallographie kann die räumliche Anordnung von Atomen ermittelt werden, woraus sich Längen und Winkel der Verbindungen berechnen lassen. Als Ergebnis dieser Analyse erhält man das geometrische,
dreidimensionale Modell eines Moleküls als weitere Stufe der Abstraktionshierarchie.
Auf der letzten Stufe werden schließlich Informationen über die Oberflächenstruktur
des Moleküls hinzugefügt. Dabei handelt es sich um Charakteristika bestimmter Regionen, die entscheidend dafür sind, mit welchen Bereichen anderer Moleküle diese
reagieren können. Ähnlich dem Schlüssel-Schloss-Prinzip gibt die Oberflächenstruktur darüber Auskunft, ob und wie zwei Stoffe miteinander in Verbindung treten können, inwieweit sie zusammen „passen“.
Wie in Abbildung 2.1 deutlich wird, werden die betrachteten Strukturen von der
untersten zur obersten Ebene hin zunehmend komplexer, was sich auch im Aufwand
für erforderliche Vergleiche widerspiegelt. Während ein Summenformelvergleich
einem reinen Textvergleich entspricht, sind im dreidimensionalen Raum aufwendige
Rotationen und Translationen erforderlich, um Elemente aufeinander abbilden zu
können. Aus diesem Grund wurden für jede betrachtete Ebene diverse Verfahren
entwickelt, um einen effizienten Vergleich zu ermöglichen. Häufig erfolgt die Suche
nach einer ähnlichen Struktur daher gestaffelt, beginnend auf der untersten Ebene.
Auf jeder Ebene wird die Restmenge der Elemente, die noch als Kandidaten für eine
möglichst hohe Ähnlichkeit in Frage kommen, entsprechend des Informationsgehalts
der Stufe ausgewertet und reduziert. Auf diese Weise kann eine, auf der untersten
Ebene noch sehr große Kandidatenmenge, Stufe für Stufe reduziert werden, bis
schließlich auf der obersten Ebene nur noch wenige Moleküle mit aufwendigen Verfahren verglichen werden müssen.
Hauptgegenstand dieser Arbeit ist der Vergleich molekularer Graphen auf der
zweidimensionalen Ebene, da der SiDiff-Algorithmus für den strukturellen Vergleich
von Graphen ausgelegt ist (vgl. Abbildung 2.1 rechts). Ein Graph G=(V, E) wird
durch eine Atom-Knotenmenge V und eine Bindungs-Kantenmenge E beschrieben.
Die Bindungskanten sind ungerichtet und aufgrund der Bindungseigenschaften der
Atome kann der Graph Zyklen enthalten. Ein weiteres Merkmal molekularer Graphen
ist die Eigenschaft, dass die Atom-Knoten einen beschränkten Grad von nicht mehr
als acht Kanten haben können. Zudem sind bis auf wenige hundert polyzyklische Mo-
6
2.3 Notationen und Dateiformate
lekülstrukturen alle Graphen planar und somit kreuzungsfrei darstellbar (vgl.
[Koh07]).
2.3 Notationen und Dateiformate
Insgesamt existieren mehrere Dutzend mögliche Notationsarten und Datenformate zur
Repräsentation molekularer Informationen. Gerade im Bereich zur zwei- und dreidimensionalen Modellierung haben sich jedoch einige wenige Standards herausgebildet, auf die im Folgenden genauer eingegangen wird.
Eines der gebräuchlichsten Formate zur zweidimensionalen Repräsentation stellt
die SMILES-Notation (Simplified Molecular Input Line Specification) dar. Diese
Notation beinhaltet Informationen über die enthaltenen Elemente, die Bindungen
zwischen den Elementen, Ringsysteme, Chiralität4 und Ladungen. Es handelt sich
dabei um eine Zeilennotation, bei der Atome mit dem Großbuchstaben für ihr Element dargestellt werden. Einfachbindungen sowie Wasserstoffatome werden implizit
angenommen, Doppel- und Dreifachbindungen werden mit den Symbolen „=“ und
„#“ dargestellt. Verzweigungen innerhalb der Struktur werden anhand der Klammerung deutlich gemacht. Atome, die in einem Ring angeordnet sind (aromatisch), werden mit einem kleinen Buchstaben notiert und der Ringschluss mit Ziffern vermerkt.
Es existieren weitere Symbole für zusätzliche Informationen. Die wesentlichen Vorteile dieses Verfahrens liegen in der kompakten Notation und der wohldefinierten
Grammatik, die beide eine einfache Lesbarkeit der Ausdrücke ermöglichen. Als problematisch hervorzuheben ist, dass mehrere SMILES für dieselbe Struktur existieren
können, sowie die beschränkten Darstellungsmöglichkeiten von im Wirkstoffentwurf
sehr häufig auftretenden Aromatizität-Ringstrukturen. Erstgenannte Problematik wird
mit einer Erweiterung des SMILES-Standards, den sogenannten USMILES (Unique
SMILES), adressiert.
Als eine alternative Zeilennotation zu SMILES kommt SLN (Sybyl Line Notation)
zum Einsatz. Im Gegensatz zu SMILES werden Wasserstoffatome hier explizit angegeben. Verbindungen in Ringstrukturen erhalten einen Index in eckigen Klammern an
der Startposition und ein „@“-Symbol als Ringschlusssymbol. Zum Ausdruck der
Aromatizität wird bei dieser Notation ein Vermerk bei den Bindungen (mithilfe eines
„:“-Symbols), und nicht, wie bei SMILES, bei Atomen und Bindungen angelegt. Abbildung 2.2 zeigt exemplarisch den Einsatz beider Notationen zur Darstellung einer
aromatischen Ringstruktur.
4
Die Chiralität, oder auch Enantiomorphie (in der Kristallographie) bezeichnet die räumliche
Anordnung von Atomgruppierungen derart, dass diese durch Drehung nicht zur Deckung gebracht werden können (vgl. [Lat08, Kapitel 1 ])
7
2.3 Notationen und Dateiformate
Abbildung 2.2 Beispiele für SLN und SMILES für einen aromatischen Ring (Quelle Notation: [Koh07],
Foliensatz „Chemoinformatik“, S.48)
Beide Verfahren haben die Eigenschaft, dass mit ihnen Informationen über den topologischen Aufbau und Inhalt der Moleküle notiert werden können, ohne dabei
Koordinaten zu verwenden. Gerade bei großen Molekülen mit komplexen Ringsystemen wird die Zeilennotation aufgrund der umfangreichen Klammerung jedoch
schnell unübersichtlich. Zudem sind häufig dreidimensionale Koordinaten für eine
präzisere Beschreibung der Molekülstruktur erforderlich. Im Folgenden werden daher
drei gängige Dateiformate im Bereich der dreidimensionalen Modellierung hervorgehoben.
Als Standard zur dreidimensionalen Notation gilt das von MDL (Molecular Design
Limited) entwickelte MOL-Format (Molecule) für einzelne Strukturen. Eine MOLDatei besteht aus fünf Blöcken und verwendet ein spaltenbasiertes Speicherformat je
Block. Der erste Block entspricht einem Header mit generellen Daten zum verwendeten Programm, Erstellungsdatum, Molekülnamen und weiteren internen Informationen. Im zweiten Block wird die Anzahl der Atome und Bindungen aufgeführt, die
Anzahl zusätzlicher Eigenschaften-Zeilen am Ende der Datei sowie die NotationsVersionsnummer. Im dritten Block werden nun zunächst die Atome spezifiziert. Beginnend mit den X-, Y- und Z-Koordinaten folgen der Elementtyp sowie Informationen über die Ladung. Die eigentliche Struktur ergibt sich mithilfe der im darauffolgenden Block festgehaltenen Bindungsinformationen. In den ersten beiden Spalten
werden die Nummern der verbundenen Atome angegeben, gefolgt von der Ordnung
der Bindung. Mit Hilfe von Atom- und Bindungstabelle lässt sich die dreidimensionale Struktur eines Moleküls herleiten. Im letzten Block werden schließlich zusätzliche
Eigenschaften sowie das Ende der MOL-Datei deklariert. Neben den genannten Informationen können noch viele weitere Daten, beispielsweise aus dem Bereich der
Stereochemie, in MOL-Dateien gespeichert werden. In Abbildung 2.3 wird beispielhaft die MOL-Datei einer kleinen molekularen Struktur dargestellt.
8
2.3 Notationen und Dateiformate
Abbildung 2.3 Beispiel einer MOL-Datei (Quelle: [Koh07], Foliensatz „Chemoinformatik“, S.51)
Ein weiteres weit verbreitetes Format ist das PDB-Format (Protein Data Bank).
Die Protein Data Bank stellt eine der großen im Web frei zugänglichen Datenbanken
dar und beinhaltete nach eigenen Angaben im April 2008 bereits 50.000 Strukturen
(vgl. [Pro08]). Auch dieses Format verwendet eine Spaltennotation mit Atom- und
Bindungstabellen. Für jedes Atom werden die dreidimensionalen Koordinaten festgehalten und es kann vermerkt werden, ob ein Atom ein Heteroatom ist, was in diesem
Zusammenhang bedeutet, dass es Teil eines kleinen molekularen Kofaktors ist (vgl.
[Ato08]). Verwendung findet dieses Format im Unterschied zu MOL aber hauptsächlich bei der Codierung von Proteinen und nicht von kleinen Molekülen.
Das CML-Format (Chemical Markup Language) stellt schließlich das dritte hier
vorstellte Format dar. Dabei handelt es sich um eine auf XML (eXtensible Markup
Language) basierende Notation zur Repräsentation chemischer Informationen mithilfe von Tags. Als Wurzel des Dokuments befindet sich auf der obersten Ebene ein
molecule-Element, dem eine Identifikationsnummer sowie der Name des Moleküls
als Attribute beigefügt werden können. Weitere Eigenschaften können in Form zusätzlicher Tags innerhalb des molecule-Elements angegeben werden. Die beiden wesentlichen Elemente innerhalb des molecule-Tags sind das AtomArray-Element zur
Deklaration von Atominformationen sowie das BondArray-Element als Container für
Bindungsstrukturinformationen. Damit stimmt der Aufbau prinzipiell mit den zuvor
beschriebenen Formaten derart überein, dass alle drei Verfahren zunächst die Atome
und anschließend die Bindungen beschreiben. Atom-Elemente innerhalb des AtomArrays können über eine ganze Reihe von Attributen verfügen, darunter eine eindeutige
ID, der Elementtyp sowie die X-, Y- und Z-Koordinaten. Die Bond-Elemente im
Rahmen des BondArray verfügen über ein Attribut atomRefs2, welches als Wert die
IDs der verbundenen Atome enthält. Neben weiteren möglichen Attributen verfügen
Bindungen noch über den Grad der Bindung sowie eine dokumentweit eindeutige ID
(nach [CML03]). Abbildung 2.4 zeigt zur Verdeutlichung des strukturellen Aufbaus
die CML-Datei eines einfachen Moleküls. Hauptvorteile der CML liegen vor allem in
der klaren Struktur, die validierbar ist und für die Parser mit wenig Aufwand geschrieben werden können. Obwohl noch nicht sehr weit verbreitet, ist dieses Format
9
2.4 Feature Trees
als Standard etabliert und verfügt über eine umfangreiche Spezifikation. Negativ
macht sich der Speicherplatzbedarf bemerkbar, der aufgrund der umfangreichen TagStruktur die anderen Formate übertrifft.
Abbildung 2.4 Beispiel CML-Datei aus Testdatenbestand
Bei der Vielzahl vorhandener Notationen und Formate stellt sich die Frage, inwieweit zwischen den unterschiedlichen Repräsentationen konvertiert werden kann.
Tatsächlich existieren sehr viele mittlerweile veraltete Formate, sowie unvollständige
und zum Teil fehlerhafte Daten (vgl. [Koh07]), so dass entsprechende Filterimplementierungen sehr aufwendig sind. Häufig werden daher von kommerziellen Programmpaketen Schnittstellen angeboten, um bearbeitete Strukturen in einer Vielzahl
von Formaten zu speichern und zu exportieren. Im Open Source-Bereich existiert das
Programm „Open Babel: The Open Source Chemistry Toolbox“, das laufend weiterentwickelt wird und mittlerweile mit etwa 90 unterstützten chemischen Formaten
genutzt werden kann, um zwischen den unterschiedlichen Darstellungen zu wechseln
(siehe [Ope08]). Alle der zuvor vorgestellten Formate können mit diesem Tool ineinander überführt werden, was es ermöglicht, die im Rahmen dieser Arbeit vorzunehmenden Anpassungen am SiDiff-Algorithmus basierend auf nur einem Format durchzuführen. Aufgrund der bei der Entwicklung von SiDiff bisherigen Ausrichtung auf
XMI-Dokumente (vgl. Kapitel 3 ) sowie der aufgezeigten Vorteile der CML, eignet
sich dieses auf XML basierende Format in besonderem Maße als Grundlage zur Speicherung der zu vergleichenden molekularen Graphen.
2.4 Feature Trees
Aus dem Bereich des strukturellen Vergleichs zweier Moleküle stammt ein Verfahren, das mithilfe speziell angereicherter Molekülgraphen, sogenannter Feature Trees,
versucht, eine möglichst gute Überdeckung zu erzielen. Auch wenn die verwendeten
Algorithmen zum eigentlichen Vergleich der erzeugten Bäume grundsätzlich anders
arbeiten als der SiDiff-Algorithmus, so besitzen die Schritte zur Anreicherung der
10
2.4 Feature Trees
Graphen doch eine gewisse Relevanz im Rahmen dieser Arbeit. Aus diesem Grund
wird im folgenden Kapitel das Verfahren der Feature Trees kurz erläutert und es
werden die Bereiche aufgezeigt, die für die Anpassung des SiDiff-Algorithmus relevant sind.
Der Grundgedanke beim Feature Tree Verfahren ist der, in einem molekularen
Graphen Gruppierungen von Atomen und Bindungen mit bestimmten Eigenschaften
zu identifizieren und so auf einen neuen Knoten zu reduzieren, dass der entstehende
Graph ein Baum ist (siehe Abbildung 2.5). Jedes Atom des Graphen ist in mindestens
einem Knoten des Feature Trees enthalten. Sind zwei Atome benachbart, oder ist ein
Atom Teil zweier Knoten des Feature Trees, so werden die beiden Knoten mit einer
Kante verbunden, wodurch die Topologie des ursprünglichen Graphen erhalten bleibt.
Einfache Zyklen im molekularen Graphen werden ebenfalls auf einen Knoten abgebildet. Polyzyklische Strukturen können bis zu einem gewissen Grad auf eine sternartige Knotenstruktur reduziert werden.
Abbildung 2.5 Beispiel zur Erzeugung eines Feature Tree durch Reduktion der mit Kreisen markierten
Atomgruppierungen auf einen neuen Knoten des Feature Tree (Quelle: [Rar98], S.471)
Im Anschluss an die strukturelle Erzeugung des Baums erfolgt die Zuweisung der
Eigenschaften, unterschieden nach sterischen und chemischen Features. Sterische
Eigenschaften beschreiben das Fragment in Bezug auf seine Größe, wofür häufig die
11
2.4 Feature Trees
Anzahl der Atome und das Van-der-Waals-Volumen5 verwendet werden. Chemische
Eigenschaften definieren eine Art Wechselwirkungsprofil mit anderen Substanzen,
beispielsweise die Hydrophobizität6. Für jedes Feature werden drei Funktionen definiert. Die erste, die Generatorfunktion, berechnet den Wert der Eigenschaft für ein
gegebenes Fragment. Die Komparatorfunktion liefert für ein Paar von Eigenschaftswerten einen Ähnlichkeitswert im Bereich [0..1], mit Eins für identisch und Null für
keine Ähnlichkeit. Die Kombinationsfunktion schließlich bildet zwei Eigenschaftswerte auf einen einzelnen ab, der konsistent sein muss mit dem Wert, den die Generatorfunktion für die Vereinigung der beiden Fragmente berechnet hätte. Im Anschluss
an diese Anreicherung des Graphen findet der eigentliche Vergleichsvorgang über ein
sogenanntes Matching statt, bei dem versucht wird, Teilbäume von Feature Tree A
auf Teilbäume von B abzubilden. Ein solches Matching ist gültig, wenn die Abbildung Topologie erhaltend ist und jeder Knoten höchstens in einem Match auftritt
(vgl. [Koh07]). Über weitere Nebenbedingungen lässt sich die Qualität des Matchings
beeinflussen. Hierzu zählen das Gewichtungsverhältnis zwischen sterischen und
chemischen Eigenschaften sowie die maximale Größe der zu matchenden Teilbäume.
Zum eigentlichen Vergleich der Feature Trees werden drei Algorithmen verwendet:
Split Search, Match Search und Split Search mit 1-Shifts, die alle über eine vergleichbare Leistungsfähigkeit verfügen. Grundgedanke der Verfahren ist der, durch Schnitte
in beiden Bäumen Teilbäume zu erzeugen, die dann aufeinander abgebildet werden
können. Als abschließende Betrachtung lässt sich festhalten, dass Feature Trees im
Bereich des topologischen Vergleichs sehr effizient sind. In ihrer Leistungsfähigkeit
lassen sie sich zwischen Fingerprints7 und echten geometrischen 3DStrukturvergleichen einordnen. Kritisch zu sehen ist die Eigenschaft, dass große makrozyklische Systeme mit Feature Trees nicht bearbeitet werden können.
Wie sich im folgenden Kapitel zeigen wird, sind bisherige von SiDiff unterstützte
Dokumenttypen dadurch gekennzeichnet, dass die zu vergleichenden Elemente eine
Vielzahl von Eigenschaften besitzen, die für die Berechnung eines Ähnlichkeitswertes herangezogen werden können. Ein reiner molekularer Graph verfügt im Gegensatz
dazu über viele Elemente, die relativ wenige Eigenschaften besitzen und zudem, jeweils paarweise betrachtet, sehr ähnlich sein können. Als Beispiel können hier Kohlen- oder Wasserstoff-Atome genannt werden, die sehr häufig auftreten, sich im
Hinblick auf ihre Eigenschaften jedoch, wenn überhaupt, kaum unterscheiden. Aus
diesem Grund erscheint eine Anreicherung des molekularen Graphen mit zusätzlichen
Eigenschaften von Vorteil. Im Folgenden wird daher das Verfahren aus dem Bereich
der Feature Trees verwendet, um in einem molekularen Graphen bestimmte Atom5
Das Volumen, das ein Atom (oder eine Atomgruppierung) basierend auf seinem Van-der-WaalsRadius (Radius, in den sich kein anderes Atom annähern kann) besitzt (vgl. [Mol96])
6
Definiert, ob eine Atomgruppierung wasserlöslich (hydrophil) oder wasserunlöslich (hydrophob)
ist (vgl. [Wie04])
7
Verfahren, bei dem das Vorhandensein bestimmter Eigenschaften oder Molekülfragmente auf die
Bitpositionen eines Bitvektor abgebildet wird (vgl. [Koh07], Foliensatz „2D-Ähnlichkeit“)
12
2.4 Feature Trees
gruppierungen zu markieren. Dabei steht jedoch nicht die Eliminierung von Zyklen
im Vordergrund, die vom SiDiff-Algorithmus ohnehin bearbeitet werden können,
sondern die Markierung von sogenannten funktionellen Gruppen (siehe Abbildung
4.1). Dabei handelt es sich um in der organischen Chemie häufig vorkommende Verbindungen aus zwei oder mehr Atomen, deren chemische Eigenschaften wohlbekannt
sind. Von großer Bedeutung sind funktionelle Gruppen, wenn es darum geht, die
Wechselwirkungsmöglichkeiten zweier Moleküle zu untersuchen. Beim Einsatz des
SiDiff-Algorithmus können sie zudem verwendet werden, um die zu vergleichenden
Moleküle mit zusätzlichen Eigenschaften zu versehen und somit die Genauigkeit bei
der Ähnlichkeitsbestimmung zu erhöhen (vgl. Kapitel 3 ). Auf den Prozess der Gruppenmarkierung sowie die zu markierenden funktionellen Gruppen wird ausführlich in
Kapitel 4 eingegangen.
13
3 Differenzberechnung mit
SiDiff
Der SiDiff-Algorithmus wurde 2004 im Rahmen einer Diplomarbeit an der Fachgruppe der Praktischen Informatik mit dem Ziel entwickelt, zwei Versionen eines
UML-Dokuments miteinander zu vergleichen und die Gemeinsamkeiten und Unterschiede zu ermitteln (vgl. [Weh04]). Bis zu diesem Zeitpunkt konnte beim Vergleich
zweier Dokumente innerhalb einer Dokumenthistorie eine Zuordnung der korrespondierenden Elemente lediglich anhand ihrer IDs vorgenommen werden. Gerade im
Hinblick auf in der Praxis häufig genutztes Reverse-Engineering, bei dem die IDs der
ursprünglichen Modellelemente nicht mehr vorhanden sind, war dieses Vorgehen
nicht mehr zeitgemäß. Die ursprüngliche Version von SiDiff adressierte diese Problematik, indem für den Vergleich von Modellelementen Ähnlichkeitsmetriken zum
Einsatz kamen, die Elemente aufgrund ihrer Eigenschaften und Attribute vergleichen
und zuordnen konnten. Dazu werden die existierenden Elemente eines Dokumenttyps
mit ihren Eigenschaften zunächst spezifiziert und anschließend mit Gewichtungen
und Schwellwerten versehen.
Während in der ursprünglichen Version zunächst Klassen- und Zustandsdiagramme unterstützt wurden, erfolgte im Rahmen einer weiteren Diplomarbeit eine Anpassung an Anwendungsfall-, Aktivitäts-, Sequenz- und Kommunikationsdiagramme,
sowie eine Verfeinerung der zuvor bereits unterstützten beiden Diagrammtypen (siehe [Gad07]). Parallel dazu wurde der Algorithmus intern weiterentwickelt und optimiert, beispielsweise in der Vergleichsphase durch den Einsatz einer multidimensionalen Suchbaumstruktur zur Reduktion der Anzahl benötigter Elementvergleiche
(vgl. [Tre07]). Bei der Entwicklung standen zwei Aspekte stets im Vordergrund: der
Algorithmus sollte zum einen hoch konfigurierbar, zum anderen möglichst einfach an
neue Dokumenttypen anzupassen sein. In diesem Kapitel wird zunächst die Funktionsweise des SiDiff-Algorithmus erläutert und aufgezeigt, welche Konfigurationsschritte zur Unterstützung des neuen Dokumenttyps erforderlich sind.
3.1 Der SiDiff-Algorithmus
Der grundsätzliche Ablauf beim Vergleichsvorgang ist unabhängig vom untersuchten
Dokumenttyp und wird daher zunächst allgemein betrachtet. [Kel05] liefert eine ausführliche Beschreibung und wird, sofern nicht anders vermerkt, als Hauptquelle verwendet.
In einem ersten Schritt werden die Eingabedokumente eingelesen und die enthaltenen Elemente in das interne Datenmodell überführt. Wie die Dokumentelemente
dabei auf die Datenmodellelemente abzubilden sind, wird durch ein Mapping in einer
14
3.1 Der SiDiff-Algorithmus
für den jeweiligen Dokumenttyp spezifischen Konfigurationsdatei definiert. Wurde
der interne SiDiff-Graph aufgebaut, erfolgen Vergleich und Auswertung in zwei Phasen.
Abbildung 3.1 Datenmodell des SiDiff-Vergleichsalgorithmus (Quelle: [Kel05], S.5)
Zunächst werden im Schritt der Korrespondenzerkennung8 Elemente in Dokument
A und B ermittelt, die einander entsprechen. Für diese Zuordnung sind keine eindeutigen Identifizierer erforderlich, sondern es werden vielmehr die Eigenschaften der
Elemente für den Vergleich herangezogen. Für je zwei Elemente wird dazu ein Ähnlichkeitswert über die Attribute der Elemente und deren Umgebung, also Referenzen
und Hierarchiebeziehungen, gebildet. Welche Ähnlichkeitsmerkmale dazu herangezogen werden sollen, wie diese zu gewichten und welche Schwellwerte zu überschreiten sind, erfolgt auf Basis einer weiteren dokumenttypspezifischen Konfigurationsdatei (vgl. [Kel071])). Liegt der ermittelte Ähnlichkeitswert über dem definierten
Schwellwert kommen die Elemente als Kandidaten in Frage. Dieser Prozess der Ähnlichkeitswertermittlung erfolgt in zwei Richtungen: Bottom-up und Top-down (vgl.
Abbildung 3.2). In der ersten Phase wird Bottom-up von den Blattknoten hin zur
Wurzel des Graphen jedes Element mit den in Frage kommenden Elementen aus dem
anderen Graphen verglichen und es werden die Ähnlichkeitswerte bestimmt. Ergibt
dieser Vergleich für zwei Elemente in beiden Richtungen einen Ähnlichkeitswert, der
höher ist als für jedes andere verglichene Elementpaar, so werden diese Elemente als
Korrespondenzen erkannt und als einander entsprechend zugeordnet. In diesem Fall
schaltet der Algorithmus in das Top-down Verfahren, indem die zuvor erkannte Korrespondenz an die Kindelemente propagiert wird, woraufhin deren Ähnlichkeitswerte
8
Als Korrespondenz bezeichnet man ein Paar von Komponenten aus zwei Dokumenten, die inhaltlich gleich sind und einander entsprechen (nach [Kel071])
15
3.1 Der SiDiff-Algorithmus
basierend auf den neuen Erkenntnissen erneut berechnet werden. Stellt sich auch hier
zwischen zwei Elementen ein einzigartiger Ähnlichkeitswert heraus, so werden auch
diese einander zugeordnet und das Verfahren läuft Top-down weiter. Der Algorithmus stoppt, sobald alle Elemente Bottom-up verglichen wurden. Um auch in zyklischen Strukturen und in Strukturen, die durch eine hohe Anzahl von Abhängigkeitsbeziehungen gekennzeichnet sind, möglichst alle Korrespondenzen zu entdecken,
läuft der gesamte Algorithmus mehrere Male Bottom-up über den Graphen, was sich
in der Praxis als ausreichend herausgestellt hat.
Abbildung 3.2 Schematischer Ablauf der Matching-Phase (Quelle: [Weh04])
Im Anschluss an die Korrespondenzbildung folgt die Differenzermittlung und
Ausgabe. In dieser Phase werden die Elemente entsprechend ihrer Differenzen in eine
von vier Kategorien eingeteilt. Als Struktur-Differenzen werden Elemente klassifiziert, zu denen keine Korrespondenz gefunden werden konnte. Dazu zählen Elemente, die zu keinem anderen Element eine Ähnlichkeit über dem spezifizierten
Schwellwert erreicht haben, sowie Elemente, für die mehrere Kandidaten mit einem
identischen Ähnlichkeitswert existieren, so dass keine eindeutige Entscheidung getroffen werden kann, welchem es zugeordnet werden soll. Die Klasse der AttributDifferenzen beinhaltet Korrespondenzen, bei denen sich ein oder mehrere Attributwerte geändert haben. Referenz-Differenzen beziehen sich auf Veränderungen bei
referenzierten Elementen einer Korrespondenz. Die letzte Kategorie, die Klasse der
Verschiebungs-Differenzen, umfasst alle Elemente, bei denen sich das ElternElement verändert hat. Geordnet nach diesen Kategorien enthält die Ausgabe alle
Elemente aus beiden Dokumenten.
Um den Vorgang der Korrespondenzerkennung zu optimieren, existieren in der aktuellen SiDiff-Version zwei Verfahren. Das eine Verfahren berechnet in einem vorgelagerten Schritt den Hashwert der enthaltenen Elemente, welcher aus dem Hashwert
16
3.2 Konfigurierbarkeit
des Pfades zu dem jeweiligen Element, den Hashwerten der Namen der Unterelemente sowie den Hashwerten der Pfade von referenzierten Elementen gebildet wird. Über
einen Vergleich der Hashwerte lassen sich Korrespondenzen ohne oder mit nur geringen Unterschieden dann schnell erkennen. Kritisch zu diesem Verfahren ist anzumerken, dass aufgrund der Einbeziehung der Pfadangaben sowohl des Elements selbst,
als auch der referenzierten Elemente, Verschiebungen nicht erkannt werden können.
Das zweite Verfahren verwendet eine mehrdimensionale Suchstruktur, den S³VBaum, in dem ähnliche Elemente zunächst benachbart angeordnet werden. Anstatt
nun jedes Element mit jedem anderen möglichen Kandidaten zu vergleichen, wird der
Vergleich nur noch mit im Baum benachbarten Elementen vorgenommen (vgl.
[Tre07]). Kritisch bei diesem Verfahren ist, geeignete Merkmale für die Organisation
des S³V-Baums sowie eine geeignete Anzahl von zu untersuchenden Nachbarelementen zu wählen.
Als Dokumentformat für bisher unterstützte UML-Diagrammtypen kommt XMI
(XML Metadata Interchange) zum Einsatz. Es ist in besonderer Weise zur Speicherung von Diagrammen geeignet, da sich Eingabedokumente toolspezifisch mit zusätzlichen Eigenschaften anreichern lassen und Referenzen zwischen Modellelementen
über idref-Attribute umgesetzt werden können (vgl. [Kel05]). Diese Eigenschaften
sorgen dafür, dass XMI nicht nur für UML-Diagramme geeignet ist, sondern auch für
andere Arten von strukturierten, diagrammähnlichen Dokumenten. Das Datenmodell
des internen SiDiff-Graphen ist aus diesem Grunde so gestaltet, dass auch XMI Dateien verglichen werden können, die keine UML-Diagramme darstellen (vgl. Abbildung 3.1). Gerade diese Eigenschaft macht es möglich, den SiDiff-Algorithmus auch
für den Vergleich jeglicher anderer graphartiger Strukturen einzusetzen, was den
Vergleich von molekularen Graphen erst ermöglicht.
Zur Unterstützung des neuen Dokumenttyps sind mehrere Konfigurationsskripte
erforderlich, mit denen über eine Reihe von Parametern und Funktionen der Vergleichsvorgang gesteuert wird. Diese Konfigurationsdateien werden im Folgenden
kurz beschrieben, um die komplexen Möglichkeiten zur Konfigurierung des Algorithmus deutlich zu machen und die abschließenden Überlegungen zu benötigten Anpassungserfordernissen zur Unterstützung des neuen Dokumenttyps einzuleiten.
3.2 Konfigurierbarkeit
Bei der Anpassung zur Unterstützung eines neuen Dokumenttyps kann an nahezu
jeder Stelle des Vergleichsvorgangs über eine Konfigurationsdatei steuernd auf den
Ablauf Einfluss genommen werden. Sämtliche verwendeten Konfigurationsdateien
basieren auf XML, was Erzeugung, Bearbeitung sowie Validierung erheblich erleichtert. Im Folgenden werden die Schlüsselstellen im Vergleichsablauf mit den zugehörigen Konfigurationsdateien genauer betrachtet.
17
3.2 Konfigurierbarkeit
Im ersten Schritt ist zu überlegen, wie die Elemente des zu vergleichenden Dokumenttyps auf das interne SiDiff-Datenmodell abgebildet werden können. Da bisher
unterstützte Dokumenttypen im XMI-Format vorlagen und somit auf XML basierten,
konnte diese Abbildung mit Hilfe eines XSL Stylesheet (Extensible Stylesheet Language) vorgenommen werden. Auf diese Weise können eingelesene Eingabeelemente
einfach mit xsl-Befehlen in die entsprechenden Datenmodell-Elemente transformiert
werden. Dieser Schritt ist von entscheidender Bedeutung, da je nach Art der Abbildung der Vergleichsvorgang mehr oder weniger effizient arbeiten kann, im schlimmsten Falle sogar überhaupt keine brauchbaren Resultate liefert. Es ist also auf eine
Abbildung zu achten, die einfach genug strukturiert ist, um effizient durchlaufen werden zu können, aber auch komplex genug, um später aussagekräftige Ähnlichkeitsmerkmale zu entdecken.
Wurden das Datenmodell erzeugt und die Eingabedokumente eingelesen, können
anschließend die zu vergleichenden Elemente genauer spezifiziert werden. Diese
Spezifikation der sogenannten Candidates erfolgt in einer weiteren Konfigurationsdatei. Für jeden Elementtyp können darin Regeln definiert werden, die zutreffen müssen, damit ein Element des Typs aus dem einen Dokument überhaupt mit einem anderen Element des zweiten Dokuments verglichen wird. Somit lässt sich bereits vor
Beginn des eigentlichen Vergleichsvorgangs die Menge der zu vergleichenden Elemente entscheidend einschränken, was gerade bei einer großen Anzahl an Elementen
einen wesentlichen Einfluss auf die Laufzeit des Algorithmus haben kann.
Im Anschluss an die Kandidateneinschränkung startet der eigentliche Prozess der
Korrespondenzerkennung. In der sogenannten MatchingConfig-Konfigurationsdatei
wird zunächst die Implementierung des iterativen Matchers gewählt, welcher derzeit
der standardmäßige DefaultMatcher ist. Für diesen ist es erforderlich, die Reihenfolge zu spezifizieren, in der die Dokumentelementtypen zu betrachten sind. Neben dieser Beschreibung des iterativen Zuordnungs-Ablaufs müssen für jeden Elementtyp
noch weitere Parameter definiert werden, die angeben, welche Nebenbedingungen
erfüllt sein müssen, um zwei Elemente des Typs einander zuzuordnen. So kann mit
der Option parentForceMatch beispielsweise angegeben werden, ob für ein Zuordnung bereits die Elternelemente der betrachteten Elemente zugeordnet sein müssen.
Wesentlicher Kern der Ähnlichkeitswertberechnung ist die CompareConfigKonfigurationsdatei, in der für jeden Elementtyp spezifiziert wird, wie der Ähnlichkeitswert zu berechnen ist und welche Schwellwerte überschritten werden müssen.
Für jeden Knotentyp kann eine Reihe von Vergleichsfunktionen definiert werden.
Diese Funktionen können Elternknoten, Attribute, Kindknoten oder auch referenzierte Knotenmengen vergleichen. Als Resultat liefern sie einen Ähnlichkeitswert zwischen Null und Eins, wobei Null absolut keine Ähnlichkeit und Eins völlige Identität
darstellen. Für jede dieser Funktionen kann eine Gewichtung ebenfalls im Wertebereich [0..1] angegeben werden, die prozentual angibt, inwieweit das Ergebnis der
Funktionsauswertung in den Gesamtwert des Elements einfließen soll. Auf Elementtypebene wird ein Schwellwert definiert, der mindestens erreicht werden muss, damit
18
3.3 Anpassungserfordernisse
zwei Elemente als Korrespondenzen in Frage kommen (vgl. [Ben08]). Liegt nach
Auswertung der Funktionen und der Multiplikation mit den Gewichtungsfaktoren der
ermittelte Ähnlichkeitswert für ein Paar von Elementen über diesem definierten
Schwellwert, so kommen die beiden Elemente als Korrespondenz in Frage. Wird für
kein anderes Paar von Elementen, in denen eines der beiden Elemente enthalten ist,
ein gleicher oder höherer Ähnlichkeitswert ermittelt, so werden die beiden Elemente
als Korrespondenz markiert.
Neben den hier vorgestellten Konfigurationsdateien besteht noch die Möglichkeit,
den internen SiDiff-Graphen vor Beginn des Vergleichsvorgangs mit zusätzlichen
Informationen anzureichern. Diese Anreicherung konnte zum Zeitpunkt dieser Arbeit
jedoch noch nicht über eine externe Datei konfiguriert werden, weshalb diese zukünftig vorhandene Funktionalität hier nicht genauer betrachtet werden kann.
3.3 Anpassungserfordernisse
Nachdem nun sowohl die Grundlagen über den Aufbau und die Eigenschaften molekularer Graphen als auch über die Funktionsweise und Konfigurationsmöglichkeiten
des SiDiff-Algorithmus herausgearbeitet wurden, können im Folgenden die erforderlichen Anpassungen untersucht und spezifiziert werden.
Zu den standardmäßigen Anpassungen gehört die Erstellung der erforderlichen
Konfigurationsskripte. Zunächst muss eine Abbildung der Elemente aus molekularen
Graphen auf entsprechende Strukturen des internen SiDiff-Datenmodells erarbeitet
werden. Wurde diese Abbildung festgelegt, kann ein Skript erstellt werden, welches
die molekularen Eingabedokumente in den internen SiDiff-Graphen transformiert. Da
mit der CML ein Datenformat zur Speicherung molekularer Graphen auf Basis von
XML vorliegt, kann diese Transformation analog zu bisherigen Dokumenttypen mit
Hilfe von XSL-Stylesheets erfolgen. Zur Einschränkung der Kandidatenvergleichsmenge können bestimmte Attribute der Elemente in molekularen Graphen ausgenutzt
werden, wie beispielsweise der Elementtyp der Atome, was eine Erstellung der CandidatesConfig-Konfigurationsdatei sinnvoll erscheinen lässt. Für den Ablauf des Vergleichsvorgangs und die Ähnlichkeitswertberechnung sind die MatchingConfig- und
CompareConfig-Dateien, basierend auf den gewählten Strukturen des Datenmodells,
anzulegen. Im Hinblick auf die Eigenschaft molekularer Graphen, viele Elemente mit
relativ wenigen einzigartigen Merkmalen zu besitzen, wird im Rahmen der CompareConfig die Ermittlung der Ähnlichkeitswerte stark von der Betrachtung der Elementumgebungen beeinflusst werden.
Gerade die Eigenschaft von Molekülen, viele gleichartige Elemente zu enthalten,
die sich einzig durch ihre strukturelle Platzierung im Graphen unterscheiden, ist in
keinem der bisher unterstützten Dokumenttypen vorhanden. Betrachtet man daher die
Elemente ohne Berücksichtigung der Umgebung, so ergibt sich für viele Elementpaare ein identischer Ähnlichkeitswert, der dazu führt, dass keine Entscheidung getroffen
19
3.3 Anpassungserfordernisse
werden kann, welche einander zuzuordnen sind. Aufgrund des strukturellen Aufbaus
von Molekülen mit zyklischen Strukturen und einer nicht selten vorkommenden
Symmetrie kann jedoch auch unter Einbeziehung der Umgebung häufig keine eindeutige Entscheidung getroffen werden, wie in Abbildung 3.3 beispielhaft dargestellt
wird. Das Sauerstoffatom aus Molekül A sowie das über eine Doppelbindung damit
verbundene Kohlenstoffatom können aufgrund der Umgebung eindeutig den entsprechenden Strukturen aus Molekül B zugeordnet werden. Die beiden daran anschließenden Teilbäume sind jedoch vollkommen identisch, so dass eine eindeutige Zuordnung nicht möglich ist. Eng verbunden mit dieser Problematik besteht die Schwierigkeit, bei einem ersten Vergleichsdurchlauf mindestens eine Korrespondenz zu finden,
die dann als Fixpunkt genutzt werden kann, um Elemente in deren Umgebung nach
und nach ebenfalls einander zuordnen zu können. Abbildung 3.4 zeigt zur Verdeutlichung zwei identische Moleküle, bei deren Vergleich keine Atome oder Bindungen
eindeutig einander zugeordnet werden können, so dass die benötigten Fixpunkte vollständig fehlen. Es scheint daher erforderlich, den molekularen Graphen mit zusätzlichen Eigenschaften zu versehen, so dass bestimmte Strukturen möglichst schon in
einem ersten Durchlauf als Korrespondenzen erkannt werden können.
?
Abbildung 3.3 Korrespondenzbildung für zwei Moleküle, bei denen die Abbildung der Teilbäume nicht
eindeutig ist (grün: eindeutige Zuordnung; rot: keine eindeutige Zuordnung)
Eine mögliche Lösung für diese Problematik stammt aus dem zuvor beschriebenen
Bereich der Feature Trees, bei dem Atomgruppierungen mit bestimmten Eigenschaften markiert werden. Während bei Feature Trees zyklische Strukturen und funktio-
20
3.3 Anpassungserfordernisse
nelle Gruppen markiert werden, sind für den Vergleich mit SiDiff funktionelle Gruppen ausreichend, da Zyklen durch mehrfache Iterationen des Algorithmus bearbeitet
werden können. Werden in einem molekularen Graphen die funktionellen Gruppen
markiert, so ergeben sich bei einem Vergleich mit einem zweiten markierten Graphen, im Falle von gemeinsamen funktionellen Gruppen, weitere Fixpunkte. Zudem
können durch die Korrespondenzbildung zweier Gruppen bereits mehrere Atome und
Bindungen als Korrespondenzen vermerkt werden.
Die Markierung der funktionellen Gruppen lässt sich aufgrund der beschränkten
Anzahl und des strukturellen Aufbaus der Muster sehr effizient durchführen. Da der
zu vergleichende Datenbestand nur ein einziges Mal markiert und gespeichert werden
muss, ergibt sich für die Laufzeit des eigentlichen Vergleichsvorgangs lediglich ein
zusätzlicher Aufwand für die einmalige Markierung der Gruppen in der Anfragestruktur. Der gewählte Algorithmus sowie das Format zur Speicherung der markierten Moleküle werden ausführlich im folgenden Kapitel behandelt.
?
Abbildung 3.4 Zuordnungsproblematik bei gespiegelten Strukturen trotz funktioneller Gruppen (orange:
Carbonyl-Gruppe)
Selbst mit der Verwendung funktioneller Gruppen sind einige wenige Fälle symmetrischer Strukturen denkbar, bei denen aufgrund mehrerer Kandidaten keine Entscheidung über eine eindeutige Korrespondenzbildung getroffen werden kann (vgl.
Abbildung 3.4). Dies resultiert in einem geringeren Ähnlichkeitswert aufgrund einer
geringeren Anzahl an korrespondierenden Elementen, obwohl die verglichenen Moleküle unter Umständen sogar identisch sein können. Um auch diese Strukturen zu
unterstützen, wäre ein mengenbasierter Ansatz denkbar, der aufgrund der Ähnlichkeitswerte der nicht-korrespondierenden Restelemente und einiger einfacher Ausschlusskriterien eine Menge noch möglicher Korrespondenzen berechnen könnte.
Basierend auf den tatsächlich zugeordneten Elementen und der Menge der möglichen
Korrespondenzen ließe sich dann ein weiterer Ähnlichkeitswert berechnen, der die
maximal mögliche Ähnlichkeit darstellt. Für das Gesamtergebnis einer Anfrage könn-
21
3.3 Anpassungserfordernisse
te über einen Gewichtungsparameter definiert werden, inwieweit der rein strukturelle
SiDiff-Ähnlichkeitswert und der mengenmäßige Ähnlichkeitswert der Restelemente
die Ergebnismenge beeinflussen. Diese Überlegungen werden in Kapitel 5.4 vertieft.
Ein weiterer Anpassungsbedarf besteht in der Umstellung auf den Vergleich eines
Dokuments mit mehreren anderen. Bisher stand der Vergleich zweier Dokumente im
Mittelpunkt, bei dem detailliert Gemeinsamkeiten und Unterschiede ermittelt und
angezeigt wurden. Um ein Anfragemolekül mit einem Datenbestand zu vergleichen,
ist es dagegen erforderlich, die einzelnen Strukturvergleiche anzustoßen, die ermittelten Ähnlichkeitswerte zu speichern und dann schließlich nur für die ähnlichsten
Strukturen die detaillierte Ausgabe zu erzeugen. Für die effiziente Umsetzung unterstützt SiDiff ein sogenanntes Graph-Repository, in das mehrere Graphen zu Beginn
geladen werden können und auf dem dann die einzelnen Vergleiche ausgeführt werden. Die Menge der Graphen, die in diesem Respository abgelegt werden können, ist
hauptspeicherabhängig, so dass zur Verwendung großer Datenbestände eine partielle
Bearbeitung mit anschließender Zusammenfügung der Ergebnisse erforderlich wird.
22
4 Markierungsprozess
funktioneller Gruppen
Wie in Kapitel 2.4 bereits erläutert, handelt es sich bei funktionellen Gruppen um
wohlbekannte und häufig auftretende Atom- und Bindungsgruppierungen mit bestimmten Eigenschaften. Häufig stellen sie Charakteristika eines Molekülbereichs
dar, die dafür entscheidend sind, mit welchen Bereichen anderer Substanzen diese in
Verbindung treten können. Als Unterstützung im Vergleichsprozess können sie zudem als mögliche Fixpunkte für den Algorithmus in der Matching-Phase dienen.
Die Problematik, ein Muster in einem Graphen zu finden, lässt sich auf das Problem der Subgraph-Isomorphie zurückführen, welches zur Klasse der NPvollständigen Probleme zählt (vgl. [Var061]). Es handelt sich also um ein Entscheidungsproblem, für das kein Algorithmus bekannt ist, der in polynomieller Zeit eine
Lösung berechnen kann. In der Praxis sorgen einige problemspezifische Nebenbedingungen jedoch häufig dafür, dass viele Probleme dennoch effizient lösbar sind, beispielsweise Charakteristika der Graphstruktur oder der zu verwendenden Muster. Aus
diesem Grund ist zunächst eine Eingrenzung und Untersuchung der zu markierenden
Muster notwendig, um anschließend einen geeigneten Algorithmus wählen zu können.
4.1 Verwendete funktionelle Gruppen
Als Merkmal für die Einteilung in funktionelle Gruppen dient der Elementtyp der
jeweiligen Gruppe. Jede funktionelle Gruppe besteht aus mindestens einem Grundatom, das seinerseits Bindungen zu anderen Atomen besitzt. Je nach Elementtyp dieses Grundatoms erfolgt eine erste Klassifizierung in Gruppen mit Schwefel (S),
Phosphor (P), Stickstoff (N), Sauerstoff (O) und Kohlenstoff (C). Innerhalb dieser
Gruppen existieren mehrere Muster, die genau die Atomtypen und Bindungsgrade
spezifizieren, die mit diesem Startatom verbunden sein müssen, damit es sich um die
jeweilige funktionelle Gruppe handelt. Jede Gruppe besitzt mindestens eine Bindung
zum Rest des Moleküls, der durch ein Wildcard-Element9 (R) dargestellt wird. Abbildung 4.1 zeigt anhand zweier funktioneller Gruppen den Aufbau der Muster.
9
Symbol für beliebiges anderes Zeichen (nach [Def08])
23
4.1 Verwendete funktionelle Gruppen
Abbildung 4.1 Beispielmuster für die Verbindungsklassen der Alkene und Nitrate (Quelle der Strukturen:
[Str96])
Untersucht man die Muster auf strukturelle Überdeckung, also darauf, inwieweit
ein Muster Teil eines anderen Musters ist, so lässt sich bei manchen Mustern eine
derartige Abhängigkeit ausmachen. Gerade innerhalb der Gruppierungen um einen
bestimmten Startatomtyp existieren derartige Abhängigkeitsbeziehungen, jedoch auch
in wenigen Fällen über diese Gruppengrenzen hinaus. Untersucht man diese Abhängigkeitsbeziehungen genauer, ergibt sich eine Hierarchie von Mustern, welche die
Reihenfolge definiert, in der diese in einem molekularen Graphen zu markieren sind.
Auf der obersten Ebene liegen die Muster, die Schwefel enthalten, gefolgt von Phosphor, Stickstoff, Sauerstoff und schließlich Kohlenstoff. Die verwendeten Muster,
eingeteilt in die beschriebene Hierarchie, werden in Kapitel A des Anhangs aufgezeigt. Da die Atomtypen Schwefel bis Sauerstoff deutlich seltener auftreten als Kohlenstoff, besitzt eine markierte Gruppe aus dieser Kategorie eine deutlich höhere Aussagekraft als eine markierte Kohlenstoffverbindung in dem Sinne, dass sie eine höhere Wahrscheinlichkeit hat, bei ähnlichen Strukturen als Fixpunkt für den Vergleich zu
dienen. Ein wesentlicher Vorteil dieser Gruppeneinteilung entsprechend dem Startatomtyp des Musters liegt darin, dass für einen Algorithmus nicht alle Muster durchprobiert werden müssen, sondern nur die, bezogen auf einen Startknoten, passenden
Muster, was die Menge bereits erheblich einschränkt. Darüber hinaus sind die meisten Muster nicht sonderlich komplex mit einer Atomanzahl von vier bis acht Atomen
zusammen mit einer entsprechenden Bindungsanzahl. Eine Ausnahme zu dieser Regel stellen polyzyklische Kohlenstoffverbindungen dar, die aufgrund ihrer Ringstrukturen eine höhere Zahl von Atomen und Bindungen erreichen können. Es stellt sich
jedoch die Frage, bis zu welchem Grad eine Markierung polyzyklischer Kohlenstoffverbindungen im Hinblick auf die Erzeugung vergleichbarer Charakteristika überhaupt sinnvoll ist. [Lip08] analysiert die strukturelle Vielfalt der in der CAS registry
(Chemical Abstracts Service) erfassten organischen Substanzen. Im Rahmen ihrer
Untersuchungen stellen sie eine Übersicht der häufig enthaltenen heterozyklischen
Strukturen dar, woraus ersichtlich wird, das gerade einfache Strukturen mit wenigen
Zyklen sehr häufig vorkommen, komplexe Ringsysteme dagegen seltener. Natürlich
würde bei einem Match zweier markierter, hochkomplexer Ringsysteme direkt eine
hohe Ähnlichkeit erkannt werden. Andere Strukturen jedoch, die nur leichte Abweichungen zu diesem Ringsystem aufweisen, würden in diesem Fall keinen weiteren
24
4.2 Algorithmus zur Gruppenmarkierung
Fixpunkt enthalten und eine Überlagerung würde erschwert. Aus diesem Grund werden für die Gruppenmarkierung im Rahmen dieser Arbeit funktionelle Gruppen mit
bis zu drei zusammenhängenden Ringstrukturen verwendet, da diese nach [Lip08]
relativ häufig auftreten und somit zur Ermittlung von Fixpunkten geeignet sind. Eine
genaue Spezifizierung der polyzyklischen Verbindungen findet sich in [Hel74].
Insgesamt ergibt sich damit ein Katalog von etwa 60 Mustern funktioneller Gruppen, die im Folgenden in molekularen Graphen zu identifizieren und zu markieren
sind. Diese werden im Anhang mit Namen, Struktur und Ranking-Position für die
Reihenfolge der Musterüberprüfung aufgelistet.
4.2 Algorithmus zur Gruppenmarkierung
Aus den im vorherigen Abschnitt angestellten Überlegungen zu Art und Struktur der
Muster ergeben sich die Merkmale und Nebenbedingungen, die für eine effiziente
Gestaltung des Algorithmus von Bedeutung sind. Zu nennen sind die geringe Gesamtanzahl und die einfache Struktur der zu markierenden Muster, die hierarchische
Ordnung sowie die Eigenschaft, bei der Mustersuche mit einem Startatom eines bestimmten Typs beginnen zu können. Bevor auf einen Algorithmus eingegangen wird,
der diese Nebenbedingungen berücksichtigt, soll zunächst eine kurze Übersicht über
andere mögliche Verfahren gegeben werden.
4.2.1 Verfahren zum Pattern Matching
Es existieren mehrere Verfahren, die darauf abzielen, alle möglichen Isomorphismen
zwischen zwei Graphen G und G‘ zu berechnen. [Ull76] verwendet dazu einen einfachen Suchbaum-Algorithmus, in dem alle möglichen Relations-Matrizen so angelegt
sind, dass an den Blättern Kandidaten für gültige Isomorphismen zu finden sind. Für
jeden dieser Kandidaten muss getestet werden, ob die durch die untersuchte Matrix
erzeugte Abbildung die Isomorphie-Bedingungen erfüllt. Durch eine Verfeinerung,
die einige Schritte bei der Kandidatenermittlung einspart und zudem den Suchbaum
reduziert, lässt sich die Menge der zu testenden Matrizen einschränken. [Val97] entwickelte basierend darauf einen Algorithmus, der bei nicht-zusammenhängenden
Mustern jede Komponente des Musters auf den Zielgraph abbilden kann. Erwähnung
findet hier, dass bei einem attributierten Graph nicht nur die Struktur, sondern auch
die Attribute der Knoten und Kanten entscheidend für die Ermittlung einer Isomorphie sind. Da gerade die Attribute der Atome und Bindungen für eine Zuordnung entscheidend und die Muster alle zusammenhängende Komponenten sind, würde ein
solcher Ansatz zu viele Vergleiche erfordern.
Einen anderen Ansatz wählt [Che081], bei dem eine Mustererkennung in einem
gerichteten Graph durch eine Reihe von R-join-Operationen (reachability join) auf
einer Graph-Datenbank vorgenommen wird, die Graphen in Tabellen speichert. Dazu
25
4.2 Algorithmus zur Gruppenmarkierung
werden zunächst Cluster-basierte Indizes angelegt, die angeben, welche Tupel über
Tabellen verknüpft sind, um im Folgenden mit einem Zwei-Schritt R-joinAlgorithmus die Erreichbarkeit zu überprüfen. Eine Musterermittlung erfolgt dann
über einen Vergleich der Erreichbarkeit der Knoten sowie deren Labels. Während
dieses Verfahren sehr effizient auf großen, gerichteten Graphen arbeitet, erscheint
eine Anpassung an ungerichtete und Zyklen enthaltende Graphen nur schwer möglich. Abgesehen davon würde eine Umstellung auf eine relationale Datenbank erforderlich, was auch auf Seiten des Vergleichstools zu umfangreichen Anpassungserfordernissen führen würde.
[Var07] nutzen bei der Mustersuche einen rekursiven Ansatz, der berücksichtigt,
dass ein Muster seinerseits aus anderen Mustern bestehen kann. Aus diesem Grund
wird zum Zeitpunkt des Kompilierens zunächst für jedes Muster die Aufrufstruktur
der Elemente in einem sogenannten Call Plan definiert. Dieser wird anschließend so
umgeformt, dass er auf Basis einer globalen Suchstrategie möglichst effizient genutzt
werden kann (Flattened Pattern). In einem letzten Schritt vor der Ausführung wird
schließlich ein sogenannter Search Graph gebildet, der entsprechend möglicher Parametereingaben für jedes Flattened Pattern eine Suchstrategie definiert. Zur Laufzeit
wird zu dem Search Graph der zugehörige Search Plan aufgrund der nun bekannten
Parameter erstellt. Mithilfe einer sogenannten Magic Set Transformation wird der
Search Plan entsprechend der rekursiven Aufrufe so zerschnitten und mit Zusatzinformationen angereichert, dass in einem bottom-up Prozess der Matcher nichtrelevante Zuordnungen ignorieren kann. Der daraus resultierende Rule Goal Graph
liefert damit schließlich die Regeln, die iterativ bottom-up abgearbeitet werden können (vgl. Abbildung 4.2). Dieses Verfahren findet hauptsächlich Anwendung im Bereich der Graph-Transformationen und wurde bei [Var07] in VIATRA210 realisiert.
Interessant im Rahmen dieser Arbeit ist die Betrachtungsweise eines Musters als
Menge von Sub-Mustern, die einen rekursiven Ablauf nahelegt. Des Weiteren liefert
die Eigenschaft funktioneller Gruppen, mit einem bestimmten Startatom zu beginnen,
einen Ansatzpunkt für eine Suchstrategie ähnlich des beschriebenen Search Graph
Verfahrens.
10
VIATRA2 (Visual Automated Model Transformations) stellt zur Ergänzung existierender Modell-Transformations-Frameworks seinerseits ein Framework zur Unterstützung von Spezifikation, Design, Ausführung, Validierung und Wartung von Transformationen zur Verfügung (vgl.
[VIA08])
26
4.2 Algorithmus zur Gruppenmarkierung
Abbildung 4.2 Überblick über den rekursiven Pattern Matching Prozess nach [RGPM-VHV]
[RGPM
(Quelle:
[Var07], S.5)
[Var06] beschreiben in ihrer Arbeit grundsätzliche Datenstrukturen und einen AlA
gorithmus für eine inkrementelle Mustersuche, die ebenfalls im Bereich der GraphGraph
Transformationen
onen zum Einsatz kommt. Unabhängig von gängigen GraphTransformations-Tools (Graph
(
Transformation Tools) wird ein Verfahren erläutert,
mit dem alle kompletten und nicht-erweiterbaren Zuordnungen,, die nach einem beb
stimmten Search Plan ermittelt wurden, in einem Matching Tree gespeichert werden.
Der Matching Tree wird inkrementell mit jedem gefundenen Element-Match
Element
zwischen Muster und Modell erweitert. Besonders ist, dass mithilfe der vorgestellten
Strukturen und einem Benachrichtigungsmechanismus
Benachrichtigungsmechanismus zeitgleich auch negative MusMu
ter überprüft werden können, die einen möglichen positiven Match ungültig machen
würden. Da die Muster der funktionellen Gruppen hierarchisch geordnet
geordnet und somit in
einer bestimmten Reihenfolge zu markieren sind, ist eine
ein solche Funktionalität hier
nicht erforderlich. Der vorgestellte Ablauf
Ablauf bei der Mustersuche dagegen erscheint für
die Markierung funktioneller Gruppen in vielen Bereichen geeignet und wird daher
im Folgenden kurz beschrieben.
Während der Mustersuche werden Knoten des Musters entsprechenden Elementen
aus dem Modell so zugeordnet,
zugeor
dass die Korrespondenzbildung (Matching
Matching) konsistent
mit Kantenbeschriftungen
beschriftungen, Start- und Zielknoten ist. Ein Submuster
uster wird definiert als
Subgraph des Mustergraphen, so dass mit einem kompletten Matching eines Submusters ein Teil des gesamten Musters zugeordnet wurde. Entsprechend eines Search
Plan, der angibt, in welcher Reihenfolge Musterelemente Modellelementen zugewiezugewi
sen werden sollen, wird in jedem Schritt eine weitere Komponente (Variable)
(
des
Musters einem Element des Modells zugeordnet. Betrachtet
htet als Submuster bedeutet
dies,, dass in jedem Schritt das k-te Submuster erweitert wird, indem das k+1-te Submuster durch die neue Bindung zugeordnet wird. Für jedes Muster Pn wird ein Matching Tree angelegt, in dem Zuordnungen für Elemente des Musters organisiert werwe
den. Eine Zuordnung auf der Stufe k des Baums repräsentiert ein Matching des k-ten
Submusters. Wie diese Submuster den Stufen des Baumes zuzuordnen sind,
sind wird
durch den Search Plan definiert. Die Blätter des Baumes stellen somit maximale parpa
27
4.2 Algorithmus zur Gruppenmarkierung
tielle Zuordnungen des Musters dar. Bei einem Muster Pn mit n zuzuordnenden Elementen bedeutet ein Matching auf der maximalen Stufe n somit einen kompletten
Match des Musters. Zur Speicherung, welche Musterknoten auf welche Modellknoten
abgebildet wurden, wird ein Binding Array verwendet, in dem die gebildeten Paare
abgelegt werden. Um Zuordnungen bei Modelländerungen zu benachrichtigen, werden für Einfüge- sowie Löschoperationen Notification Arrays vorgehalten, in denen
die zu benachrichtigenden Matchings vermerkt werden. Die verwendeten Datenstrukturen zusammen mit einer Beispielbelegung werden in Abbildung 4.3 dargestellt. Der
Matching Tree mit dem Namen LHS in Abbildung 4.3(b) stellt darin den Baum für
das zu erkennende Muster dar, während NAC den Baum eines negativen Musters repräsentiert.
Abbildung 4.3 Beispiel verwendeter Datenstrukturen in [IGPM-VVS] (Quelle: [Var06], S.6)
Während der inkrementellen Ausführungsphase erfolgt die Steuerung über vier
grundlegende Operationen. Werden Elemente hinzugefügt, so erweitert die insert()Operation das jeweilige Submuster, validate() steuert rekursiv die Erweiterung mit
insert() über alle Submuster. Werden Matchings entfernt, so kann mit delete() ein
gesamter Baumzweig ab dem benannten Matching gelöscht werden. Invalidate() ist
dann für die rekursive Entfernung aller Zuordnungen von Kindelementen des aktuellen Matchings zuständig.
4.2.2 Verfahren zur Markierung funktioneller Gruppen
In Anlehnung an das zuvor beschriebene Verfahren lässt sich auch für die Muster
funktioneller Gruppen eine Art Search Plan erstellen. Abbildung 4.4 zeigt als Beispiel die Molekülstruktur (a), in der der die funktionelle Gruppe (b) zu markieren ist.
Aus der Gruppendefinition lässt sich der Search Plan (c) ableiten. Entsprechend der
Musterdefinition können die Atome in einer bestimmten Reihenfolge auf die Knoten
28
4.2 Algorithmus zur Gruppenmarkierung
des Moleküls abgebildet werden. Da die zu markierenden Gruppen ausgehend von
einem bestimmten Startknoten häufig in mehrere Richtungen zu entwickeln sind, ergibt sich eine baumartige, rekursive Aufrufstruktur. Bildet die Zuordnung des Startatoms die Wurzel des Musters, so stellen die Zweige Submuster dar, die ihrerseits als
Wurzel das jeweilige Matching der direkt benachbarten Atome besitzen. Entsprechend rekursiver Aufrufe wird jedes Submuster erweitert, indem seine Submuster
zugeordnet werden. Ein Submuster ist komplett zugeordnet, sobald alle Zweige des
Submusters zugeordnet wurden. Für Muster, die Zyklen enthalten, würde bei Erreichen eines bereits zugeordneten Knotens rekursiv zurückgesprungen, so dass sich
auch für diese eine Baumstruktur ergibt.
N
DB
EB
EB
O
EB
(a) Molekülstruktur (b) Graph funktioneller Gruppe
(c) Search Plan
Abbildung 4.4 Beispielstrukturen für den Algorithmus zur Markierung funktioneller Gruppen
(DB=Doppelbindung; EB=Einzelbindung) (Quelle Abb.(b): [Str96], S.9)
Die Zuordnungsspeicherung der Muster-Molekül-Knotenpaare könnte ähnlich der
in [Var06] vorgestellten Binding Arrays vorgenommen werden, wie in Abbildung 4.5
dargestellt. Die Abbildung zeigt die Molekülstruktur, den Matching Tree und das
Binding Array zu einem Zeitpunkt, zu dem bereits das Stickstoffatom sowie zwei der
drei Sauerstoffatome zugeordnet wurden. Zwei der drei Submuster, die unterhalb des
Muster-Startatoms angeordnet sind, wurden bereits vollständig abgearbeitet. Zum
dargestellten Zeitpunkt wurde gerade das Sauerstoffatom Oc des Musters dem Sauerstoffatom O2 des Moleküls zugeordnet, wodurch das zweite Submuster vervollständigt
wurde. Als nächstes wird das dritte Submuster auf den Molekülgraph abgebildet, indem im Molekül eine Entsprechung für Od gesucht wird.
Da keine zwei Muster zeitgleich verarbeitet werden müssen, ist ein NotificationMechanismus nicht erforderlich. Für die Bearbeitung wird ein sehr ähnlicher Funktionsumfang benötigt. Analog zu insert() ist eine Erweiterung des jeweiligen Submusters durch Hinzufügen des nächsten Matchings vorzunehmen. Kann ein unvollständiges Submuster nicht erweitert werden, so muss sein Wurzel-Matching entfernt und
29
4.2 Algorithmus zur Gruppenmarkierung
zurückgesprungen werden. Dafür wird eine Funktionalität ähnlich der delete()Operation erforderlich. Wurden zu diesem Zeitpunkt bereits andere Submuster unter
der betroffenen Wurzel zugeordnet, so müssen diese Matchings mit den entsprechenden Verwaltungsstrukturen ebenfalls zurückgesetzt werden, was der invalidate()Operation entspricht. Aufgrund der Eigenschaft molekularer Graphen, viele sehr ähnliche Elemente zu enthalten, ist die Entscheidung, welches benachbarte Atom mit
dem nächsten Musterknoten zuzuordnen ist, häufig nicht eindeutig. An diesen Stellen
ist eine probeweise Bildung aller möglichen Kombinationen bis zur Ermittlung einer,
auch für darunterliegende Submuster, gültigen Zuordnung erforderlich. Weitere
Merkmale funktioneller Gruppen sowie der Moleküle sorgen für eine starke Einschränkung der zu testenden Muster.
Matching Tree
Na
DB
Molekülstruktur
Ob
EB
EB
Oc
Od
EB
Re
Na Ob Oc Od Re
N1 O3 O2
Binding Array
Abbildung 4.5 Beispielbelegung Matching Tree und zugehöriger Binding Array bei Mustersuche
Wird die Suche nach einem Muster mit einem bestimmten Startatomtyp begonnen,
so schränkt alleine diese Bedingung die Menge der zu testenden Muster erheblich ein.
Organische Moleküle sind dadurch gekennzeichnet, dass sie hauptsächlich aus Kohlen- und Wasserstoffatomen bestehen und andere Atomtypen wie Schwefel, Phosphor, Stickstoff und Sauerstoff deutlich seltener vorkommen. Beginnt man bei der
Gruppenmarkierung bei den selteneren Atomen, was die hierarchische Strukturierung
der funktionellen Gruppen möglich macht, so lassen sich die Muster mit der höchsten
30
4.2 Algorithmus zur Gruppenmarkierung
Priorität gleich zu Beginn abarbeiten. Da diese nicht sonderlich zahlreich sind und
zudem eine geringe Komplexität besitzen, lässt sich mit wenigen Knotenvergleichen
entscheiden, ob ein Muster passt oder nicht, was ein Abarbeiten der Muster ermöglicht. Viele dieser Muster enthalten zudem auch Kohlen- und Wasserstoffatome, so
dass beim Match eines Musters zugleich die Restmenge der noch zu überprüfenden
und häufig zahlreichen Kohlenstoffatome reduziert wird.
Wurden alle funktionellen Gruppen um die selten vorkommenden Elementtypen
markiert, folgen schließlich die Kohlenstoffgruppen. Aufgrund der polyzyklischen
Strukturen mit bis zu 23 Atomen sind die Muster, die zu Beginn getestet werden müssen, deutlich komplexer. Darüber hinaus stellt sich bei Mustern, die komplett aus
Kohlenstoffatomen bestehen, die Frage, mit welchem Atom die Musterdefinition beginnen soll. Beide Problematiken lassen sich mit einer Abwandlung des Algorithmus
von Morgan adressieren (vgl. [Koh07]). Morgans Algorithmus bestimmt die kanonische11 Nummerierung der Atome eines molekularen Graphen, die als Grundlage für
eine kanonische Darstellung des Graphen genutzt werden kann. Dazu wird zunächst
jeder Knoten mit seiner Konnektivität bewertet. Anschließend wird die erweiterte
Konnektivität ermittelt, indem die Grade der benachbarten Knoten miteinbezogen
werden. Der Algorithmus iteriert über den Graphen, bis sich die Anzahl der unterschiedlichen Grad-Klassen nicht mehr verändert. Anschließend erfolgt eine eindeutige Nummerierung, indem beim Knoten mit dem höchsten Gewicht begonnen wird
und anschließend die Nachbarn in absteigender Reihenfolge mit Breitensuche markiert werden. Bei Mehrdeutigkeit werden Atomtyp und Bindungsordnung miteinbezogen. Abbildung 4.6 verdeutlicht den Prozess zur Ermittlung der kanonischen
Nummerierung anhand eines Beispiels. Verändert man den Algorithmus derart, dass
für die Grundgewichtung der Atome der Atomtyp bereits miteinbezogen wird, sowie
für die erweiterte Konnektivität die Bindungsordnung, so ergibt sich für die heterozyklischen Strukturen sowohl im Muster als auch im molekularen Graphen ein eindeutiges Startatom. Mit Morgans Algorithmus lässt sich zudem eine Rangordnung der
Kohlenstoffatome im molekularen Graphen berechnen, die sicherstellt, dass die zuerst
besuchten Atome mögliche Startatome heterozyklischer Strukturen sind, womit auch
die Rangordnung innerhalb der Kohlenstoff-Muster umgesetzt werden kann.
11
Kanonisch = eindeutig
31
4.2 Algorithmus zur Gruppenmarkierung
Abbildung 4.6 Beispiel zur Ermittlung der kanonischen Nummerierung mit dem Algorithmus von Morgan
(nach [Koh07], Foliensatz „2D Ähnlichkeit“, S.18ff)
4.2.3 Verwendeter Algorithmus
Zur Markierung der funktionellen Gruppen mit dem zuvor beschriebenen Verfahren,
sind sowohl das Molekül als auch die Muster zunächst in eine geeignete Objektstruktur zu importieren. Da der molekulare Graph im CML-Format vorliegt und die Musterdefinitionen ebenfalls in einem CML-ähnlichen Format vorgenommen werden
können, wird dazu ein SAX-Parser (Simple API for XML) verwendet. Dieser erzeugt
bei der Initialisierung einen Musterverwaltungs-Container und lädt jedes Muster als
Compound12 in dessen Verwaltungsstrukturen. Anschließend wird für das Molekül
ein zweiter Parser verwendet, der dieses in die Objektstruktur unter Verwaltung der
Klasse lädt, die im Folgenden den Markierungsprozess steuert. Abbildung 4.7 zeigt
das UML-Klassendiagramm zur Modellierung der Molekülstrukturen. Ein Molekül
besteht aus Atomen und Bindungen und kann darüber hinaus Compounds enthalten.
Jeder Compound umfasst ein oder mehrere dieser Atome und Bindungen. Ein Atom
kann mit mehreren Bindungen verknüpft sein, jede Bindung verbindet genau zwei
Atome. Die auf diesen Strukturen arbeitenden Verwaltungsklassen werden in Abbildung 4.8 dargestellt. Der MoleculeAnnotator lädt zu Beginn das zu markierende Molekül und initialisiert den PatternManager, der seinerseits die Musterdefinitionen in
Form von Compound-Elementen unter seine Verwaltung stellt.
12
Der Begriff Compound wird im Folgenden stellvertretend für eine Gruppierung von Atomen und
Bindungen verwendet
32
4.2 Algorithmus zur Gruppenmarkierung
Abbildung 4.7 Klassendiagramm der Molekülstruktur
Abbildung 4.8 Klassendiagramm der Verwaltungsstrukturen
In einem ersten Schritt wird der molekulare Graph mit der angepassten Variante
von Morgans Algorithmus markiert, wodurch die Reihenfolge, in der die Atome als
Startatome zu besuchen sind, festgelegt wird. Die Atomtypen werden in der Reihenfolge Schwefel, Phosphor, Stickstoff, Sauerstoff und schließlich Kohlenstoff besucht.
Innerhalb jeder dieser Startatom-Gruppen ermittelt sich die Reihenfolge aufgrund der
33
4.2 Algorithmus zur Gruppenmarkierung
berechneten Werte von Morgan. Initial wird jedes Atom entsprechend seines Atomtyps mit einem Zahlenwert belegt: Wasserstoff mit eins (1), Kohlenstoff mit zwei (2)
und alle anderen Typen mit drei (3). Anschließend wird diese Gewichtung an die
Nachbarn weitergegeben und mit dem Grad der Bindung multipliziert, mit der die
Atome verbunden sind. Gerade bei polyzyklischen Strukturen, die vollständig aus
Kohlenstoff bestehen, sorgt dieser Algorithmus dafür, dass die zentral gelegenen
Atome aufgrund von vier Bindungen zu ebenfalls Kohlenstoffatomen den höchsten
Wert erhalten und somit bei der folgenden Mustererkennung zuerst besucht werden.
Wurde die Reihenfolge der Startatome ermittelt, werden diese anschließend der
Reihe nach besucht. Zu jedem Atom werden entsprechend des Atomtyps kompatible
Muster getestet, wobei auch diese entsprechend ihrer hierarchischen Anordnung in
einer festgelegten Reihenfolge abgearbeitet werden. Diese Reihenfolge findet sich
zusammen mit der detaillierten Definition der verwendeten Muster im Anhang. Der
Mappingvorgang, bei dem versucht wird, ein Muster auf die Strukturen im molekularen Graphen abzubilden, erfolgt rekursiv durch den Vergleich von Atomknoten. Zur
Beschreibung des Algorithmus wird im Folgenden zwischen dem molekularen Graphen auf der linken Seite und dem Muster auf der rechten Seite unterschieden.
Beim Vergleich zweier Atome wird zunächst der Elementtyp verglichen. Stimmt
dieser überein oder handelt es sich im Muster um das Wildcard-Element „R“, das als
Platzhalter für einen beliebigen Typ steht, so kommen die beiden Atome als Kandidaten in Frage und werden einander zugeordnet. Für den weiteren Vergleich wird die
direkte Nachbarschaft der Atome herangezogen, wobei als Ausgangspunkt immer das
Muster auf der rechten Seite genutzt wird, um anschließend eine Entsprechung des
jeweiligen Elements auf der linken Seite zu finden. Ausgehend vom Muster-Atom
werden zunächst die Bindungskanten ermittelt, die zu angrenzenden Atomen führen.
Für jede noch nicht besuchte Kante werden anschließend Kandidaten auf der linken
Seite gesucht, die denselben Bindungsgrad aufweisen. Zusätzlich wird durch Überprüfung der Elementtypen der verbundenen Atome die Kandidatenmenge weiter eingeschränkt. Wird dabei trotzdem mehr als ein möglicher Kandidat gefunden, so sind
alle möglichen Zuordnungen von Bindungen so lange zu testen, bis eine für das Muster passende gefunden wurde oder keine Kombinationen für das jeweilige Muster
mehr möglich sind. Bei jeder Bindungszuordnung werden die entsprechenden Bindungen als besucht markiert und es erfolgt ein rekursiver Aufruf mit den Zielatomen
an deren Enden, die dann auf die gleiche Art verglichen werden. Stimmen zwei Atome in ihrem Elementtyp überein und können davon ausgehend im Muster keine weiteren Kanten ermittelt werden, die noch nicht besucht wurden, so wird durch eine
entsprechende Rückgabe signalisiert, dass der jeweilige Teilbaum komplett zugeordnet wurde. Existieren dagegen noch nicht-besuchte Kanten an dem Muster-Atom, zu
denen keine entsprechenden Kanten am Molekül-Atom ermittelt werden können, so
wird auch dies mit einer entsprechenden Rückgabe kenntlich gemacht. Dadurch kann
im rekursiv vorgelagerten Atomvergleich eine andere Bindungszuordnung getestet
werden. Diese Abbruchbedingungen stellen den Rekursionsanker dar. Eine Darstel-
34
4.2 Algorithmus zur Gruppenmarkierung
lung des beschriebenen Algorithmus in Pseudocode findet sich im Teil A des Anhangs.
Na
Cb
Ce
Rd
Oc
Rh
Of
Rg
Imide-Muster
Zuordnungs-Tabelle
Na
N1
Cb
C2
Oc
O3
Rd
C4
Ce
C5
Of
Rg
Rh
N1
C2
O3
Molekülstruktur
C4
H9
C8
C5
O6
H10
...
C7
H11
...
Abbildung 4.9 Beispielsituation bei Markierung eines Imide-Musters
Durch den gewählten rekursiven Vergleichsablauf der Knoten, mit dem versucht
wird, ein Muster über einen bestimmten Pfad abzubilden, ergibt sich eine baumartige
Aufrufstruktur. Die Abarbeitung dieses Muster-Baumes erfolgt mit Tiefensuche, indem von links nach rechts alle Teilbäume nacheinander komplett zugeordnet werden.
Konnte der letzte Teilbaum vollständig abgebildet werden, ist das Muster komplett
und es kann im Original-Molekül markiert werden. Abbildung 4.9 verdeutlicht diesen
Matching-Prozess anhand baumartiger Strukturen, die sich durch die Abbildung der
Musterknoten auf die Molekülelemente ergeben. Im oberen Bereich wird die Verbindungsklasse der Imide mit dem zugehörigen Matching Tree dargestellt, im unteren
Bereich die Molekülstruktur zusammen mit der baumartigen Aufrufstruktur, die sich
bei der Atomzuordnung ergibt. Zum abgebildeten Zeitpunkt wird im Muster ausgehend vom zuvor zugeordneten Knoten Ce der nächste nicht-besuchte Knoten Of ausgewählt. Anhand des Atomtyps und des Bindungsgrades zwischen Ce und Of wird
anschließend versucht, eine entsprechende Struktur im Molekülgraph zu ermitteln,
35
4.3 Dateiformat zur Speicherung
analog dort ausgehend von dem zuvor zugeordneten Atom C5. Da Elementtyp und
Bindungsgrad mit O6 übereinstimmen und O6 noch nicht besucht wurde, wird dieser
als nächstes Of zugeordnet. Zur Erhöhung der Übersichtlichkeit wurde in der Abbildung auf die Beschriftung der Pfeile mit den Bindungsgraden innerhalb der Baumstrukturen verzichtet. Diese Informationen sind jedoch in den links aufgeführten
Strukturen enthalten und können daraus abgeleitet werden.
Während der Mustersuche werden sowohl besuchte Atome als auch Bindungen
markiert, so dass diese anschließend als Unterelemente der funktionellen Gruppe eingetragen werden können. Eine genaue Erfassung der Bindungen ist erforderlich, da
ansonsten unter Umständen nicht ersichtlich wird, welche Verbindung von der funktionellen Gruppe zum Rest des Moleküls führt. Atome, die als Bestandteil eines Musters markiert wurden, müssen für die Suche weiterer Muster nicht als Startatome betrachtet werden, da jedes Atom höchstens in einer funktionellen Gruppe vorkommen
kann. Somit reduziert ein gefundenes Muster häufig die Menge der noch zu untersuchenden Restatome.
Wurden alle Startatome mit dem zuvor beschriebenen Algorithmus abgearbeitet,
ist die Markierung der funktionellen Gruppen komplett. In der Objektstruktur wurden
an den entsprechenden Stellen Compound-Elemente erzeugt und die zugehörigen
Atome und Bindungen eingetragen. Abschließend erfolgt eine Speicherung des markierten Moleküls in einem CML-ähnlichen Format, das im Folgenden kurz beschrieben wird. Die durchgeführten Testspezifikationen und Testergebnisse der Gruppenmarkierung werden in Kapitel 6 aufgeführt.
4.3 Dateiformat zur Speicherung
Da die um Gruppeninformationen angereicherten molekularen Graphen im Folgenden
vom SiDiff-Algorithmus zu vergleichen sind, erscheint auch zu deren Speicherung
ein auf XML basierendes Dateiformat sinnvoll. Durch eine Ergänzung der CML um
Tags für die markierten funktionellen Gruppen kann deren Standard nahezu unverändert übernommen werden.
Analog zu den eingesetzten atomArray- und bondArray-Containern wird ein neues
Element compoundArray erzeugt, das als Container für die markierten Gruppen dient.
Innerhalb dieses Containers wird für jede markierte Gruppe ein compound-Element
mit der ID und dem Namen der Gruppe angelegt. Jedes dieser compound-Elemente
beinhaltet dann, wie in der ursprünglichen CML innerhalb des molecule-Tags, einen
atomArray- sowie einen bondArray-Container für die in der Gruppe enthaltenen
Atome und Bindungen. Elemente, die zu keiner der markierten Gruppen gehören,
bleiben unverändert in den Top-Level Containern. Somit existiert eine eindeutige
Zuordnung von Atomen und Bindungen zu den jeweiligen Gruppen, ohne die ursprünglichen Elemente mit zusätzlichen Attributen versehen zu müssen. Die zugehörige DTD (Document Typ Definition) wird in Abbildung 4.10 darstellt.
36
4.3 Dateiformat zur Speicherung
<!DOCTYPE molecule [
<!ELEMENT molecule (compoundArray,atomArray, bondArray)>
<!ATTLIST molecule
id
ID
#REQUIRED>
<!ELEMENT compoundArray (compound)*>
<!ELEMENT compound (atomArray,bondArray)>
<!ATTLIST compound
id
ID
#REQUIRED
name
CDATA
#REQUIRED>
<!ELEMENT atomArray (atom+)>
<!ELEMENT atom EMPTY>
<!ATTLIST atom
id
ID
#REQUIRED
elementType
CDATA
#REQUIRED
x3
CDATA
#IMPLIED
y3
CDATA
#IMPLIED
z3
CDATA
#IMPLIED>
<!ELEMENT bondArray (bond*)>
<!ELEMENT bond EMPTY>
<!ATTLIST bond
atomRefs2
IDREFS
#REQUIRED
order
CDATA
#REQUIRED>
]>
Abbildung 4.10 DTD zur Definition der markierten Moleküle
Die Speicherung der Musterdefinitionen erfolgt nach dem gleichen Prinzip. Innerhalb eines functionalGroups-Containers wird für jede Musterdefinition ein functionalGroup-Element mit ID und Name der Gruppe angelegt. Darunter werden, wie
beim CML-Standard für Moleküle, atomArray und bondArray-Container mit den
enthaltenen Atomen und Bindungen erzeugt. Die DTD zur Definition gültiger Muster
ist in Abbildung 4.11 dargestellt. Entscheidend für das zuvor beschriebene System
aus Muster-Hierarchieebenen, Startatomen und Ablauf bei der Muster-Abbildung auf
den Molekülgraphen ist jedoch die Reihenfolge, in der die Muster in dieser Datei
aufgeführt werden.
37
4.3 Dateiformat zur Speicherung
<!DOCTYPE functionalGroups [
<!ELEMENT functionalGroups (functionalGroup+)>
<!ELEMENT functionalGroup (atomArray,bondArray)>
<!ATTLIST functionalGroup
id
ID
#REQUIRED
name
CDATA
#REQUIRED>
<!ELEMENT atomArray (atom+)>
<!ELEMENT atom EMPTY>
<!ATTLIST atom
id
ID
#REQUIRED
elementType CDATA #REQUIRED
x3
CDATA
#IMPLIED
y3
CDATA
#IMPLIED
z3
CDATA
#IMPLIED>
<!ELEMENT bondArray (bond*)>
<!ELEMENT bond EMPTY>
<!ATTLIST bond
atomRefs2
IDREFS
#REQUIRED
order
CDATA
#REQUIRED>
]>
Abbildung 4.11 DTD zur Definition der Muster funktioneller Gruppen
Die Definition der Muster erfolgt von oben nach unten mit absteigender Priorität,
so dass diejenigen Muster, die weiter oben stehen, vor Mustern, die weiter unten aufgeführt sind, getestet werden. Innerhalb eines Musters gibt das erste Atom des atomArray-Containers das Startatom an, unter dem das Muster einsortiert wird, wodurch
es auf jeden Fall bei der Mustersuche als Erstes besucht wird. Die Reihenfolge, in der
die übrigen Atome besucht werden, hängt von der Reihenfolge der definierten Bindungen ab. Da diese beim Parsen der Muster der Reihe nach verarbeitet, erzeugt und
mit den Atomen verlinkt werden, ergibt sich auch für die Reihenfolge der besuchten
Bindungen eine absteigende Priorität. Diese Eigenschaften können bei der Musterdefinition ausgenutzt werden, um bei ähnlichen Mustern möglichst frühzeitig das unterscheidende Merkmal zu erreichen und somit unnötige Knotenvergleiche zu vermeiden.
38
5 Integration in die
Differenzberechnung
Nachdem Rahmenbedingungen und Ablauf der Markierung funktioneller Gruppen
erörtert wurden, lassen sich im Folgenden die Anforderungen für die Integration der
beteiligten Komponenten spezifizieren. Für die mit Gruppeninformationen angereicherten molekularen Graphen ist zunächst das Datenmodell des internen SiDiffGraphen zu entwickeln, auf dem der eigentliche Molekül-Vergleich durchgeführt
wird. Für die darin definierten Knotentypen sind anschließend die erforderlichen
Konfigurationsskripte zu erstellen, mit deren Hilfe sich Kandidatenmengen, Vergleichskriterien und –schwellenwerte sowie der generelle Ablauf beim Matching
steuern lassen. Wurden alle für SiDiff benötigten Konfigurationen vorgenommen,
muss die Komponente zur Gruppenmarkierung in den Gesamtablauf integriert werden, damit für den Vergleichsvorgang eines Moleküls mit dem Datenbestand die
Markierung der funktionellen Gruppen im Anfragemolekül automatisch erfolgen
kann. Im Hinblick auf die Schwierigkeit, manche Elemente aufgrund mehrerer Kandidaten mit identischem Ähnlichkeitswert nicht eindeutig zuordnen zu können, wird
abschließend ein ergänzendes Verfahren vorgestellt, das basierend auf den mit SiDiff
ermittelten Differenzen einen angepassten Ähnlichkeitswert berechnet. Die mit den
hier vorgestellten Konfigurationen durchgeführten Tests werden in Kapitel 6 beschrieben und ausgewertet.
5.1 Datenmodell molekularer Graphen
Für den Vergleich zweier Moleküle sind diese zunächst auf das interne SiDiffDatenmodell abzubilden. Dazu müssen die Elementtypen, die in molekularen Graphen vorkommen, in geeigneter Form auf die intern vorhandenen Elementtypen projiziert werden. Aus diesem Grund werden zunächst die wesentlichen Merkmale des
markierten molekularen Graphen noch einmal verdeutlicht, um anschließend die Abbildung zu erläutern.
Unter Berücksichtigung der neuen Elemente, die durch die Markierung funktioneller Gruppen hinzugefügt wurden, lassen sich in Molekülen die Knotentypen Molecule, Compound, Atom und Bond identifizieren. Auf der obersten Ebene steht das Molekül, das neben einer eindeutigen ID je nach Datenbestand auch einen Namen haben
kann. Innerhalb des Moleküls können Atome und Bindungen, wie zuvor beschrieben,
in einer funktionellen Gruppe auftreten. Das Compound-Element, die funktionelle
Gruppe, verfügt ebenfalls über eine ID sowie den Namen der Gruppe. Gehören Atome und Bindungen zu einer dieser Gruppen, so sind sie unterhalb des jeweiligen
39
5.1 Datenmodell molekularer Graphen
Compound-Elements angeordnet, andernfalls direkt unterhalb des Moleküls. Eine
Bindung ist jeweils mit den beiden durch sie verknüpften Atomen verbunden.
Für den internen SiDiff-Graphen stehen nach [Gad07] die Elementtypen Document, Graph, Node, Attribute und Edge zur Verfügung. Das Top-Level Element Document stellt die Wurzel dar, in der der XML-Namespace und der Dokumenttyp definiert werden und in die ein Graph-Element eingebettet wird. Der Graph verweist auf
den für den Vergleichsvorgang entscheidenden Node-Startknoten. Die eigentliche
Darstellung der molekularen Graphen erfolgt somit durch Knoten (Node), Attribute
(Attribute) und Kanten (Edge). Knoten verfügen neben einem eindeutigen Identifizierer immer über einen Typ, mit dessen Hilfe im Folgenden erkannt werden kann, wie
der Knoten bei der Abarbeitung zu behandeln ist, da Regeln in den Konfigurationsskripten elementtypbezogen sind. Darüber hinaus kann ein Knoten beliebig viele Attribute haben, die ebenfalls getypt sind (type) und einen Wert (value) haben, der im
Vergleichsvorgang für die Ähnlichkeitsberechnung ausgewertet wird. Die Verknüpfung der Knoten erfolgt durch gerichtete Kanten, die neben Start- (src) und Zielknoten-IDs (tar) ebenfalls über einen Typ verfügen. Abbildung 5.1 zeigt das interne SiDiff-Datenmodell mit den beschriebenen Strukturen, auf das im Folgenden die Molekülstrukturen abzubilden sind.
Abbildung 5.1 Internes Datenmodell für die Differenzberechnung (Quelle: [Tre07], S.41)
Für eine Abbildung des molekularen Graphen werden zunächst Document und
Graph erzeugt, in denen der Dokumenttyp „MoleculeModel“ und, sofern vorhanden,
auch der Name des Moleküls eingetragen werden. Die eigentliche Molekülwurzel,
also der erste Knoten, auf den Graph verweist, erhält als Typ immer „model“, was
SiDiff den Startpunkt der zu vergleichenden Struktur signalisiert. Davon abgesehen
wird der Knoten jedoch behandelt wie jeder andere auch und ein Vergleich dieses
Elements kann somit auch mit den Konfigurationsdateien gesteuert werden. Unterhalb dieses Wurzelknotens wird für jede Gruppe ein Knoten mit dem Typ „com-
40
5.1 Datenmodell molekularer Graphen
pound“ und dem Namen der Gruppe angelegt, welche über die Kante „compounds“
von der Wurzel aus erreichbar ist. Wurden diese Strukturen aufgebaut, werden als
nächstes die Atome und Bindungen erzeugt. Für Atome wird ein Knoten mit deren ID
angelegt und es wird ein Name kreiert, der neben der ID auch den Elementtyp enthält.
Dieser Name ist für den folgenden Vergleichsvorgang irrelevant, erleichtert jedoch
die Lesbarkeit der Ausgabe und die Analyse der gebildeten Korrespondenzen erheblich. Name sowie Elementtyp (elementType) werden als Attribute des Knotens hinzugefügt und er wird über die Kante „atoms“ von der entsprechenden Gruppe hin zum
Knoten in den Graph eingeordnet. Eine Bindung zwischen zwei Atomen wird ebenfalls durch einen Knoten repräsentiert, der als Attribute neben der Bindungsordnung
(order) einen Namen erhält, aus dem die durch ihn verbundenen Atome zu Analysezwecken leserlich hervorgehen. Die Zuordnung zu den verbundenen Atomen erfolgt
über zwei „target“-Kanten, die von der Bindung zu den entsprechenden Atomen verlaufen. Wie Atome werden auch Bindungen unter der jeweiligen Gruppe eingeordnet,
zu der sie gehören, erreichbar über eine „bonds“-Kante. Wurden alle funktionellen
Gruppen mit deren zugehörigen Elementen erzeugt, folgen schließlich die übrigen
Atome und Bindungen. Auch wenn diese Elemente nicht direkt einer funktionellen
Gruppe zugeordnet werden können, ergeben sich für ihre Behandlung dieselben
Rahmenbedingungen, wodurch sie ebenfalls unterhalb eines Standard-Compound
angeordnet werden können. Dieser erhält eine eindeutige ID „def-comp“ (DefaultCompound) und einen Namen, der die ID des Moleküls beinhaltet. Abgesehen davon
werden Atome und Bindungen mit den zugehörigen Knoten-Kanten-Strukturen jedoch genau wie oben beschrieben angelegt und mit zugehörigen „atoms“- und
„bonds“-Kanten unterhalb des Containers angeordnet. Dabei kann eine Bindung auch
zwischen Atomen bestehen, die in unterschiedlichen Compounds platziert sind. Die
Struktur des internen SiDiff-Graphen zur Darstellung der Moleküle wird in Abbildung 5.2 dargestellt.
Die Umwandlung in die Strukturen des internen SiDiff-Graphen erfolgt mit Hilfe
eines XSL-Stylesheet, mit dem die Elemente des molekularen Graphen in der oben
beschriebenen Reihenfolge abgearbeitet werden. Wurde der interne Graph erzeugt, so
startet der Vergleichsvorgang, gesteuert durch die im Folgenden beschriebenen Konfigurationsskripte.
41
5.2 Anpassung der Konfigurationsskripte
Abbildung 5.2 Molekül-Datenmodell im internen SiDiff-Graphen
5.2 Anpassung der Konfigurationsskripte
Für den Vergleich molekularer Graphen wurden drei Konfigurationsdateien angepasst. Die CandidatesConfig steuert als erste Instanz die Grundvoraussetzungen, die
erfüllt sein müssen, damit Elemente überhaupt für einen Vergleich in Betracht gezogen werden. Über die CompareConfig werden die Vergleichskriterien der Elemente
spezifiziert sowie deren Gewichtungen bei der Ermittlung des Ähnlichkeitswerts bestimmt. Mit der MatchingConfig wird die Reihenfolge, in der die Elementtypen des
Graphen verglichen werden sollen, definiert. Die vorgenommenen Anpassungen werden im Folgenden detailliert beschrieben.
5.2.1 CandidatesConfig
Um die Menge der zu vergleichenden Elemente einzuschränken, besteht die Möglichkeit, in einem ersten Schritt Mindestbedingungen anzugeben, die erfüllt sein müssen, damit für zwei Elemente überhaupt ein Ähnlichkeitswert ermittelt wird. Diese
Constraints werden für den entsprechenden Knotentyp definiert und erhalten einen
Ausdruck (Expression), der erfüllt sein muss, damit zwei Elemente des Typs überhaupt als Kandidaten in Frage kommen. Dieser Ausdruck spezifiziert neben einer
Vergleichsfunktion auch den Namen des zu vergleichenden Knotenattributs. Zusammen mit der Eigenschaft, dass die zu vergleichenden Elemente den gleichen Typ haben müssen, lässt sich damit die Menge der möglichen Kandidaten erheblich reduzieren.
42
5.2 Anpassung der Konfigurationsskripte
Bei molekularen Graphen kommen relativ wenige unterschiedliche Knotentypen
vor, Instanzen dieser Typen sind häufig jedoch recht zahlreich. Bezogen auf den Knotentyp ergibt sich somit eine große Menge möglicher Kandidaten, besonders für
Atome und Bindungen. Durch Ausnutzung der Attribute dieser Knotentypen lässt
sich diese Menge allerdings erheblich reduzieren. Für Atome macht es keinen Sinn,
diese mit anderen Atomen zu vergleichen, wenn schon der Elementtyp verschieden
ist. Daher kann mit einem Ausdruck angegeben werden, dass das Attribut elementType denselben Wert haben muss. Bindungen verfügen über eine nummerische Bindungsordnung order, die ebenfalls mithilfe eines Ausdrucks auf Gleichheit überprüft
werden kann. Somit werden für die folgenden Vergleiche nur Atome miteinander
verglichen, die denselben Elementtyp aufweisen, sowie Bindungen, die dieselbe Ordnung haben.
Diese sehr restriktive Einschränkung der Kandidatenmenge führt dazu, dass auch
Elemente, die innerhalb des Graphen aufgrund ihrer Positionierung eine hohe Ähnlichkeit aufweisen, nicht als Korrespondenzen markiert werden, sofern die oben genannten Kriterien nicht übereinstimmen. Im Hinblick auf die enorme chemische Bedeutung unterschiedlicher Elementtypen und Bindungsordnungen sowie das Ziel des
Vergleichs, möglichst ähnliche Strukturen zu einem Anfragemolekül zu ermitteln,
erscheint diese Einschränkung jedoch angemessen. Abbildung 5.3 zeigt die Regeln
zur Einschränkung der Kandidatenmenge anhand eines Auszugs aus der Konfigurationsdatei.
<Constraints graphType="MoleculeModel">
<Constraint nodeTypeName="atom">
<Expression name="EqualAttributeValue"
param="elementType"/>
</Constraint>
<Constraint nodeTypeName="bond">
<Expression name="EqualAttributeValue"
param="order"/>
</Constraint>
</Constraints>
Abbildung 5.3 Auszug der CandidatesConfig zum Vergleich molekularer Graphen
5.2.2 CompareConfig
In der CompareConfig werden für jeden im internen SiDiff-Graphen vorkommenden
Knotentypen (NodeType) die zu verwendenden Vergleichskriterien sowie deren Gewichtungen bei der Ermittlung des Ähnlichkeitswerts spezifiziert. Es existieren mehrere Vergleichsfunktionen, die neben den Attributen des Knotens sowie seinen einund ausgehenden Kanten auch Mengen anderer Knoten vergleichen können, die über
einen Kantenzug erreichbar sind. Somit kann für die Ermittlung des Ähnlichkeitswerts zweier Knoten nicht nur der direkte Vergleich der Knotenattribute verwendet
43
5.2 Anpassung der Konfigurationsskripte
werden, sondern auch die Umgebung des Knotens. Die Errechnung des Ähnlichkeitswerts gestaltet sich derart, dass auf den zu vergleichenden Knoten zunächst die
Vergleichsfunktionen der Reihe nach abgearbeitet werden, wodurch jede der Funktionen einen Ähnlichkeitswert liefert. Wie stark der ermittelte Ähnlichkeitswert in die
Gesamtähnlichkeit des Knotenvergleichs einfließt, bestimmt der Gewichtungsparameter der Funktion (weight). Wurden alle anteiligen Funktions-Ähnlichkeitswerte auf
dem Knoten aufsummiert und normalisiert, so wird anschließend überprüft, ob der
ermittelte Ähnlichkeitswert über dem Schwellwert für Elemente dieses Knotentyps
liegt (threshold). Ist das der Fall, so kommen die beiden untersuchten Knoten als Korrespondenz in Frage und werden einander zugeordnet, sofern nicht für einen der beiden Knoten ein höherer Ähnlichkeitswert mit einem anderen Knoten ermittelt wird.
Entsprechend der Bottom-up-Funktionsweise beim Vergleichsablauf werden die Kriterien zur Ermittlung der Knotenähnlichkeitswerte im Folgenden von den Blattknoten
hin zur Wurzel erklärt.
Für die Korrespondenzbildung bei Bindungsknoten ist neben dem Bindungsgrad
entscheidend, mit welchen Atomknoten diese verbunden sind. Durch die Einschränkung der Kandidaten mithilfe der CandidatesConfig ist bereits sichergestellt, dass
lediglich Bindungen miteinander verglichen werden, die über dieselbe Ordnung verfügen. Für die Ermittlung des Ähnlichkeitswerts ist der Bindungsgrad jedoch ebenfalls sinnvoll, da jede Bindung damit bereits zu Beginn eine gewisse Grundähnlichkeit zu anderen Bindungen besitzt, die bei der Betrachtung der Umgebung propagiert
werden kann. Für den Vergleich der verbundenen Atome kann die Funktion RemoteNodesMatchedOrSimilarIO() verwendet werden, die als Parameter den Kantenzug
erhält, der zu den zu vergleichenden Knoten führt. Die beiden Kriterien gehen mit
einem Anteil von jeweils 0,5 in die Ermittlung des Ähnlichkeitswerts ein. Setzt man
den Schwellwert für die Korrespondenzbildung bei Bindungen auf über 0,75, so müssen für einen Match der Bindung sowohl die Bindungsgrade vollständig übereinstimmen, als auch beide durch sie verbundenen Atome bereits sehr hohe Ähnlichkeitswerte aufweisen. Der Grundgedanke ist, sich ausgehend von anfangs wenigen
zugeordneten Atomen Schritt für Schritt strukturell durch den Graphen zu arbeiten.
Daher erscheint dieser Schwellwert zunächst zu restriktiv. Anhand eines Beispiels
lässt sich jedoch erläutern, warum eine Festlegung auf über 0,75 geeignet ist, um die
Wahrscheinlichkeit von ungünstigen Korrespondenzbildungen zu reduzieren. Denkbar wäre eine Situation, in der ein Atom aufgrund eines einzigartigen Elementtyps
direkt zugeordnet werden kann. Für alle Bindungen, außer der Bindung, über die dieses Atom mit einem anderen verbunden ist, würden die ermittelten Ähnlichkeitswerte
aufgrund der nicht-zugeordneten Zielknoten nicht über dem Schwellwert liegen. Diese eine Bindung erreicht beim Vergleich mit einer Bindung des anderen Graphen aufgrund des zugeordneten Atoms auf der einen Seite sowie eines Atoms auf der anderen
Seite, dessen Elementtyp ebenfalls für eine gewisse Grundähnlichkeit sorgt, einen
Ähnlichkeitswert oberhalb des Schwellwerts, wodurch diese Bindungen als Korrespondenz markiert werden können. Für das zweite Atom, das über diese Bindung mit
44
5.2 Anpassung der Konfigurationsskripte
dem ursprünglich zugeordneten Element verbunden ist, ergibt sich jetzt die Situation,
dass es mit einer zugeordneten Kante in Verbindung steht. Wie diese Eigenschaft zur
iterativen Korrespondenzbildung des gesamten Graphen genutzt werden kann, wird
im Anschluss an die Erläuterung der Atom-Konfiguration deutlich.
Atomknoten müssen neben einem identischen Elementtyp auch mit den gleichen
anderen Atomen verbunden sein, um als Korrespondenz markiert zu werden. Häufig
tritt der Fall ein, dass aufgrund des Elementtyps allein keine eindeutige Entscheidung
getroffen werden kann, welchem Atom aus dem anderen Graphen ein Knoten zuzuordnen ist, weshalb die Umgebung des Atoms eine entscheidende Rolle spielt.
Atome können über eine unterschiedliche Anzahl an Bindungen verfügen, was die
Bestimmung einer idealen Gewichtung bezüglich der Überschreitung des Schwellwerts schwierig macht. Wäre die Umgebung das einzige Kriterium zur Ermittlung des
Ähnlichkeitswerts, so würde beispielsweise ein Schwellwert von 0.4 dafür sorgen,
dass ein Sauerstoffatom mit maximal zwei Bindungen schon zugeordnet werden
könnte, sobald auch nur eine Bindung zugeordnet wurde. Für Kohlenstoff mit maximal vier Bindungen wären dagegen schon zwei zugeordnete Bindungen erforderlich,
was mitunter nicht erreicht werden kann. Aus diesem Grund wird eine Mischung aus
Elementtyp- und Verbindungskantenübereinstimmung gewählt, durch die gewährleistet wird, dass ein Atom schon bei einer zugeordneten Verbindung, sofern nicht ein
anderes Atom einen höheren Ähnlichkeitswert erzielt, als Korrespondenz markiert
werden kann. In Anlehnung an das im Rahmen der Bindungsbeschreibung begonnene
Beispiel lässt sich die weitere Korrespondenzbildung nun fortführen. Für das mit der
zugeordneten Bindung verbundene Atom des ersten Graphen findet sich höchstens
ein Kandidat in dem anderen Graph, der den gleichen Elementtyp besitzt und ebenfalls mit einer bereits zugeordneten Bindung verbunden ist, wodurch der Schwellwert
für die Korrespondenzbildung überschritten wird und die Atome somit als Korrespondenz markiert werden können. Für die an diese Atome angrenzenden Bindungen
ergibt sich nun erneut die ursprüngliche Situation, mit einem zugeordneten Atom
verbunden zu sein, wodurch der Schwellwert auch für sie überschritten wird. Es können unter Umständen im nächsten Durchgang erneut Kanten und Atome einander
zugeordnet werden, die an bereits korrespondierende Elemente grenzen, wodurch
iterativ Schritt für Schritt ausgehend von dem ursprünglichen Match des ersten Atoms
der gesamte Graph zugeordnet werden kann.
Die den funktionellen Gruppen entsprechenden compound-Knoten liegen derart
auf der vorgelagerten Ebene des SiDiff-Graphen, dass die zugehörigen Atome und
Bindungen unter ihnen angeordnet sind. Einer der Hauptgründe für die Einführung
funktioneller Gruppen war die Überlegung, durch einen Match zweier Gruppen eine
Menge von Atomen und Bindungen automatisch zuordnen zu können, wodurch sich
ein Fixpunkt im Graph für den weiteren Vergleich ergeben würde. Jede funktionelle
Gruppe verfügt über einen eindeutigen Namen, so dass für den Vergleich dieser als
einziges Kriterium bereits ausreichend sein muss, damit zwei Gruppen als Korrespondenz markiert werden können. Der Namensvergleich erfolgt mithilfe der Funktion
45
5.2 Anpassung der Konfigurationsskripte
StringAttributeUsingEqualsCS(). In Verbindung mit einer Option, die im Rahmen der
nachfolgend beschriebenen MatchingConfig dafür sorgt, dass bei einem Match zweier
Knoten deren Kindelemente exklusiv erneut verglichen werden, lässt sich über diese
Konfiguration durch eine Zuordnung der compound-Knoten die Menge der darunterliegenden Atome und Bindungen ebenfalls gegenseitig zuordnen. Beispielhaft für den
Einsatz der Gruppen-Zuordnung ist eine Situation denkbar, bei der in einem ersten
Vergleichsdurchlauf keine Atome und Bindungen eindeutig als Korrespondenz markiert werden können. In jedem der beiden verglichenen Moleküle existiert jedoch eine
funktionelle Gruppe mit demselben Namen, so dass diese einander zugeordnet werden können. Durch die Zuordnung der Gruppen-Knoten werden anschließend die
Atome und Bindungen innerhalb dieser Gruppen erneut miteinander verglichen, wobei jedoch lediglich die Elemente für den Vergleich in Frage kommen, die in dem
jeweils anderen Graphen ebenfalls unterhalb der zugeordneten Gruppe angeordnet
sind. Durch diese Reduktion der Kandidatenmenge können die Atome und Bindungen
der Gruppe zugeordnet und ausgehend von diesen Elementen die Graphen schrittweise iterativ weiter verglichen werden.
Selbst wenn die Gruppen mit identischem Namen einander zugeordnet werden
können und der Name ausreichend für eine Korrespondenzbildung ist, kann es dennoch vorkommen, dass keine eindeutige Zuordnung möglich ist. Dies ist beispielsweise dann der Fall, wenn eine Gruppe mehrfach in den zu vergleichenden Graphen
auftritt und somit, analog zu der Problematik bei der Atomzuordnung, denselben
Ähnlichkeitswert zu mehreren anderen Gruppen aufweist. Aus diesem Grund werden
neben dem Gruppennamen noch weitere Kriterien zur Ermittlung des Ähnlichkeitswerts herangezogen, wobei dieser nach wie vor zur Korrespondenzbildung ausreichend ist. Durch die Auswertung der unter der Gruppe angeordneten Atome und Bindungen kann diese auch dann einer anderen Gruppe zugeordnet werden, wenn aufgrund des Namens mehrere Kandidaten in Frage kämen. Dies soll im Folgenden anhand eines Beispiels erläutert werden. In dem einen Molekül ist eine Gruppe enthalten, die in dem anderen doppelt vorkommt, so dass aufgrund des Namens alleine keine eindeutige Zuordnung erfolgen kann. Aufgrund einiger einzigartiger Atomtypen
können manche Molekülatome einander zugeordnet werden, woraufhin iterativ ausgehend von diesen Korrespondenzen weitere Atome und Bindungen einander zugeordnet werden können. Sobald ein Atom oder eine Bindung unterhalb der Gruppe
durch diesen Prozess einem korrespondierenden Element zugeordnet wird, verändert
sich der Ähnlichkeitswert, den die Gruppe zu einer der beiden anderen hat, woraufhin
die Gruppen-Korrespondenzbildung vorgenommen werden kann. Für die Ermittlung
des Ähnlichkeitswerts für compound-Elemente ergibt sich nach diesen Überlegungen
eine Mischung aus der Ähnlichkeit des Namens der Gruppe, der Atom- sowie der
Bindungsmengen. Der Schwellwert ist so zu wählen, dass der Name für eine Korrespondenzbildung ausreichend ist und die Knotenmengen der darunter angeordneten
Elemente lediglich zu einem Unterschied der Ähnlichkeitswerte bei mehreren identischen Kandidaten führt.
46
5.2 Anpassung der Konfigurationsskripte
Auf der obersten Ebene des SiDiff-Molekülgraphen liegt der Wurzelknoten vom
Typ model, unter dem alle funktionellen Gruppen liegen sowie die Gruppe derjenigen
Knoten, die in keiner funktionellen Gruppe enthalten sind. Der hier definierte
Schwellwert gibt somit an, wie hoch die Übereinstimmung der anderen Knoten sein
muss, damit zwei Moleküle als einander entsprechend angesehen werden. Diese Abhängigkeit von den darunterliegenden Knotenvergleichen wird im Konfigurationsskript dadurch ausgedrückt, dass für den Vergleich der model-Elemente die Ähnlichkeiten der Knotenmengen der funktionellen Gruppen (compounds) ermittelt werden
müssen und dann exklusiv zur Ermittlung des Ähnlichkeitswerts des Modells verwendet werden. Identische Moleküle erfordern eine vollständige Übereinstimmung
aller Atome, Bindungen und Gruppen, wodurch der Schwellwert für eine ModellÜbereinstimmung auch auf 1.0 gesetzt werden muss. Unterscheiden sich zwei Moleküle auch nur in einem dieser Elemente, so wird der model-Knoten nicht zugeordnet
und die Gesamtähnlichkeit von 1.0 kann nicht erreicht werden.
Die vorgenommenen Konfigurationen werden in Abbildung 5.4 anhand eines Auszugs der CompareConfig-Konfigurationsdatei dargestellt.
47
5.2 Anpassung der Konfigurationsskripte
<Configurations>
<NodeType name="model">
<Configuration threshold="1.0"/>
<CompareFunctions>
<CompareFunction
class="OutgoingReferencesMatchedOrSimilarIO"
weight="1.0" parameter="compounds"/>
</CompareFunctions>
</NodeType>
<NodeType name="compound">
<Configuration threshold="0.5"/>
<CompareFunctions>
<CompareFunction
class="StringAttributeUsingEqualsCS"
weight="0.5" parameter="name"/>
<CompareFunction
class="OutgoingReferencesMatchedOrSimilarIO"
weight="0.25" parameter="atoms"/>
<CompareFunction
class="OutgoingReferencesMatchedOrSimilarIO"
weight="0.25" parameter="bonds"/>
</CompareFunctions>
</NodeType>
<NodeType name="atom">
<Configuration threshold="0.6"/>
<CompareFunctions>
<CompareFunction
class="StringAttributeUsingEqualsCS"
weight="0.6" parameter="elementType"/>
<CompareFunction
class="RemoteNodesMatchedOrSimilarIO"
weight="0.4" parameter="I:target"/>
</CompareFunctions>
</NodeType>
<NodeType name="bond">
<Configuration threshold="0.8"/>
<CompareFunctions>
<CompareFunction
class="RemoteNodesMatchedOrSimilarIO"
weight="0.5" parameter="O:target"/>
<CompareFunction
class="StringAttributeUsingEqualsCS"
weight="0.5" parameter="order"/>
</CompareFunctions>
</NodeType>
</Configurations>
Abbildung 5.4 Auszug der CompareConfig für den Vergleich molekularer Graphen
48
5.2 Anpassung der Konfigurationsskripte
5.2.3 MatchingConfig
Die MatchingConfig steuert sowohl die Reihenfolge, in der die Elementtypen miteinander zu vergleichen sind, als auch Parameter, die für jeden Elementtyp angeben,
wie dieser im Kontext zu anderen Knoten zu bewerten ist. Darüber hinaus werden die
zu verwendenden Matching-Strategien spezifiziert. Entsprechend gliedert sich die
Datei in die drei Abschnitte Settings, MatchingConfigurations und CompareSequence, die im Folgenden anhand der vorgenommenen Anpassungen genauer beschrieben
werden.
Unter Settings lassen sich der Name des Dokumenttyps sowie die zu verwendenden Matching-Implementierungen spezifizieren. Dafür kann neben dem standardmäßigen iterativen Matcher auch ein zweiter Matcher angeben werden, der lediglich für
den ersten Durchlauf eingesetzt wird. Diese Trennung ist erforderlich, um in einem
ersten Durchlauf die sich durch direkte Knotenvergleiche eindeutig ergebenden Korrespondenzen zu markieren, während mit Hilfe des iterativen Matchers die Umgebungen der Knoten miteinbezogen werden. Für den Matching-Prozess molekularer
Graphen wird im ersten Durchlauf der UniqueSimilarityMatcher verwendet, der Knoten nur dann einander zuordnet, wenn ein Vergleich über ihre Attribute zu einer eindeutigen Zuordnung führt. Dies ist bei allen Knoten der Fall, die über ein einmalig
vorkommendes Attribut verfügen, beispielsweise beim Namen einer funktionellen
Gruppe, die nur ein einziges Mal im Graph vorkommt, oder einem Atom mit einem
Elementtyp, der kein weiteres Mal auftritt. Der iterative Standard-Matcher (DefaultMatcher) ermittelt im Anschluss die Ähnlichkeitswerte der Knoten unter Berücksichtigung der Knotenumgebung. Wie diese Umgebung auszuwerten ist und welche
Merkmale für die Ähnlichkeitswertermittlung herangezogen werden sollen, wird
durch die Konfigurationen der CompareConfig vorgegeben (vgl. Kapitel 5.2.2 ).
Innerhalb der MatchingConfigurations wird für jeden Knotentyp ein Eintrag erzeugt, der definiert, wie Instanzen des jeweiligen Typs in Relation zu anderen Knoten
zu behandeln sind. Über die Attribute der Knotentyp-Konfigurationen kann angegeben werden, ob die Reihenfolge der Elemente von Bedeutung ist, ob VerschiebeOperationen erlaubt sind und ob Knoten mit einem veränderten Matcher erneut verglichen werden sollen, sobald ihr Elternelement zugeordnet wurde. Da Gruppen,
Atome und Bindungen in einer beliebigen Reihenfolge definiert werden können,
spielt diese für die Ähnlichkeit keine Rolle und kann für alle vorkommenden Elemente mit „false“ deaktiviert werden. Mit moveAllowed lässt sich konfigurieren, ob Knoten des angegebenen Typs, die an einer bestimmten Stelle im ersten Graphen stehen,
im zweiten Graphen an einer anderen Stelle vorkommen und dennoch als Korrespondenz erkannt werden können. Diese Option ist besonders im Rahmen von Klassendiagrammen, in denen beispielsweise Klassen durch Vererbungshierarchien innerhalb
eines Graphs verschoben werden können, von Bedeutung. Da molekulare Graphen
dagegen eine vergleichsweise flache Struktur mit wenigen Ebenen aufweisen, in denen Atome und Bindungen lediglich unter Gruppen-Knoten liegen können, ist auch
49
5.2 Anpassung der Konfigurationsskripte
diese Zusatzoption hier nicht erforderlich. Von besonderer Bedeutung für Molekülvergleiche ist die dritte Option parentForceMatch, mit deren Hilfe es ermöglicht
wird, durch einen Match einer funktionellen Gruppe alle zugehörigen Atome und
Bindungen ebenfalls zuzuordnen. Mit der Option wird vermerkt, dass Elemente dieses Typs erneut zu vergleichen sind, sobald der Elternknoten einem korrespondierenden Knoten zugeordnet wurde. Für den erneuten Vergleich wird jedoch die Kandidatenmenge dahingehend eingeschränkt, dass nur noch Knoten miteinander verglichen
werden, die in beiden Graphen unterhalb der zuvor gebildeten Korrespondenz liegen.
Durch diese verkleinerte Kandidatenmenge lassen sich die Atome und Bindungen der
einen Gruppe denen der anderen Gruppe zuordnen und es entsteht eine Menge von
Korrespondenzen, die genutzt werden kann, um weitere Elemente außerhalb der
Gruppe iterativ zuzuordnen. Der Eintrag parentForceMatch ist sowohl bei Atomen
als auch bei Bindungen auf „true“ zu setzen.
Innerhalb der CompareSequence wird schließlich die Reihenfolge definiert, in der
die Elementtypen zu vergleichen sind. Diese Reihenfolge sollte entsprechend des
Bottom-Up-Prinzips des Matchers von den Blättern hin zur Wurzel organisiert sein.
Da es sich hierbei um die Definition des iterativen Prozesses handelt, die also zeitlich
nach dem ersten Matcher genutzt wird, startet der Matchingvorgang mit den Bindungen, gefolgt von Atomen. Auf diese Weise werden in einem Durchlauf zunächst ausgehend von allen bereits zugeordneten Atomen weitere Bindungen zugeordnet, gefolgt von weiteren Atomen. Da funktionelle Gruppen derzeit lediglich in einem ersten
Durchlauf von Bedeutung sind, um die in ihnen enthaltenen Atome und Bindungen
zuzuordnen, ist ein erneuter Vergleich dieser Knoten lediglich erforderlich, um aufgrund von möglicherweise zuvor vorgenommenen Korrespondenzbildungen bei
Atomen oder Bindungen der Gruppe einen veränderten Ähnlichkeitswert zu ermitteln. Hat sich dieser verändert, so kann die Gruppe unter mehreren Kandidaten jetzt
eindeutig zugeordnet werden. Als Letztes wird schließlich der „model“-Knoten verglichen, unter dem alle anderen Knoten angeordnet sind. Wie bereits in Kapitel 3.1
beschrieben, läuft dieser iterative Prozess mehrere Male komplett über den Graphen,
bis keine zusätzlichen Korrespondenzen mehr entdeckt werden. Abbildung 5.5 zeigt
anhand eines Auszugs aus der MatchingConfig die vorgenommenen Konfigurationen.
50
5.3 Integration der Gruppenmarkierung
<IterativeMatching>
<Settings documentType="MoleculeModel"
firstPassMatcher="UniqueSimilarityMatcher"
iterativeMatcher="DefaultMatcher" />
<MatchingConfigurations>
<NodeType name="model">
<Configuration ordered="false" moveAllowed="false"
parentForceMatch="false"/>
</NodeType>
<NodeType name="compound">
<Configuration ordered="false" moveAllowed="false"
parentForceMatch="false"/>
</NodeType>
<NodeType name="atom">
<Configuration ordered="false" moveAllowed="false"
parentForceMatch="true"/>
</NodeType>
<NodeType name="bond">
<Configuration ordered="false" moveAllowed="false"
parentForceMatch="true"/>
</NodeType>
</MatchingConfigurations>
<CompareSequence>
<Item name="bond"/>
<Item name="atom"/>
<Item name="compound"/>
<Item name="model"/>
</CompareSequence>
</IterativeMatching>
Abbildung 5.5 Auszug aus MatchingConfig für den Vergleich molekularer Graphen
Die mithilfe der hier vorgestellten Konfigurationen durchgeführten Tests werden
im folgenden Kapitel beschrieben und ausgewertet. Dabei werden auch alternative
Konfigurationen bezüglich Gewichtungen, Schwellwerten und Matching-Parametern
berücksichtigt.
5.3 Integration der Gruppenmarkierung
Um zwei molekulare Graphen in der zuvor beschriebenen Art und Weise zu vergleichen ist es erforderlich, zunächst die Komponente zur Markierung funktioneller
Gruppen zu integrieren. Dazu werden hauptsächlich zwei Funktionen benötigt: zum
einen die Markierung des gesamten Datenbestands, mit dem anschließend das Anfragemolekül zu vergleichen ist, zum anderen die Markierung des Anfragemoleküls
selbst.
Die Markierung des Datenbestands ist dadurch gekennzeichnet, dass sie nur ein
einziges Mal durchgeführt werden muss. Da sich der Katalog mit verwendeten funk-
51
5.3 Integration der Gruppenmarkierung
tionellen Gruppen nicht ständig verändert und somit auch keine häufige Anpassung
der gesamten Datenbasis zu erfolgen hat, spielt die Laufzeit nur eine untergeordnete
Rolle. Die Problematik, den gesamten Datenbestand zu markieren, lässt sich zurückführen auf die wiederholte Markierung eines einzelnen Moleküls, die im nächsten
Abschnitt beschrieben wird. Daher erfordert die Integration der Datenbankmarkierung lediglich eine Schnittstellenfunktion, die iterative Markierungsaufrufe kapselt.
Neben einem entsprechenden Konstruktor, über den Quell- und Zielverzeichnis der
Datenbasis sowie das Verzeichnis der Musterdefinitionsdatei spezifiziert werden,
können mithilfe der Funktion markMolecules() die in den Verzeichnissen liegenden
CML-Dateien eingelesen, markiert und gespeichert werden. Da diese Markierung
gesondert vom eigentlichen Vergleichsvorgang durchgeführt werden kann, ist eine
Integration in den Vergleichsprozess nicht erforderlich.
Für die Markierung des Anfragemoleküls, also eines einzelnen Dokuments, werden ähnliche Schnittstellen angeboten, wie bereits zuvor beschrieben. Auch hier werden Quell- und Zielverzeichnis sowie die Musterdefinitionsdatei angegeben, um anschließend durch die Funktion markMolecule() die Markierung vorzunehmen. Im
Unterschied zur Datenbankmarkierung ist dieser Schritt jedoch zu Beginn des Vergleichsvorgangs auszuführen und somit laufzeitkritisch. Zu Beginn des Vergleichsablaufs wird das unmarkierte Molekül eingelesen, markiert und zurückgespeichert. Damit steht es mit markierten funktionellen Gruppen für den anschließenden Vergleichsprozess zur Verfügung und wird vom SiDiff-Algorithmus entsprechend der
erstellten Konfigurationsdateien mit jeweils einem anderen Molekül verglichen.
Anstatt jedesmal das Anfrage- sowie das nächste zu vergleichende Molekül laden
zu müssen, erlaubt es der SiDiff-Algorithmus mithilfe eines Graph-Repositories
gleich mehrere Graphen zu laden und anschließend beliebig untereinander zu vergleichen. Dadurch wird es möglich, das Anfragemolekül an der ersten Position des Repositories zu speichern und anschließend das Repository mit Datenbank-Molekülen aufzufüllen. Die maximale Größe dieses Repositories ist von der Hauptspeichergröße
abhängig, so dass ab einer bestimmten Anzahl an Graphen eine Neuinitialisierung
erforderlich wird. Dies erfordert eine Speicherung der Vergleichsergebnisse zwischen
den Bearbeitungsgängen der einzelnen Repository-Füllungen und eine anschließende
Zusammenführung.
Für den vollständig integrierten Programmablauf ergibt sich somit zunächst eine
Markierung des Anfragemoleküls. Anschließend werden die erforderlichen SiDiffKomponenten mit den zugehörigen Konfigurationsdateien initialisiert und das Anfragemolekül sowie die zuvor markierten Datenbankmoleküle in das Graph-Repository
geladen. Für jeden Vergleich des Anfragemoleküls mit einem Datenbankmolekül
wird das SiDiff-Ergebnis absteigend so gespeichert, dass sich bereits ein Ranking
entsprechend der Ähnlichkeiten ergibt. Umfasst die Datenbank mehr Moleküle, als
das Repository speichern kann, so wird dieses bei Erreichen der Grenzwerte neu initialisiert und mit den nächsten Molekülen gefüllt. Wurde mit allen Datenbankmolekülen verglichen, werden die Ähnlichsten mit dem zugehörigen Ähnlichkeitswert in der
52
5.4 Verwendete Ähnlichkeitsmetriken
Konsole sowie in einer Textdatei ausgegeben. Aus Laufzeitgründen werden während
des Vergleichsablaufs die genauen Knotenzuordnungen nicht in die Konsole geschrieben. Wird neben dem ermittelten Ähnlichkeitswert auch die genau Knotenzuordnung benötigt, so ist es erforderlich, im Anschluss an den Vergleich eine erneute
Anfrage mit dem Anfragemolekül und dem jeweiligen Datenbankmolekül zu starten,
die dann sämtliche ermittelten Informationen auf der Konsole sowie in einer Textdatei ausgibt.
5.4 Verwendete Ähnlichkeitsmetriken
Als Grundlage für sämtliche Ähnlichkeitsbetrachtungen dienen die mithilfe des SiDiff-Algorithmus ermittelten Korrespondenzen sowie Differenzen mit den zugehörigen Knoten-Ähnlichkeitswerten. Wie bereits in Kapitel 3.1 beschrieben, unterscheidet
der SiDiff-Algorithmus zwischen strukturellen Unterschieden (Structural) und Unterschieden, die sich daraus ergeben, dass sich die Attribute eines Knotens geändert haben (Update) oder daraus, dass der Knoten an einer anderen Stelle im Diagramm auftritt (Move). Während die letzten beiden Unterschiede eine KnotenKorrespondenzbildung möglich machen, sorgen strukturelle Unterschiede dafür, dass
Knoten in beiden Graphen keine Entsprechung in dem jeweils anderen Graphen haben. Für die Ermittlung von Molekül-Ähnlichkeitswerten können neben der Anzahl
der zugeordneten und nicht-zugeordneten Knoten auch die Ähnlichkeitswerte verwendet werden, die durch den Algorithmus für ein Paar von Knoten ermittelt wurden,
auch wenn diese nicht als korrespondierend erkannt wurden. Zunächst soll das von
SiDiff verwendete Verfahren zur Bestimmung des Ähnlichkeitswerts für zwei molekulare Graphen kurz beschrieben werden, bevor ein alternativer, auf den SiDiffMetriken basierender Ansatz vorgestellt wird.
Der von SiDiff ermittelte Ähnlichkeitswert für zwei vollständige Graphen berechnet sich aus dem Verhältnis zwischen zugeordneten und nicht-zugeordneten Knoten.
Somit verringert sich der Ähnlichkeitswert mit jedem Knoten, zu dem im anderen
Graphen keine Korrespondenz gefunden werden kann. Korrespondenz-Knoten gehen
anteilig mit dem für sie ermittelten Ähnlichkeitswert in die Gesamtähnlichkeit ein.
Auf diese Art fließt nicht nur die strukturelle Ähnlichkeit zweier Graphen in den
Ähnlichkeitswert ein, sondern auch die genaue Ähnlichkeit der Korrespondenzen,
was sehr differenzierte Aussagen über den Anteil neuer oder veränderter Knoten ermöglicht.
Molekulare Graphen sind dadurch gekennzeichnet, dass mit den Knoten für funktionelle Gruppen und dem Knoten für Nicht-Gruppenelemente mehrere zur Unterstützung der Korrespondenzbildung künstlich angelegte Knoten im Graphen enthalten
sind. Etwas problematisch wird diese Eigenschaft, wenn zwei Moleküle miteinander
verglichen werden, die sich strukturell zwar sehr ähnlich sind, jedoch insoweit unterscheiden, dass sie über unterschiedliche funktionelle Gruppen verfügen. Beide Gra-
53
5.4 Verwendete Ähnlichkeitsmetriken
phen umfassen damit eine Reihe von Gruppen-Knoten, zu denen keine Korrespondenzen ermittelt werden können, was den Gesamtähnlichkeitswert verringert, selbst
wenn die meisten Atome und Bindungen einander aufgrund der sehr ähnlichen Struktur zugeordnet werden können (vgl. Abbildung 5.6B). In diesem Fall könnte ohne die
Gruppenmarkierung ein höherer Ähnlichkeitswert erzielt werden, was die strukturelle
Ähnlichkeit der beiden Graphen stärker zum Ausdruck bringen würde. Betrachtet
man diese Problematik jedoch unter chemischen Gesichtspunkten und unter Berücksichtigung der Tatsache, dass gerade die funktionellen Gruppen für Reaktionsprofile
von besonderer Bedeutung sind, so kann eine verringerte Ähnlichkeit aufgrund unterschiedlicher Gruppen durchaus wünschenswert sein.
Abbildung 5.6 Markierte Strukturen für Vergleich
Von besonderer Bedeutung ist die Problematik der Korrespondenzbildung bei
Strukturen, die ausgehend vom letzten zugeordneten Knoten in zwei oder mehr vollkommen identische Teilgraphen verzweigen. Da mithilfe des SiDiff-Algorithmus für
jeden der angrenzenden Knoten jeweils zwei oder mehr Kandidaten mit einem identischen Ähnlichkeitswert ermittelt werden, kann keine eindeutige Korrespondenzbildung erfolgen und somit bleiben diese Knoten nicht-zugeordnet, was den Ähnlichkeitswert reduziert. Dies führt dazu, dass vor allem der Vergleich völlig identischer
symmetrischer Strukturen zu einem geringeren Ähnlichkeitswert führen kann, obwohl
die Identität festgestellt werden müsste (vgl. Abbildung 5.6A). In diesem Fall wäre
eine beliebige Korrespondenzbildung eine mögliche Problemlösung, die jedoch von
der derzeitigen SiDiff-Version nicht unterstützt wird.
Um dieser Problematik entgegen zu wirken, wurde ein Verfahren entwickelt, mit
dem ein alternativer Ähnlichkeitswert ermittelt werden kann. Ausgehend von dem mit
SiDiff berechneten Ähnlichkeitswert für zwei molekulare Graphen wird die Restmenge der Knoten, zu denen keine Korrespondenzen ermittelt werden konnten, weiter
ausgewertet. Für jedes nicht-zugeordnete Atom wird zunächst überprüft, ob mindestens zwei Kandidaten mit einem identischen Ähnlichkeitswert existieren. Ist das der
Fall, so wird es dem ersten Kandidaten zugeordnet und die beiden Atome, nun als
Korrespondenz markiert, werden aus der Restmenge entfernt. Anders als mithilfe des
SiDiff-Algorithmus werden hierbei als einzige Kriterien die Ähnlichkeitswerte sowie
die Elementtypen der Atome betrachtet. Wurden alle Atome abgearbeitet, werden
54
5.4 Verwendete Ähnlichkeitsmetriken
anschließend die Bindungen analog betrachtet, wobei neben den Ähnlichkeitswerten
die Bindungsgrade in die Betrachtungen miteinbezogen werden. Nicht-zugeordnete
Gruppenknoten werden aufgrund der oben beschriebenen und in Abbildung 5.6B dargestellten Problematik aus der Berechnung des Ähnlichkeitswerts herausgenommen.
Nach Abschluss dieser Korrespondenzbildung aus der Restmenge korrespondenzloser
Knoten wird der neue Ähnlichkeitswert berechnet, diesmal lediglich aus dem Verhältnis zugeordneter und nicht-zugeordneter Knoten. Durch den Bezug zur KnotenRestmenge wird dieses Ähnlichkeitsmaß im Folgenden Set-Ähnlichkeit genannt.
Durch Einsatz dieses Verfahrens lässt sich besonders für symmetrische Strukturen
Identität mit einem Ähnlichkeitswert von 1,0 kennzeichnen, wie für die in Abbildung
5.6A dargestellte Vergleichssituation. Auch für unterschiedliche Graphen, die über
identische Teilbäume verfügen, lässt sich mit dem beschriebenen Verfahren der ermittelte Ähnlichkeitswert nach oben korrigieren. Dabei sind jedoch zwei Dinge zu
beachten: zum Einen handelt es sich bei dem vorgestellten Verfahren um einen rein
mengenmäßigen Ansatz, der den strukturellen Aufbau des Graphen nicht berücksichtigt und somit auch keine Topologie-erhaltende Korrespondenzbildung vornehmen
kann. Der alternative Ähnlichkeitswert stellt damit einen Indikator dar, der auf eine
mögliche Identität und symmetrische Strukturen hinweisen kann, diese jedoch auf
keinen Fall garantiert. Zum Anderen erhöht sich die Fehlerrate bei der Ermittlung
ähnlicher Strukturen, da bei einer rein mengenmäßigen Betrachtung der Knotenrestmenge deutlich mehr Moleküle eine ähnliche Menge aufweisen, als unter zusätzlicher
Berücksichtigung der Topologie. Somit werden auch Moleküle mit einer hohen Ähnlichkeit eingestuft, die zufällig die gleiche Menge an Atomen und Bindungen haben,
sich strukturell jedoch unterscheiden. Aus diesen Gründen ist der alternative Ähnlichkeitswert lediglich als eine Ergänzung zu der mit SiDiff ermittelten Ähnlichkeit
zu verwenden. Verfügt das Anfragemolekül über symmetrische Teilstrukturen, so
kann der Alternativwert im Anschluss an die mit SiDiff ermittelte Ähnlichkeit berechnet werden. Für die Sortierung der Ergebnisse ist dann eine Kombination aus
SiDiff- und mengenmäßiger Ähnlichkeit denkbar, wobei das Verhältnis über einen
Parameter gesteuert werden kann.
Die mithilfe der hier beschriebenen Verfahren durchgeführten Tests werden im
nächsten Kapitel beschrieben und analysiert. Dabei werden unterschiedliche Konfigurationen und Kombinationen aus SiDiff-Ähnlichkeitswert und dem alternativ ermittelten Ähnlichkeitswert getestet.
55
6 Ergebnisse
Die vorgenommenen Anpassungen für den Vergleich molekularer Graphen erfordern
hauptsächlich in den Bereichen der Markierung funktioneller Gruppen sowie des eigentlichen Vergleichs der Graphen umfangreiche Tests. Dazu sind zunächst die Testumgebung und der zu verwendende Testdatenbestand zu spezifizieren, bevor die vorzunehmenden Testläufe beschrieben, durchgeführt und ausgewertet werden.
Zur Markierung funktioneller Gruppen ist die Korrektheit der Gruppenmarkierung
in einem ersten Schritt an einzelnen Molekülen zu überprüfen, gefolgt von Laufzeitbetrachtungen für die Markierung des gesamten Datenbestands. Für den Vergleich
der markierten Graphen wird analog zunächst anhand verschiedener Tests die Vergleichsgenauigkeit für zwei Graphen untersucht, wobei verschiedene Schwellwerte
und Gewichtungen ebenso überprüft werden wie die Aussagekraft der verwendeten
Ähnlichkeitsmetriken. Anschließend erfolgt der Vergleichstest eines Moleküls mit
dem gesamten Datenbestand, wobei nicht nur die Laufzeit, sondern auch das ermittelte Ranking für die Vergleichsergebnisse ausgewertet wird.
Die ermittelten Ergebnisse werden anschließend evaluiert und es wird überprüft,
inwieweit mit Hilfe des SiDiff-Algorithmus molekulare Graphen mit einer akzeptablen Präzision und Korrektheit verglichen werden können. Darüber hinaus ist festzustellen, ob auch große Datenbestände mit vertretbarem Aufwand durchsucht und verglichen werden können.
6.1 Testumgebung
Die im Folgenden vorgenommenen Tests werden zunächst auf einem Intel Pentium
M Prozessor mit 1,87 GHz und 1GB Arbeitsspeicher durchgeführt. Der auf 1GB beschränkte Arbeitsspeicher führt dazu, dass gerade die Neuinitialisierung des GraphRepository häufig durchgeführt werden muss. Zum Vergleich der Laufzeit werden
daher alle vorgestellten Tests abschließend auf einem Testsystem mit 2GB Arbeitsspeicher durchgeführt.
6.2 Testdatenbestand
Es existieren eine ganze Reihe kommerzieller sowie frei zugänglicher Datenbanken
im Internet, die biochemische Informationen aus den verschiedensten Anwendungsbereichen beinhalten. [Pol07] ordnet die Datenbanken entsprechend der in ihnen gespeicherten Datenbestände in die Hauptbereiche Genetik, Proteomik und Medizin und
56
6.2 Testdatenbestand
nennt darüber hinaus Datenbanken, die spezielle Gen-Ausdrücke13, Ontologien14 sowie genetische und proteomische Pfade15 enthalten.
Für den im Rahmen dieser Diplomarbeit durchzuführenden Molekülvergleich sind
Datenbestände erforderlich, die strukturelle Molekülinformationen enthalten, wie sie
häufig in proteomischen und medizinischen Datenbanken vorkommen (vgl.
[Mod08]). Die meisten aufgeführten Internetportale verfügen über eine zum Teil sehr
umfangreiche Schnittstelle, mit deren Hilfe detailliert Struktursuchen auf den angebundenen Datenbanken möglich sind. Besonders die Suche über PubChem, die
NCBI-Schnittstelle (National Center for Biotechnology Information) (vgl. [Pub08]),
ermöglicht umfangreiche Konfigurationen sowie die Möglichkeit, molekulare Strukturen über einen eingebauten Editor direkt zu zeichnen und anschließend als Anfrage
an die angebundenen Datenbanken zu senden. Problematisch zu sehen ist die Größe
der Datenbanken, die mit einem Gesamtdatenbestand von mehreren Millionen Molekülen für einfache Testreihen zu umfangreich sind, sowie die häufig fehlende Möglichkeit, die Datenbankinhalte direkt herunterladen zu können.
Das NCI (National Cancer Institute), speziell die Unterabteilung CADD-Group
(Computer Aided Drug Design), die Datenbestände sowie Software und Tools zu
deren Bearbeitung frei zur Verfügung stellt, bietet ebenfalls eine Schnittstelle, über
die molekulare Struktursuchen durchgeführt werden können. Über diese Schnittstelle
lassen sich derzeit Anfragestrukturen mit etwa 40 Millionen einzigartigen Einträgen
aus über 100 Datenbanken vergleichen (vgl. [Che082]). Neben dieser Struktursuche
kann über deren Webseite eine Datenbank im MOL-Format heruntergeladen werden,
die mit einem Datenbestand von 260.071 Molekülen auf dem Stand von September
2003 eine recht große Anzahl an Teststrukturen bietet (vgl. [Dow08]). Die eingetragenen Molekülstrukturen enthalten alle benötigten Informationen über Elementtypen
und Bindungen sowie einige zusätzliche Daten über die Molekülzusammensetzung
und weitere Identifizierer. Durch die Möglichkeit, MOL-Dateien mit OpenBabel in
CML-Dateien konvertieren zu können, ist dieser Datenbestand für die folgenden
Testläufe gut geeignet. Um Aussagen über die Einsatzfähigkeit, Genauigkeit sowie
die Laufzeit des SiDiff-Algorithmus zu treffen, ist eine Untersuchung des gesamten
Datenbestands jedoch nicht erforderlich, so dass lediglich ein Ausschnitt von maximal 10.000 Molekülen pro Vergleich zum Einsatz kommt. Abbildung 6.1 zeigt eine
strukturelle Analyse des zu untersuchenden Datenbestands. Es zeigt sich, dass die
meisten Moleküle eine Größe im Bereich von 15 bis 35 Atomen aufweisen (60,82%).
Im Bereich von 36 bis 55 Atomen (20,97%) liegt ebenfalls ein relativ großer Datenbestand, während kleine Moleküle mit 1 bis 14 Atomen (8,45%) und sehr große mit
56 bis 230 Atomen (9,76%) verhältnismäßig selten auftreten. Für die folgenden Un13
Gene expression: Informationen über den Zusammenhang zwischen DNA-Abschnitten und den
ausgeprägten Merkmalen, wie beispielsweise gebildeten Proteinen (vgl. [Pol07])
14
Ontology: Spezifikation eines relationalen Vokabulars mit hierarchisch geordneten Fachbegriffen, hier biochemischen (vgl. [Gen081])
15
Molekulare Interaktions- und Reaktionsnetzwerke (vgl. [KEG08])
57
6.3 Testläufe
tersuchungen werden die Moleküle daher in die Kategorien sehr klein (1-14 Atome),
klein (15-25 Atome), mittel (26-35 Atome), groß (36-55 Atome) und sehr groß (56230 Atome) eingeteilt.
400
350
300
250
200
150
100
50
0
1
6
11
16
21
26
31
36
41
46
51
56
61
66
71
76
81
86
91
96
101
106
111
116
121
126
Anzahl Moleküle im Datenbestand
Molekülverteilung im Datenbestand
Anzahl Atome in Molekül
Abbildung 6.1 Zusammensetzung des Datenbestands bezüglich Größe und Anzahl der Moleküle
6.3 Testläufe
Die beiden zu testenden Bereiche umfassen zum einen die Markierung der funktionellen Gruppen, zum anderen den mit SiDiff durchgeführten Vergleich der markierten
molekularen Graphen.
Für die Gruppenmarkierung werden zunächst Tests zur Sicherstellung der Korrektheit der Markierung anhand von selbstdefinierten Beispielstrukturen vorgenommen,
die ausgewählte potenzielle Problemstrukturen darstellen. In einem zweiten Schritt
werden anschließend zufällige Moleküle des Datenbestands markiert und auf Korrektheit überprüft. Im Rahmen des abschließenden Tests zur Markierung des gesamten
Datenbestands rückt die Laufzeit in den Fokus, während die Korrektheit nur noch
anhand einzelner Stichproben untersucht wird.
Zum Vergleich der markierten molekularen Graphen werden analog zunächst einfache selbsterstellte Beispielgraphen verwendet, um die Korrektheit der Knotenzuordnungen für mögliche Problemstrukturen zu testen. Anschließend werden auch hier
reale, im Datenbestand vorkommende, Beispielmoleküle miteinander verglichen. Der
Fokus der Untersuchungen liegt dabei auf gebildeten Knotenzuordnungen und der
Aussagekraft der ermittelten Ähnlichkeitswerte. Für den Vergleich des Anfragemoleküls mit Molekülen des Datenbestands werden Laufzeit und Genauigkeit des Ver-
58
6.3 Testläufe
gleichs untersucht, wobei Letztere anhand der ermittelten ähnlichsten Moleküle überprüft wird. Im Rahmen dieser Untersuchungen werden auch die Auswirkungen der
verschiedenen Ähnlichkeitsmetriken auf das Ranking der ähnlichsten Moleküle getestet, um die vorteilhafteste Konfiguration zu ermitteln.
6.3.1 Markierung funktioneller Gruppen
Zur Sicherstellung der Korrektheit der Markierung funktioneller Gruppen werden die
Tests zunächst an einfachen Strukturen sowohl der Musterdefinitionen, als auch der
Moleküle selbst, durchgeführt. Als Musterdefinitionen werden kleine, azyklische
Atomgruppierungen von nicht mehr als vier Atomen verwendet. Die Moleküle umfassen maximal zehn Atome und sind ebenfalls zyklenfrei. In dieser ersten Phase wird
auf Wildcard-Elemente in den Musterdefinitionen verzichtet. Die verwendeten Musterdefinitionen und Moleküle zusammen mit den resultierenden Gruppenmarkierungen werden im Anhang aufgeführt und entsprechen vollständig den Erwartungen.
In der zweiten Phase werden zunächst selbstdefinierte Moleküle in die Testmenge
aufgenommen, die über Zyklen verfügen, gefolgt von zyklischen Mustern. Auch auf
diesen Strukturen erfolgt die Gruppenmarkierung entsprechend der Erwartungen. Es
wird deutlich, dass mit zunehmender Anzahl und Komplexität der Strukturen die
Reihenfolge, in der die Muster in der Konfigurationsdatei angeordnet werden, von
großer Bedeutung für den Markierungsprozess ist. Innerhalb der Gruppen der Startatome sind die komplexen Muster, die über die höchste Aussagekraft verfügen, als
erstes zu definieren, damit diese auch als erstes auf dem Molekül getestet und, falls
vorhanden, markiert werden. Werden die Muster entsprechend ihrer Komplexität angeordnet, so ergibt sich in Verbindung mit Morgans Algorithmus ein korrekter Ablauf sowohl für die Reihenfolge, in der die Startatome im Molekül besucht werden,
als auch für die Reihenfolge, in der die Muster getestet werden. Als abschließende
Betrachtung dieser Phase werden Muster hinzugefügt, die über Wildcard-Elemente
verfügen.
Nachdem die Korrektheit der Gruppenmarkierung für selbstdefinierte Beispielstrukturen verifiziert wurde, werden anschließend Moleküle des tatsächlichen Datenbestands ausgewählt und mit dem geplanten Musterkatalog funktioneller Gruppen
bearbeitet. Aufgrund der großen Anzahl an Molekülen im Datenbestand erfolgt diese
Auswahl zufällig. Die Ergebnismarkierungen der betrachteten Moleküle werden im
Anhang aufgeführt. Bei deren Auswertung fällt auf, dass gerade um die seltener auftretenden Atomtypen Schwefel, Phosphor, Stickstoff und Sauerstoff häufig Gruppen
markiert werden können, da diese mit höherer Priorität zu Beginn besucht werden. Zu
diesen Gruppen zählen häufig auch Kohlenstoffatome, die als Teil der Gruppe markiert werden und somit für den weiteren Gruppenfindungsprozess keine weitere Relevanz besitzen. Diese Kohlenstoffatome sind häufig jedoch Teil eines Kohlenstoffrings, der durch die Markierung des Atoms zu einer anderen Gruppe im Folgenden
nicht mehr erkannt werden kann. Diese Markierung ist unter der Annahme, dass
59
6.3 Testläufe
Gruppen mit Schwefel, Phosphor, Stickstoff und Sauerstoff unter chemischen Reaktionsgesichtspunkten von besonderer Bedeutung sind, vollkommen korrekt. Unter dem
Aspekt, mithilfe der Gruppenmarkierung möglichst aussagekräftige Substrukturen für
den anschließenden Vergleichsvorgang zu markieren, erscheint die Hervorhebung
eines Kohlenstoffrings ebenfalls lohnenswert. Wie sich im Rahmen der Tests zum
Vergleich der markierten Moleküle zeigen wird, ist die derzeitige Rangfolge der Prioritäten durchaus geeignet, um die für den Vergleichsvorgang benötigten Fixpunkte zu
ermitteln. Es sei an dieser Stelle nur darauf hingewiesen, dass durch eine Umgestaltung des Algorithmus und durch die Möglichkeit, polyzyklische Kohlenstoffmuster
über Mustern mit den selteneren Atomtypen einzuordnen, einige weitere sehr aussagekräftige Strukturen markiert werden könnten.
Als abschließende Testphase erfolgt die Markierung des Datenbestands, wobei in
dieser Phase Laufzeitbetrachtungen in den Mittelpunkt rücken und die Korrektheit
der Markierung nur noch anhand von Stichproben überprüft wird. Die Menge der
markierten Moleküle wird in jeder Serie von Testläufen um 1.000 Moleküle erweitert,
bis zu einer im Rahmen dieser Diplomarbeit bearbeiteten Menge von 10.000 Strukturen. Wie anhand der Testergebnisse deutlich wird, nimmt der zeitliche Aufwand für
die Markierung linear zu, für jeweils 1.000 weitere Moleküle um etwa 11 Sekunden
(vgl. Abbildung 6.2). Damit wäre eine Markierung des gesamten Datenbestands von
ca. 260.000 Molekülen in etwa 50 Minuten möglich. Da diese Markierung für die
gesamte Datenbank nur ein einziges Mal zu erfolgen hat und anschließend lediglich
dann erneut durchzuführen ist, wenn die eingesetzten Gruppenmuster geändert werden, ist dieser Aufwand durchaus akzeptabel. Für die Markierung des Anfragemoleküls ergibt sich eine Laufzeit abhängig von der Größe des zu markierenden Moleküls,
also der enthaltenen Atome und Kanten, sowie der enthaltenen Gruppen. Abbildung
6.3 zeigt die gemessenen Mittelwerte der Laufzeiten für die Markierung der Moleküle, geordnet nach den in Kapitel 6.2 definierten Größenordnungen. Es lässt sich feststellen, dass mittlere bis große Moleküle, die den Großteil des Datenbestands ausmachen, mit einem Zeitaufwand zwischen 16 ms und 29 ms ausgesprochen schnell markiert werden können. Selbst eine Markierung sehr großer Strukturen kann im Mittel
in weniger als 50ms vorgenommen werden. Da die Markierung des Anfragemoleküls
zu Beginn des Vergleichsablaufs zu erfolgen hat, fließt dieser zeitliche Aufwand in
die Gesamtlaufzeit des Vergleichsalgorithmus ein. In Relation zu der Laufzeit des
Vergleichsvorgangs mit dem gesamten Datenbestand stellt der Markierungsaufwand
für die Anfragestruktur jedoch einen verschwindend geringen Anteil dar und liegt
somit in einem akzeptablen Bereich.
60
6.3 Testläufe
Aufwand zur Markierung des
Datenbestands
120
Zeit (in s)
100
80
60
40
Mittlere Laufzeit
20
0
Anzahl markierter Moleküle
Abbildung 6.2 Zeitaufwand zur Markierung des Datenbestands
Aufwand zur Molekülmarkierung
60
Laufzeit (in ms)
50
40
30
Mittlere Laufzeit
20
10
0
sehr klein
klein
mittel
groß
sehr groß
Molekülgröße
Abbildung 6.3 Zeitaufwand zur Markierung einzelner Moleküle in Abhängigkeit von Molekülgröße
6.3.2 Vergleich molekularer Graphen
Die Testläufe zum Vergleich der markierten Moleküle werden ebenfalls in mehreren
Phasen organisiert. Zunächst wird anhand einfacher, zyklenfreier Beispielmoleküle
ohne funktionelle Gruppen der reine Atom- und Bindungsvergleich überprüft. Die
verwendeten Beispielmoleküle umfassen maximal zehn Atome, wobei die vorkommenden Elementtypen teilweise mehrfach in jedem Molekül enthalten sind, um die
61
6.3 Testläufe
Matching-Problematik bei Mehrdeutigkeit hervorzurufen. Bei den Tests fällt auf, dass
zyklenfreie Strukturen, bei denen mindestens ein Atom gleich zu Beginn eindeutig als
Korrespondenz markiert werden kann, bis auf die tatsächlichen Unterschiede eindeutig zugeordnet werden können. Liegen hinter den verschiedenen Atomen noch weitere Verkettungen, so können diese aufgrund der Umgebungsbetrachtung bei der Ähnlichkeitswertermittlung ebenfalls einander zugeordnet werden. Problematisch sind
lediglich spiegelbildliche Strukturen, bei denen keine eindeutige Entscheidung getroffen werden kann, welcher Teilgraph des einen Moleküls auf welchen Teilgraph des
anderen abzubilden ist (vgl. Abbildung 3.3). In einem zweiten Schritt wird die Molekülmenge um selbstdefinierte Moleküle erweitert, die Zyklen enthalten. Bei den Tests
lässt sich feststellen, dass eindeutige Merkmale innerhalb des Zyklus, oder Verbindungen nach außen innerhalb von Zyklen mit einem geraden Grad an Knoten dazu
führen, dass der gesamte Zyklus zugeordnet werden kann. Enthält der Zyklus dagegen eine spiegelbildliche Anordnung mit einer Spiegelachse durch die ermittelten
Fixpunkte, so können keine eindeutigen Korrespondenzen gebildet werden.
In der zweiten Phase werden die Moleküle mit einfachen funktionellen Gruppen
angereichert. Der Test umfasst die beiden Konfigurationen mit und ohne die Option
parentForceMatch. Werden die Gruppen ohne parentForceMatch verglichen, so erfolgt keine zusätzliche Überprüfung der Atome und Bindungen, die unter ihnen angeordnet sind, was dazu führt, dass keine zusätzlichen Elemente als Korrespondenzen
markiert werden können. Es werden ausschließlich die eindeutig entscheidbaren
Atome markiert sowie die eindeutig abbildbaren Gruppen-Oberknoten, jedoch nicht
deren Kindelemente, die Atom- und Bindungsknoten. Somit wird durch diese Konfiguration keine Verbesserung erzielt. Die Konfiguration mit parentForceMatch führt
dagegen dazu, dass bei einem Match der funktionellen Gruppen die Kindelemente
erneut verglichen werden, diesmal jedoch mit eingeschränkter Kandidatenmenge, da
nur die Kindelemente der Gruppenknoten verglichen werden müssen. Dies führt dazu, dass die Atome und Bindungen innerhalb der Gruppen zugeordnet werden können. Ausgehend von diesen Korrespondenzen kann der Rest des Graphen nach und
nach durch die Umgebungsbetrachtung, bis auf die sich unterscheidenden Knoten,
zugeordnet werden. Aufgrund dieser Ergebnisse wird für die folgenden Betrachtungen ausschließlich die Konfiguration mit der Option parentForceMatch verwendet.
Ein weiterer Vorteil dieser Option ist, dass bei markierten funktionellen Gruppen, die
einen eigentlich nicht entscheidbaren Zyklus beinhalten, dieser durch die Korrespondenzbildung der Gruppenknoten komplett zugeordnet werden kann. Grund dafür ist
ein veränderter Matching-Algorithmus, der bei mehreren Kandidaten mit einem identischen Ähnlichkeitswert den ersten der Liste auswählt und die Korrespondenz markiert, was in diesem Kontext einen wesentlichen Vorteil darstellt. Die Ergebnisse der
betrachteten Molekülvergleiche werden im Anhang aufgeführt.
Durch die in den ersten beiden Phasen verifizierte, zufriedenstellende Überdeckung für einfache Molekülstrukturen werden in der dritten Phase Moleküle des Datenbestands miteinander verglichen, in denen zuvor funktionelle Gruppen markiert
62
6.3 Testläufe
wurden. Zunächst werden unterschiedliche Konfigurationen bezüglich der festgelegten Gewichtungen und Schwellwerte daraufhin untersucht, ob die Korrespondenzbildung der Atom- und Bindungsknoten sinnvoll ist. Als Ergebnis dieser Untersuchungen konnte festgestellt werden, dass besonders Konfigurationen, bei denen für die
Ähnlichkeitswertberechnung der Bindungen sowohl die direkt angrenzenden Atome,
als auch der Bindungsgrad ausgewertet werden, zu ausgesprochen guten Überdeckungen führen. Für Atome werden der Elementtyp sowie die angrenzenden Bindungen ausgewertet, wobei der Schwellwert jeweils so eingestellt sein muss, dass ein
Atom auch dann zugeordnet werden kann, wenn lediglich der Elementtyp übereinstimmt. Für die Gruppen-Korrespondenzbildung wird eine ähnliche Konfiguration
verwendet, bei der sich der Ähnlichkeitswert aus dem Namen der Gruppe sowie des
Anteils der zugeordneten Atome und Bindungen errechnet, der Schwellwert jedoch so
gewählt ist, dass bereits ein identischer Name für eine Korrespondenzbildung ausreichend ist. Durch die zusätzliche Auswertung der enthaltenen Atome und Bindungen
lässt sich ein Gruppenknoten auch dann noch zuordnen, wenn aufgrund mehrerer
Kandidaten in dem jeweils anderen Dokument zunächst keine Zuordnung erfolgen
kann. Sobald ein oder mehrere Elemente der Gruppe als Korrespondenzen markiert
werden können, ändert sich der Ähnlichkeitswert für die Gruppe und es kann eine
eindeutige Zuordnung erfolgen (vgl. Kapitel 5.2.2 ).
Für die in Phase drei ermittelten Konfigurationen mit der besten Überdeckung
wird in der vierten Phase der Vergleich des Anfragemoleküls mit Teilen des Datenbestands durchgeführt. Im Fokus der Betrachtungen stehen in dieser Phase die ermittelten Ähnlichkeitswerte, die Laufzeit sowie, anhand von Stichproben, die korrekten
Korrespondenzbildungen von Teilen der Moleküle.
In einer ersten Testreihe wird eine zufällige Struktur des Datenbestands ausgewählt und mit den ersten 1.000 Datenelementen verglichen. Die ermittelten Ähnlichkeitswerte, also die SiDiff-Ähnlichkeit sowie die Set-Ähnlichkeit der Restelemente,
werden für jeden Vergleich gespeichert und abschließend ausgegeben. Für die ähnlichsten Moleküle wird anschließend eine genauere Analyse über die genaue Korrespondenzbildung durchgeführt. Für alle durchgeführten Molekülvergleiche kann zunächst festgestellt werden, dass die Anfragestruktur, sofern sie in der durchsuchten
Datenmenge enthalten ist, mit einer Gesamtähnlichkeit von 1,0 ermittelt werden
kann. Für die weiteren, sehr ähnlichen Strukturen, kann häufig bereits rein optisch
eine große Ähnlichkeit festgestellt werden. Die detaillierte Analyse zeigt überwiegend eine sinnvolle Überdeckung der Atome und Bindungen, wobei einige der überlagerten Strukturen anders abgebildet wurden, als diese durch einen Menschen rein
optisch abgebildet worden wären. Abbildung 6.4 zeigt beispielhaft die beiden Datenbankmoleküle 5 und 457 im Vergleichsprozess. Eine Analyse der zugeordneten
Strukturen ergibt, dass zwei Hauptkomponenten korrekt aufeinander abgebildet wurden. Die Übergangsstellen zwischen den beiden Teilstücken stimmen dagegen nicht
überein, wurden jedoch ebenfalls als korrespondierend markiert. Beim Vergleich
bleibt in beiden Molekülen ein Wasserstoffatom ohne Zuordnung.
63
6.3 Testläufe
Abbildung 6.4 Korrespondenzbildung beim Vergleich von Molekül 5 mit Molekül 457 des Datenbestands
Bei der Ermittlung der Ähnlichkeitswerte fallen zwei Eigenschaften des Vergleichsprozesses auf. Zum einen sind die berechneten Werte für den Vergleich zweier
Moleküle nicht konstant, sondern können sich zwischen einzelnen Testläufen geringfügig ändern. Zum anderen unterscheiden sich die Ähnlichkeitswerte für zwei Dokumente abhängig davon, in welcher Reihenfolge diese miteinander verglichen werden
(Kommutativität), das heißt der Ähnlichkeitswert für den Vergleich A zu B entspricht
nicht dem Wert für den Vergleich B zu A. Beide Merkmale lassen sich darauf zurückführen, dass die zu vergleichenden Elemente in Multimengen organisiert sind, wodurch die Reihenfolge der Einzelelement-Vergleiche für die in Multimengen erlaubten Dubletten keiner festgelegten Ordnung unterliegt (vgl. [Kel071]). Für die Korrespondenzbildung ist die Abfolge der Elementvergleiche jedoch von Bedeutung, so
dass es zu unterschiedlichen Resultaten kommt. Es konnte festgestellt werden, dass
unterschiedliche Konfigurationen der CompareConfig und MatchingConfig zu verschiedenstarken Schwankungen der Ergebnismenge führen. Als weiteres Kriterium
bei der Ermittlung einer „guten“ Konfiguration lässt sich somit die Eigenschaft hinzufügen, eine geringe Schwankung der Ergebnisse zwischen den einzelnen Testläufen
hervorzurufen.
Im Rahmen der ersten Testreihe weisen Konfigurationen, die neben der direkten
Umgebung der Knoten auch die eine Ebene weiter entfernten Knoten mit in die Berechnung der Ähnlichkeitswerte miteinbeziehen, eine deutlich höhere Laufzeit auf.
64
6.3 Testläufe
Die berechneten Ähnlichkeitswerte führen zu einem anderen Ranking als Konfigurationen, die nur die direkte Umgebung betrachten. Dieses Ranking ist in den meisten
Fällen strukturell nicht zutreffender, jedoch häufig sehr instabil zwischen den einzelnen Testläufen. Aus diesem Grund werden für die weiteren Testreihen mit größeren
Molekülmengen ausschließlich Konfigurationen betrachtet, die die direkte Umgebung
der Atome und Bindungen in die Kalkulation miteinbeziehen, da deren Ergebnisse
strukturell nachvollziehbar und relativ stabil sind sowie die geringsten Laufzeiten
aufweisen.
Die zweite Testreihe umfasst einen Datenbestand von 2.000 Molekülen. Im Vergleich zur ersten Testreihe lässt sich bei allen Konfigurationen eine Verdopplung der
Laufzeit feststellen. Für die untersuchten Anfragemoleküle werden die Kandidaten
mit den höchsten Ähnlichkeitswerten im Anhang aufgeführt. Wie dort ersichtlich
wird, ist bei allen untersuchten Strukturen bereits optisch eine hohe Ähnlichkeit mit
den bestpassenden Kandidaten auszumachen. Eine detaillierte Analyse über die Korrespondenzbildung der jeweils ähnlichsten Struktur findet sich ebenfalls im Anhang.
Bei der Auswertung zeigt sich, dass Konfiguration acht eine besonders zutreffende
Überlagerung erreicht und sich mit einer Laufzeit knapp unter der schnellsten Konfiguration auch für die Durchsuchung des gesamten Datenbestands eignet. Darüber
hinaus weist sie eine geringe Streuung bezüglich der Veränderung der Resultatmenge
zwischen den einzelnen Testläufen auf.
Die letzte Testreihe umfasst den gesamten Ausschnitt der Datenbank von 10.000
Molekülen, die mit Konfiguration acht getestet werden. Leider reichte die Hauptspeicherkapazität des Testsystems nicht aus, um alle Moleküle zeitgleich in den Speicher
zu laden. Eine blockweise Bearbeitung des Datenbestands scheitert daran, dass mit
der verwendeten Version des SiDiff-Algorithmus eine Re-Initialisierung zur Laufzeit
die Speicherressourcen nicht vollständig freigibt, wodurch die Bearbeitungsgeschwindigkeit nach etwa 2.500 Molekülen drastisch fällt. Die gesamten 10.000 Moleküle werden daher durch fünf Aufrufe mit jeweils 2.000 Molekülen verglichen und
anschließend zusammengefügt. Für den Vergleich eines Anfragemoleküls mit 2.000
Molekülen des Datenbestands werden im Mittel etwa drei Minuten benötigt (vgl. Abbildung 6.5), was in einer theoretischen Laufzeit für den Vergleich mit dem gesamten
Datenbestand von 260.000 Molekülen von etwa sieben Stunden resultiert.
65
6.3 Testläufe
Aufwand zum Molekülvergleich
300
Laufzeit (in s)
250
200
150
100
Mittelwert
50
0
500
1000
1500
2000
2500
Anzahl verglichene Moleküle
Abbildung 6.5 Aufwand zum Vergleich mit dem Datenbestand
Wird in die Berechnung des Ähnlichkeitswerts die Set-Ähnlichkeit miteinbezogen,
so zeigt sich, dass bei einer geringfügigen Gewichtung die Ergebnismenge über die
Testläufe geringere Schwankungen aufweist. Ursache für die Schwankungen der
Ähnlichkeitswerte ist eine veränderte Korrespondenzbildung während des Vergleichsvorgangs, die dazu führt, dass sich die Position eines Moleküls im Gesamtranking um einige Positionen verschieben kann. Die Set-Ähnlichkeit wird hierdurch jedoch kaum beeinflusst, da die Restmenge an Atomen und Bindungen bezüglich der
Atomtypen und Bindungsgrade in der Regel vollkommen gleich bleibt. Wird dieser
Ähnlichkeitswert für die Bildung des Rankings zu einem gewissen Anteil herangezogen, so kann er die Schwankung zum Teil ausgleichen, unter der Voraussetzung, dass
die Set-Ähnlichkeit ausreichend hoch ist. Als Beispiel wäre ein Molekül A denkbar,
das in einem ersten Durchlauf einen SiDiff-Ähnlichkeitswert im Vergleich mit einem
anderen Molekül B von 0,85 aufweist, in einem zweiten Durchlauf jedoch nur 0,84.
Die Set-Ähnlichkeit der Restmenge liegt in beiden Fällen so, dass maximal eine Ähnlichkeit von 0,95 möglich wäre. Werden für das Gesamtranking 50% der SetÄhnlichkeit angerechnet, so wird im ersten Vergleich ein Ähnlichkeitswert von 0,9
erreicht, im zweiten Vergleich von 0,895, was die Wahrscheinlichkeit, dass sich die
Position im Ranking verändert, reduziert. Neben dieser stabilisierenden Eigenschaft
führt die Set-Ähnlichkeit jedoch auch zu einer leicht veränderten Ergebnismenge, da
auch Moleküle, die über einen geringeren strukturellen Ähnlichkeitswert verfügen,
jedoch zufällig eine ähnliche Menge an Restelementen aufweisen, auf die vorderen
Positionen gelangen können.
66
6.4 Evaluierung der Ergebnisse
6.4 Evaluierung der Ergebnisse
Wie die durchgeführten Tests der beiden Bereiche zur Markierung funktioneller
Gruppen und dem Vergleich der markierten Moleküle gezeigt haben, sind beide
Komponenten zusammen dazu geeignet, Moleküle erfolgreich miteinander zu vergleichen.
Die Markierung der funktionellen Gruppen erfolgte bei den untersuchten Strukturen korrekt und mit einer akzeptablen Laufzeit. Es stellte sich heraus, dass nicht nur
die Markierung der Anfragestruktur für den Vergleichsvorgang mit wenigen Millisekunden effizient durchführbar ist, sondern auch die Markierung des gesamten Datenbestands, die lediglich bei Änderungen an den Musterdefinitionen zu erfolgen hat.
Bezüglich der Markierungsrangfolge der Muster bleibt festzuhalten, dass durch eine
Umgestaltung des Algorithmus polyzyklische Kohlenstoffstrukturen vermehrt markiert werden könnten. Dazu wäre die Abfolge der besuchten Startatome so zu verändern, dass Kohlenstoffmuster nicht zwangsläufig hinter Schwefel-, Phosphor-, Stickstoff- und Sauerstoff-Mustern getestet werden, sondern auch mit einer höheren Priorität davor eingeordnet werden können (vgl. Kapitel 6.3.1 ). Diese Veränderung ist mit
dem derzeit verwendeten Musterkatalog und der erzielten Vergleichsergebnisse jedoch weder erforderlich noch erwünscht.
Der Vergleich der markierten molekularen Strukturen kann mit einer hohen Präzision durchgeführt werden. Wie die Testresultate belegen, erfolgt die Korrespondenzbildung von funktionellen Gruppen, Atomen und Bindungen nachvollziehbar und,
unter strukturellen Gesichtspunkten, durchaus sinnvoll. Bei der Auswertung bestätigte sich die Vermutung, dass bei Mehrdeutigkeit bezüglich der Zuordnung der Elemente keine Korrespondenzbildung erfolgt, auch wenn die Ähnlichkeitswerte oberhalb des definierten Schwellwerts liegen. Durch die Verwendung der funktionellen
Gruppen kann diese Mehrdeutigkeit jedoch auf ein Minimum reduziert werden, da
mit deren Hilfe aussagekräftige Substrukturen geschaffen werden, die diese Aussagekraft auf die Atome und Bindungen der Gruppen übertragen. Der Grundgedanke,
durch den Einsatz funktioneller Gruppen in Verbindung mit den weniger häufig vorkommenden Atomtypen genügend Fixpunkte für den Vergleichsalgorithmus zu
schaffen, konnte durch die Vergleichsergebnisse bestätigt werden. Beim Vergleich
von Molekülen, bei denen mehrere Fixpunkte als Ausgangspunkt für die Korrespondenzbildung genutzt werden können, fällt auf, dass häufig Teilstücke des einen Graphen korrekt auf Substrukturen des anderen Graphen abgebildet werden. Diese Teilgraphen werden in jeder Iteration weiterentwickelt und treffen schließlich aufeinander, wobei sie allerdings häufig nicht korrekt zusammenpassen, was in einigen nichtzugeordneten Knoten an den Schnittstellen resultiert. Durch diesen Sachverhalt kann
es vorkommen, dass beispielsweise die Ringstruktur eines Moleküls mit einem hohen
Ähnlichkeitswert auf eine linear verkettete Struktur eines anderen Moleküls abgebildet wird, da lediglich die Verbundstelle des Ringsystems nicht abgebildet werden
kann. In den durchgeführten Tests erwies sich diese Problematik jedoch angesichts
67
6.4 Evaluierung der Ergebnisse
der höheren Ähnlichkeitswerte für Strukturen, die tatsächlich Ringsysteme enthielten,
als nicht gravierend.
Beim Vergleich einer Anfragestruktur mit allen Molekülen des Datenbestands
zeigt sich grundsätzlich, dass in jedem Testlauf die identische Anfragestruktur mit
einem Ähnlichkeitswert von 1,0 entdeckt und an der Spitze des Ähnlichkeitsranking
angeordnet wird. Für die weitere Ergebnismenge konnte festgestellt werden, dass die
Moleküle mit den höchsten Ähnlichkeitswerten sowohl optisch „auf den ersten
Blick“, als auch in der detaillierten Betrachtung, eine hohe Ähnlichkeit zu der Anfragestruktur aufwiesen. Die festgestellten Schwankungen innerhalb des Rankings zwischen den einzelnen Testläufen können jedoch ein Problem darstellen, sofern lediglich eine einzige Anfrage auf den Datenbestand als repräsentativ ausgewertet wird.
Hierbei könnten sehr ähnliche Moleküle aufgrund einer ungünstigen Korrespondenzbildung mit einem geringeren Ähnlichkeitswert aus den Top-Platzierungen verschwinden. Werden mehrere Durchläufe der Anfrage bearbeitet, so steigt die Wahrscheinlichkeit, dass eine geeignete Überlagerung der Strukturen wenigstens einmalig
zu einem hohen Ähnlichkeitswert führt und die Struktur somit weiter oben angeordnet wird. Durch die Einbeziehung der Set-Ähnlichkeit kann die Stabilität des Rankings ebenfalls erhöht werden, da sich dieser Ähnlichkeitswert aufgrund der reinen
Mengen-Ähnlichkeit der Restelemente unabhängig von der genauen Korrespondenzbildung meist nicht verändert. Es zeigte sich aber auch, dass Strukturen, die zufällig
eine ähnliche Restmenge aufweisen, selbst bei einer geringen strukturellen Ähnlichkeit eine hohe Platzierung erreichen können, so dass sich eine zu hohe Gewichtung
der Set-Ähnlichkeit als kontraproduktiv erweisen kann. Wie die Testergebnisse der
unterschiedlichen Konfigurationen gezeigt haben, kann durch diese entscheidend auf
die ermittelten Ähnlichkeitswerte Einfluss genommen werden. Der derzeitige Fokus
liegt auf einer strukturellen Überlagerung. Es ist jedoch auch denkbar, durch eine
höhere Gewichtung der funktionellen Gruppen und eine primäre Auswertung der
Gruppenüberlagerung eine Übereinstimmung der Gruppen in den Mittelpunkt zu stellen, was je nach Aufgabenstellung unter biochemischen Aspekten von Vorteil sein
kann.
Die Laufzeit für den Vergleich der Anfragestruktur mit dem gesamten Datenbestand ist mit etwa anderthalb Minuten für 1.000 Moleküle auf dem Testsystem recht
hoch und somit nicht gut geeignet, um den gesamten Inhalt der Datenbank effizient
zu vergleichen. Problematisch stellt sich in Bezug auf die Bearbeitung des gesamten
Datenbestands auch die Speicherkapazität dar. Bei der verwendeten SiDiff-Version
können selbst durch eine Reinitialisierung der internen Strukturen und explizite Garbage Collection einige Speicherbereiche nicht freigegeben werden, wodurch der belegte Speicher mit zunehmender Vergleichszahl immer weiter zunimmt und schließlich bei etwa 3.000 Molekülen auf dem Testsystem sein Maximum erreicht. Für eine
Abarbeitung der gesamten Datenbank wäre somit ein wiederholtes externes Aufrufen
erforderlich. In Bezug auf den detaillierten Vergleich zweier Moleküle lässt sich jedoch feststellen, dass hierfür nur wenige hundert Millisekunden erforderlich sind, so
68
6.4 Evaluierung der Ergebnisse
dass der SiDiff-Algorithmus effizient genutzt werden kann, um eine schnelle strukturelle Überlagerung zu berechnen.
69
7 Zusammenfassung und
Ausblick
In dieser Arbeit wurde ein Verfahren vorgestellt, mit dem molekulare Graphen in
zweidimensionaler Darstellung strukturell miteinander verglichen werden können.
Die hierzu erforderlichen Komponenten des Vergleichswerkzeugs sowie die relevanten Grundlagen der chemischen Strukturen wurden zunächst identifiziert und detailliert beschrieben, woraus anschließend die vorzunehmenden Anpassungen hergeleitet
werden konnten.
Bedingt durch die Eigenschaften molekularer Graphen wurde eine Anreicherung
der reinen Strukturinformationen mit funktionellen Gruppen vorgenommen. Für die
Wahl eines geeigneten Algorithmus wurden Charakteristika der Molekülstrukturen
sowie der zu ermittelnden funktionellen Gruppen herausgearbeitet und evaluiert. Der
resultierende Algorithmus zur Mustersuche basiert auf einem rekursiven Ansatz zur
paarweisen Abbildung der Musterelemente auf Elemente des Graphen. Die Speicherung der mit Gruppeninformationen angereicherten Graphen erfolgte mithilfe eines
auf der CML basierenden Dateiformats.
Für den strukturellen Vergleich der Moleküle wurde der SiDiff-Algorithmus verwendet. Zur Unterstützung der Molekülstrukturen wurden die erforderlichen Konfigurationsdateien ermittelt, beschrieben und angepasst. Um der Schwierigkeit bei der
Korrespondenzbildung zu begegnen, wurde eine auf der SiDiff-Ähnlichkeit basierende alternative Ähnlichkeitsmetrik entwickelt. Eine weitere Anpassung umfasste die
Anwendung des Algorithmus auf einen Datenbestand von Dokumenten, da das
Werkzeug in der vorliegenden Version ausschließlich für den direkten Vergleich
zweier Dokumente ausgelegt war.
Die abschließenden Tests bestätigten, dass die Markierung funktioneller Gruppen
auf den verwendeten molekularen Graphen effizient durchgeführt werden kann.
Durch die Anreicherung der Graphen mit Gruppen konnte für den Vergleichsalgorithmus eine ausreichende Anzahl an Einstiegsstellen geschaffen werden, so dass die
verglichenen Moleküle strukturell sinnvoll aufeinander abgebildet werden. Für den
Vergleich eines Anfragemoleküls mit einem Datenbestand von Molekülen mit dem
Ziel, die ähnlichsten Strukturen zu ermitteln, ergab sich eine zufriedenstellende Reihenfolge der Ergebnismoleküle. Die im Rahmen dieser untersuchten Anfrageart festgestellten Problematiken bezüglich Speicherfreigabe und einer hohen Laufzeit zeigten
jedoch, dass der Algorithmus für den Vergleich mit Datenbeständen derzeit noch
nicht effizient eingesetzt werden kann.
Basierend auf den gewonnenen Erkenntnissen erscheint ein Einsatz des Werkzeugs
zum Vergleich molekularer Strukturen prinzipiell möglich. Besonders für die Ermittlung von, zu einer Anfragestruktur ähnlichen, Molekülen, die über möglichst identische funktionelle Gruppen sowie eine hohe strukturelle Ähnlichkeit verfügen, kann
70
7 Zusammenfassung und Ausblick
der SiDiff-Algorithmus verwendet werden. In Bezug auf die Ermittlung von Strukturen, bei denen bestimmte Schlüsselstellen unbedingt erforderlich sind, wäre auch ein
modifizierter Einsatz von Gruppenmarkierung und Molekülvergleich denkbar. Da der
Algorithmus zur Markierung funktioneller Gruppen beliebige Muster markieren kann,
könnten in einem ersten Schritt die erforderlichen Schlüsselstellen exklusiv als neue
Muster im Datenbestand markiert werden. Alle Strukturen, in denen diese Schlüsselstellen ermittelt werden können, könnten anschließend strukturell mit SiDiff überlagert werden. Die Ergebnismenge würde alle Strukturen umfassen, die identische
Schlüsselstellen sowie eine hohe strukturelle Ähnlichkeit aufweisen.
Eine zukünftige Weiterentwicklung erscheint besonders im Bereich der Laufzeitoptimierung bei der Anfrage auf einen Datenbestand sinnvoll. Einen möglichen Ansatzpunkt bietet die im Rahmen dieser Arbeit bereits erwähnte Datenstruktur des S3VBaums (vgl. [Tre07]). Durch die Organisation der Datenbestandsmoleküle in einem
multidimensionalen Baum, der entsprechend der Art und Anzahl der markierten funktionellen Gruppen aufgebaut wird, ließe sich bereits vor Beginn des Vergleichsprozesses die Menge der zu vergleichenden Moleküle stark einschränken. Da mithilfe
dieser Datenstruktur über Bereichsanfragen der zu bearbeitende Suchraum stark verkleinert werden könnte, würden weniger Einzelvergleiche erforderlich und somit die
Gesamtlaufzeit sehr wahrscheinlich reduziert. Voraussetzung für diesen Ansatz ist,
dass die markierten funktionellen Gruppen alleine einen sinnvollen Indikator für die
Ähnlichkeit der Strukturen darstellen, was zuvor entsprechend zu prüfen ist.
Zur Erhöhung der Vergleichspräzision könnten an zwei Stellen Weiterentwicklungen vorgenommen werden. Durch eine Umgestaltung des Algorithmus zur Markierung funktioneller Gruppen könnten weitere Muster markiert werden, die eine hohe
Aussagekraft beim Vergleichsprozess besitzen (vgl. Kapitel 6.4 ). Dazu wäre es erforderlich für Muster eine Priorität definieren zu können, die unabhängig von ihren
jeweiligen Startatomen zu einer alternativen Reihenfolge der Musterüberprüfung
führt. Somit könnten gerade die ausdrucksstarken polyzyklischen Kohlenstoffringe
getestet und markiert werden, bevor durch die Markierung von Mustern mit anderen
Startatomen deren Bestandteile „belegt“ werden.
Die Anreicherung der molekularen Graphen mit zusätzlichen chemischen Eigenschaften erscheint im Hinblick auf eine sinnvollere Überlagerung, gerade unter chemischen Gesichtspunkten, ebenfalls aussichtsreich. Basierend auf den markierten
Gruppen könnten an diese zusätzliche Attribute, wie beispielsweise die Elektronegativität oder das Atomvolumen, gehängt werden, ähnlich den eingesetzten Eigenschaften bei Feature Trees. Für den Gruppenvergleich würden somit neben dem Namen
weitere Eigenschaften ausgewertet, was eine mögliche Nutzung dieser Gruppen als
Fixpunkte weiter unterstützt. Zudem wird die Überlagerung der Gruppen unter chemischen Aspekten deutlich präziser und aussagekräftiger.
71
A Katalog funktioneller Gruppen
Gruppen mit Kohlenstoff
ID
Verbindungsklasse
Gruppenname
Struktur
Enthalten in
1
Alkane
Alkane
54
2
Alkene
Alkene
53
3
Alkine
Alkine
52
4
Benzen
Benzen
5
Toluol
Toluol
5
Rang
51
50
Gruppen mit Halogen
ID
Verbindungsklasse
Gruppenname
Struktur
Enthalten in
Rang
7
Fluoroalkane
Fluoro
45
8
Chloroalkane
Chloro
44
9
Bromoalkane
Bromo
43
10
Iodoalkane
Iodo
42
72
A Katalog funktioneller Gruppen
Gruppen mit Sauerstoff
ID
Verbindungsklasse
Gruppenname
12
Alkohole
13
Struktur
Enthalten in
Rang
Alkohole
17, 20, 46,
47, 50
40
Ketone
Ketone
14, 15, 16,
17, 19, 22,
31
39
14
Aldehyde
Aldehyde
35
15
Carbonate
Carbonate
34
16
Carboxylate
Carboxylate
17
Carboxylsäure
Carboxylsäure
18
Ether
Ether
12, 15, 17,
19, 20, 21,
34, 38, 40
41
19
Ester
Ester
17, 15
37
20
Hydroperoxide
Hydroperoxide
21
36
21
Peroxide
Peroxide
Defined as
RC(=O)O
17, 15, 19
38
33
32
73
A Katalog funktioneller Gruppen
Gruppen mit Stickstoff
ID
Verbindungsklasse
Gruppenname
22
Amide
Amide
23
23
Primaere Amine
22
24
Sekundaere
Amine
23
28
Tertiaere Amine
22, 23, 24,
31
31
25
Amine
26
Quarternäre
Amine
27
Imine
Struktur
Enthalten in
Rang
21
30,43
30
Imine
30
Aldimine
27
31
Imide
Imide
20
32
Azide
Azide
19
33
Azoverbindungen
Azo
34
Cyanate
Cyanate
32
26
18
74
A Katalog funktioneller Gruppen
ID
Verbindungsklasse
Gruppenname
35
Isonitrile
Isonitrile
17
Isocyanate
16
Isothiocyanate
15
14
36
Struktur
Enthalten in
Rang
Isocyanate
37
38
Nitrate
Nitrate
39
Nitrile
Nitrile
40
Nitrite
Nitrite
41
Nitroverbindung
Nitro
38
25
42
Nitrosoverbindung
Nitroso
40, 41, 38
29
43
Pyridin
Pyridyl
Defined as
Pyridyl I/II/III
12
53
24
13
75
A Katalog funktioneller Gruppen
Gruppen mit Phosphor
ID
Verbindungsklasse
Gruppenname
44
Phosphine
45
Struktur
Enthalten in
Rang
Phosphino
45, 46, 47
11
Phosphate
Phosphate
46, 47
10
46
Phosphonsäure
Phosphonsaeure
47
9
47
Phosphate
Phosphate II
8
Gruppen mit Schwefel
ID
Verbindungsklasse
Gruppenname
48
Sulfide
49
Struktur
Enthalten in
Rang
Sulfide
49, 50, 51,
52, 53, 54
7
Sulfone
Sulfone
50
5
50
Sulfonsäure
Sulfonsaeure
51
Sulfoxide
Sulfoxide
50, 49
6
52
Thiol
Thiol
53, 54
4
53
Thiocyanate
Thiocyanate
2
54
Disulfide
Disulfide
1
3
76
A Katalog funktioneller Gruppen
Polyzyklische Kohlenstoffstrukturen
ID
Verbindungsklasse
Gruppenname
60
Naphtalin
61
62
63
Charakteristik
Rang
Naphtalin
I-VI
entsprechend
R-Bindung
49
Anthracen
Anthracen
I-X
entsprechend
R-Bindung
48
Phenanthren
Phenanthren
I-XX
entsprechend
R-Bindung
47
Phenalen
I-IX
entsprechend
R-Bindung
46
Phenalen
Struktur
Quellen zur Erstellung des Musterkatalogs: [Str96], [Lip08] und [Hel74]
77
B Algorithmus zur Markierung
funktioneller Gruppen
private boolean compareAtoms(Atom moleculeAtom, Atom patternAtom)
{
boolean atomsMatch = false;
if(patternAtom.isWildcard()){
markAndBindMolecules(moleculeAtom,patternAtom);
return true;
}
/** Check the bonds that are connected to these atoms */
if(/** Elementtyp gleich und noch nicht in Compound */) {
markAndBindMolecules(moleculeAtom,patternAtom);
/** Remind last bond that was put on the queue */
Vector<Bond> patternBonds = patternAtom.getBonds();
boolean bondMissing = false;
for(int i=0;i<patternBonds.size() && bondMissing == false;i++) {
Bond patternBond = patternBonds.elementAt(i);
if(patternBond.isVisited() == false) {
Vector<Bond> candidatesMolecule = getCandidates(moleculeAtom, patternAtom,
patternBond);
Vector<Bond> candidatesPattern = getCandidates(patternAtom, patternAtom,
patternBond);
if(candidatesMolecule.size() >= candidatesPattern.size()) {
/** Positions are number of pattern candidates, numbers are positions of
molecule candidates */
int[] mappingCandidates = new int[candidatesPattern.size()];
for(int j=0;j<mappingCandidates.length;j++) {
mappingCandidates[j] = -1;
}
boolean complete = false;
boolean invalid = false;
for(int j=0;j<candidatesPattern.size() && complete == false && invalid ==
false;) {
int k = (mappingCandidates[j]+1);
Bond bondPattern = candidatesPattern.elementAt(j);
/** Visit every bond in pattern and check candidates in molecule */
if(bondPattern.isVisited() == false) {
boolean match = false;
for(;k<candidatesMolecule.size() && match == false;) {
Bond bondMolecule = candidatesMolecule.elementAt(k);
Atom moleculeChild = bondMolecule.getConnectedAtom(moleculeRoot);
Atom patternChild = bondPattern.getConnectedAtom(patternRoot);
if(/** Bindungen noch nicht bearbeitet */) {
markAndBindBonds(bondPattern,bondMolecule);
match = compareAtoms(moleculeChild, patternChild);
if(match == true) {
mappingCandidates[j] = k;
j++;
if(j == candidatesPattern.size()) complete = true;
}
else {
unbindBonds(bondPattern,bondMolecule);
k++;
if(k == candidatesMolecule.size()) {
mappingCandidates[j] = -1;
j--;
if(j == -1) {
invalid = true;
unbindMolecules(moleculeAtom,patternAtom);
}
78
B Algorithmus zur Markierung funktioneller Gruppen
else {
int indexMoleculeToRemove = mappingCandidates[j];
int indexPatternToRemove = j;
/** hole Bindungen und Atome aus vorangegangenen Zuordnungen
* und setze sie und alle folgenden zurück */
}
}
}
}
else {
if(/** Atome besucht, Kanten jedoch nicht -> Zyklus */) {
markAndBindBonds(bondMolecule,bondPattern);
match = true;
mappingCandidates[j] = k;
j++;
if(j == candidatesPattern.size()) {
complete = true;
}
}
else {
k++;
if(k == candidatesMolecule.size()) invalid = true;
}
}
}
}
else j++;
}
if(invalid == true) bondMissing = true;
}
else bondMissing = true;
}
}
if(bondMissing == true) {
/** Entferne Zuordnung für Atompaar und alle nachträglichen Zuordnungen */
atomsMatch = false;
}
else atomsMatch = true;
}
return atomsMatch;
}
79
C Testergebnisse
Gruppenmarkierung
Testläufe mit speziellen Teststrukturen
Testmoleküle
Testmolekül 1
Testmolekül 2
Testmolekül 3
SMILES:
C(CC)=O
SMILES:
C(CC(C=O)=[S]=O)=O
SMILES:
C(C)(C(C(C(N)P)=S)
=O)=O
Testmolekül 4
Testmolekül 5
Testmolekül 6
SMILES:
S(C=[O](CN)C)C
=[O](C)C
SMILES:
C[O](C)=CSC=[O]1CCNC1
SMILES:
[S]12(C=[O](CN)CC1)
C=[O](C)CC2
Testmolekül 7
Testmolekül 8
Testmolekül 9
SMILES:
O=C1CC(=O)C1
SMILES:
O=C1CC(=O)N1
SMILES:
O=C(CC(=O)C)C
80
C Testergebnisse Gruppenmarkierung
Testmuster
Name
SMILES
Struktur
Charakteristik
CO-group
C=O
Part of group 3, 5, 6, 7,
9; Starting atom C
SO-group
S=O
Starting atom S
OCC- group
O=CC
Part of group 6, 7, 9;
Containing group 1;
Starting atom O
CNP- group
C(N)P
Starting atom C
COS- group
C(=O)S
Containing group 1;
Starting atom C
OCCC- group
O=C(C)C
Part of group 9; Containing group 1, 3;
Starting atom O
COCC- group
C=[O](C)C
Containing group 1, 3;
Starting atom C
OCNCC- group
O1CNCC1
Starting atom O
OCCCC- group
O=C1CCC1
Containing group 1, 3,
6; Starting atom O
RSR- group
[Re]S[Re]
Starting atom S; Containing WildcardElements (Re)
81
C Testergebnisse Gruppenmarkierung
Testläufe
Strukturen ohne Zyklen
Musterart
Molekül
Markierte
Gruppen
Muster mit
2 Atomen
Molekül 1
CO-Group
Molekül 2
CO-group,
CO-group,
SO-group
Molekül 3
CO-group,
CO-group
Molekül 4
CO-group,
CO-group
Molekül 1
OCC-group
Molekül 2
OCC-group,
OCC-group
Molekül 3
CNP-group,
OCC-group,
OCC-group
Molekül 4
COS-group
Molekül 1
-
Molekül 2
-
Muster mit
3 Atomen
Muster mit
4 Atomen
Struktur
82
C Testergebnisse Gruppenmarkierung
Musterart
Molekül
Markierte
Gruppen
Molekül 3
OCCC-group
Molekül 4
COCC-group,
COCC-group
Molekül 1
CO-group
Molekül 2
CO-group,
CO-group,
SO-group
Molekül 3
CNP-group,
CO-group,
CO-group
Molekül 4
COCC-group,
COCC-group
Molekül 1
OCC-group
Molekül 2
OCC-group,
OCC-group,
SO-group
Molekül 3
CNP-group,
OCCC-group
Molekül 4
COCC-group,
COCC-group
Struktur
Muster mit
4 Atomen
Gruppen mit
2, 3 und 4 Atomen
Gruppen mit
2, 3 und 4 Atomen
und
Musterdefinitionen,
die mit den
seltensten Atomen
beginnen (S,O)
83
C Testergebnisse Gruppenmarkierung
Strukturen mit Zyklen
Musterart
Molekül
Markierte
Gruppen
Molekül 5
COCC-group,
COCC-group
Molekül 6
COCC-group,
COCC-group
Molekül 7
OCCC-group,
CO-group
Molekül 8
OCC-group,
CO-group
Molekül 5
COCC-group,
COCC-group
Struktur
Gruppen mit
2, 3 und 4 Atomen
Gruppen mit
2, 3 und 4 Atomen
und
zyklischen Mustern
COCC-group,
COCC-group
Molekül 6
84
C Testergebnisse Gruppenmarkierung
Musterart
Gruppen mit
2, 3 und 4 Atomen
und
zyklischen Mustern
Gruppen mit
2, 3 und 4 Atomen
und
Wildcard-Element
Molekül
Markierte
Gruppen
Molekül 7
OCCCCgroup
Molekül 8
OCC-group,
CO-group
Molekül 1
CO-group
Molekül 2
CO-group,
CO-group,
SO-group
Molekül 3
CNP-group,
CO-group,
CO-group
Molekül 4
COCC-group,
COCC-group
Molekül 5
COCC-group,
COCC-group
Molekül 6
COCC-group,
RSR-group
Struktur
85
C Testergebnisse Gruppenmarkierung
Musterart
Gruppen mit
2, 3 und 4 Atomen
und
Wildcard-Element
Molekül
Markierte
Gruppen
Molekül 7
OCCCCgroup
Molekül 8
OCC-group,
CO-group
Molekül 9
OCCC-group,
CO-group
Struktur
86
C Testergebnisse Gruppenmarkierung
Testläufe mit Molekülen des Datenbestands
Nr
Markierte
Gruppen
5
2 Alkane,
2 Alkene,
2 Ketone,
1 Primäre
Amine
8
2 Alkane,
2 Alkene,
2 Ketone,
1 Nitro
457
3 Alkane,
1 Alkene,
2 Ketone,
1 Primäre
Amine
529
2 Alkane,
2 Alkene,
1 Alkohol,
1 Carboxylsäure,
1 Amide
Struktur
Struktur (markiert)
87
C Testergebnisse Gruppenmarkierung
Laufzeiten für Gruppenmarkierung
Laufzeit (in s)
Anzahl Moleküle
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
Testlauf 1
Testlauf 2
Testlauf 3
Testlauf 4
Mittelwert
11
22
31
42
51
64
73
84
91
102
11
22
31
42
54
62
74
84
94
104
10
22
30
42
53
63
74
85
92
102
11
22
30
42
52
61
74
83
92
102
10,75
22
30,5
42
52,5
62,5
73,75
84
92,25
102,5
Molekül
#Atome
#Bindungen
#Gruppen
Größe
Mittlere Laufzeit
(in ms)
molecule7488
9
8
2
sehr klein
15,8
molecule9734
11
10
2
sehr klein
15,4
molecule3194
10
9
6
sehr klein
15,6
molecule7926
19
19
5
klein
15,6
molecule3670
21
20
7
klein
15,6
molecule4111
23
23
7
klein
18,6
molecule8646
28
29
5
mittel
19
molecule5
26
28
7
mittel
22,4
molecule6793
27
28
7
mittel
22,2
molecule529
30
31
7
mittel
16
molecule5892
36
35
9
groß
47
molecule 6838
38
38
14
groß
25
molecule2280
46
45
14
groß
19
molecule6842
45
45
16
groß
22
molecule9366
64
63
20
sehr groß
22
molecule8234
76
75
25
sehr groß
25
molecule7562
104
109
40
sehr groß
34,4
molecule7561
198
208
48
sehr groß
81,6
molecule3573
230
235
70
sehr groß
78,2
88
D Testergebnisse
Molekülvergleich
Getestete Konfigurationen
Model
Compound
Atom
Bond
Attribut
V
Attribut
V
Attribut
V
Attribut
V
K1
threshold
compounds
1.0
1.0
threshold
name
O:atoms
O:bonds
0.8
0.5
0.25
0.25
threshold
elementType
I:target
0.2
0.6
0.4
threshold
O:target
0.4
1.0
K2
threshold
compounds
1.0
1.0
threshold
name
O:atoms
O:bonds
0.8
0.5
0.25
0.25
threshold
elementType
I:target
0.2
0.6
0.4
threshold
order
O:target
0.8
0.5
0.5
K3
threshold
compounds
1.0
1.0
threshold
name
O:atoms
O:bonds
0.8
0.5
0.25
0.25
threshold
elementType
I:target
0.6
0.6
0.4
threshold
order
O:target
0.8
0.5
0.5
K4
threshold
compounds
1.0
1.0
threshold
name
O:atoms
O:bonds
0.8
0.5
0.25
0.25
threshold
elementType
I:target
0.6
0.6
0.4
threshold
O:target
0.2
1.0
K5
threshold
compounds
1.0
1.0
threshold
name
O:atoms
O:bonds
0.5
0.5
0.25
0.25
threshold
elementType
I:target
I:target/
O:target
0.6
0.6
0.3
0.1
threshold
order
O:target
O:target/
I:target
0.8
0.5
0.4
0.1
K6
threshold
compounds
1.0
1.0
threshold
name
O:atoms
O:bonds
0.5
0.5
0.25
0.25
threshold
elementType
I:target
I:target/
O:target
0.5
0.5
0.4
0.1
threshold
order
O:target
O:target/
I:target
0.6
0.5
0.3
0.2
89
D Testergebnisse Molekülvergleich
K7
K8
Model
Attribut
V
threshold
1.0
compounds 1.0
Compound
Attribut
V
threshold
0.5
name
0.5
O:atoms 0.25
O:bonds 0.25
Atom
Attribut
threshold
elementType
I:target
V
0.5
0.5
0.5
threshold
compounds
threshold
name
O:atoms
O:bonds
threshold
elementType
I:target
0.6
0.6
0.4
1.0
1.0
0.5
0.5
0.25
0.25
Bond
Attribut
threshold
order
O:target
O:target/
I:target
V
0.6
0.5
0.3
0.2
threshold
order
O:target
0.8
0.5
0.5
90
D Testergebnisse Molekülvergleich
Testläufe mit speziellen Teststrukturen
Testläufe
Kategorie
Zyklenfreie
Strukturen ohne
funktionelle
Gruppen
Molekül 1
Molekül 2
Ergebnis
Komplett zugeordnet
Unentscheidbare
„S“-Atome am Ende
nicht zugeordnet
„N“- und „F“Unterschied nicht
zugeordnet, letztes
„S“-Atom dahinter
auch nicht
„N“- und „F“Unterschied nicht
zugeordnet
Unentscheidbare
„SSB“-Zweige nicht
zugeordnet
„N“- und „F“Unterschied nicht
zugeordnet
Zyklische
Strukturen
ohne
funktionelle
Gruppen
Komplett zugeordnet
Komplett zugeordnet
Erstes „C“-Atom und
Zyklus nicht zugeordnet
91
D Testergebnisse Molekülvergleich
Kategorie
Zyklische
Strukturen
ohne
funktionelle
Gruppen
Molekül 1
Molekül 2
Ergebnis
Komplett zugeordnet
Komplett zugeordnet
„C“-Atome in Zyklus
außer dem ersten
nicht zugeordnet
Alle Strukturen
und
funktionelle
Gruppen
Komplett zugeordnet
„C“-Atom im Zentrum nicht zugeordnet
Mit
ParentForceMatch
Komplett zugeordnet
Komplett zugeordnet
Komplett zugeordnet
Komplett zugeordnet
Bis auf „FC“/„CN“Unterschied zugeordnet
Bis auf „FC“/„CN“Unterschied zugeordnet
92
D Testergebnisse Molekülvergleich
Testläufe mit Molekülen des Datenbestands
Beispielüberlagerung zweier Strukturen
Molekül 5
Molekül 529
Molekül 5
Molekül 457
93
D Testergebnisse Molekülvergleich
Testläufe 1.000 Moleküle
Anfragestruktur Molekül 8
Molekül 503
Molekül 605
Molekül 457
0.8705
Molekül 124
0.8292
Molekül 395
0.8588
Molekül 5
0.8292
0.8241
0.8205
94
D Testergebnisse Molekülvergleich
Anfragestruktur Molekül 457
Molekül 5
Molekül 605
Molekül 463
0.9625
Molekül 503
0.875
Molekül 529
0.8571
Molekül 8
0.8311
0.8287
0.817
95
D Testergebnisse Molekülvergleich
Testläufe 2.000 Moleküle
Anfragestruktur Molekül 529
Molekül 530
Molekül 5
Molekül 1548
0.885
Molekül 533
0.8826
Molekül 1540
0.8604
Molekül 486
0.8589
0.8571
0.8556
96
D Testergebnisse Molekülvergleich
Anfragestruktur Molekül 111
Molekül 756
Molekül 1180
Molekül 1475
0.8909
Molekül 1451
0.8571
Molekül 1340
0.8571
Molekül 171
0.8545
0.8448
0.8235
97
D Testergebnisse Molekülvergleich
Testläufe 10.000 Moleküle
Anfragestruktur Molekül 1180
Molekül 756
Molekül 9623
Molekül 6138
0.9059
Molekül 5032
0.8925
Molekül 9301
0.8907
Molekül 111
0.88
0.8761
0.8571
98
D Testergebnisse Molekülvergleich
Anfragestruktur Molekül 8044
Molekül 8052
0.8648
Molekül 4712
0.7007
Molekül 8064
Molekül 8061
0.8
Molekül 2716
Molekül 2712
0.7
0.7
Molekül 3632
0.6956
Molekül 2223
0.6935
Molekül 4813
0.6715
0.6666
99
D Testergebnisse Molekülvergleich
Laufzeiten für Molekülvergleiche
Konfiguration
Mittlere Laufzeit für Vergleich 2000 Moleküle (in s)
K1
K2
K3
K4
K8
187,4333333
188,8
190,5
196,4
184,2
Laufzeit (in s)
Anzahl Moleküle
500
1.000
1.500
2.000
2.500
L1
L2
L3
L4
L5
L6
Mittelwert
53
105
151
198
261
53
103
152
200
252
52
98
148
193
245
52
99
145
191
242
55
105
152
203
252
56
107
152
203
255
53,5
102,83
149
195,5
250
100
Literaturverzeichnis
[Abo08]
About NCI/CADD Group. (2008). Abgerufen am 8. November 2008
von National Cancer Institute/CADD Group:
http://cactus.nci.nih.gov/ncicadd/about.html
[Ato08]
Atomic Coordinate Entry Format Description. (2008). Abgerufen am
5. November 2008 von Worldwide Protein Data Bank:
http://www.wwpdb.org/documentation/format3.1-20080211.pdf
[Ben08]
Bender, T. (2008). Spezifikation der SiDiff-Compare-Konfiguration.
Praktische Informatik. Universität Siegen.
[Ber07]
Berlik, S., & Fathi, M. (2007). Differences of Structured Documents Improving their Quality. IEEE International Conference on
Information Reuse and Integration, (S. 486-491).
[Blu06]
Blumenthal, G., Linke, D., & Vieth, S. (2006). Chemie - Grundwissen
für Ingenieure. Wiesbaden: Teubner Verlag.
[Bra94]
Brandstädt, A. (1996). Graphen und Algorithmen. Teubner Verlag.
[CAS08]
CAS REGISTRY and CAS Registry Numbers. (2008). Abgerufen am 6.
November 2008 von CAS - A division of the American Chemical
Society: http://www.cas.org/expertise/cascontent/registry/regsys.html
[Che082] Chemical Structure Lookup Service 2008. (2008). Abgerufen am 7.
November 2008 von National Cancer Institute:
http://cactus.nci.nih.gov/cgi-bin/lookup/search
[Che08]
Chemie für Mediziner: Funktionelle Gruppen. (2008). Abgerufen am
9. November 2008 von Chemgaroo:
http://www.chemgapedia.de/vsengine/vlu/vsc/de/ch/4/cm/funktgruppe
n.vlu.html
101
Literaturverzeichnis
[Che081] Cheng, J., Yu, J. X., Ding, B., Yu, P. S., & Wang, H. (2008). Fast
Graph Pattern Matching. IEEE 24th International Conference on Data
Engineering, (S. 913-922).
[CML03] CML Core Specification. (2003). Abgerufen am 5. November 2008
von OpenSource Site for CML:
http://cml.sourceforge.net/schema/cmlCore/HTMLDOCS/cmlCore.pdf
[Def08]
Definition "Wild card". (2008). Abgerufen am 8. November 2008 von
MSN Encarta:
http://encarta.msn.com/dictionary_1861713247/wild_card.html
[Int08]
Definitionen chemischer Begriffe. (2008). Abgerufen am 6. November
2008 von International Union of Pure and Applied Chemistry:
http://goldbook.iupac.org/M04002.html
[Dow08]
Downloadable Structure Files of NCI Open Database Compounds.
(2008). Abgerufen am 6. November 2008 von National Cancer
Institute/CADD Group:
http://cactus.nci.nih.gov/ncidb2/download.html
[Gad07]
Gad, A. (2007). Differenzbestimmung für Poseidon-UML-Diagramme.
Praktische Informatik. Universität Siegen.
[Gen081] Gene Ontology Homepage. (2008). Abgerufen am 6. November 2008
von Gene Ontology Homepage: http://www.geneontology.org/
[Gen08]
Glossar chemischer Begriffe. (2008). Abgerufen am 6. November 2008
von General Chemistry Online:
http://antoine.frostburg.edu/chem/senese/101/index.shtml
[Häd06]
Hädener, A., & Kaufmann, H. (2006). Grundlagen der organischen
Chemie. Basel: Birkhäuser Verlag.
[Hag80]
Hagenstein, Cleve, Hoyer, & Seeger. (1980). Chemie - Funktionelle
Gruppen.
102
Literaturverzeichnis
[Hel74]
Hellwinkel, D. (1974). Die systematische Nomenklatur der
Organischen Chemie. Berlin: Springer-Verlag.
[Hül08]
Hüllermeier, E. (2008). Vorlesung "Knowledge Discovery in
Structured Data: Methods and Applications in Bioinformatics".
Universität Marburg.
[Hüt06]
Hütt, M.-T., & Dehnert, M. (2006). Methoden der Bioinformatik - Eine
Einführung. Berlin Heidelberg: Springer Verlag.
[Jun94]
Jungnickel, D. (1994). Graphen, Netzwerke und Algorithmen.
Mannheim: BI-Wiss.-Verl.
[KEG08]
KEGG: Kyoto Encyclopedia of Genes and Genomes. (2008).
Abgerufen am 6. November 2008 von Kyoto Encyclopedia of Genes
and Genomes Homepage: http://www.genome.jp/kegg/
[Kel07]
Kelter, U. (2007). Begriffliche Grundlagen von Modelldifferenzen.
Lehrmodul Praktische Informatik. Universität Siegen.
[Kel071]
Kelter, U. (2007). Dokumentdifferenzen. Lehrmodul Praktische
Informatik. Universität Siegen.
[Kel05]
Kelter, U., Wehren, J., & Niere, J. (2005). A Generic Difference
Algorithm for UML Models. Software Engineering , S. 105-116.
[Koh07]
Kohlbacher, O. (2007). Vorlesung "Wirkstoffentwurf". Universität
Tübingen.
[Kro03]
Krone, O. (2003). Dokumentstruktur CML. Abgerufen am 6.
November 2008 von Diplomarbeit "Webfähige interaktive 3DVisualisierung von Proteinstrukturen: http://www-lehre.informatik.uniosnabrueck.de/~okrone/DIP/node30.html
[Lat08]
Latscha, H. P., Kazmaier, U., & Klein, H. A. (2008). Organische
Chemie - Basiswissen II. Berlin Heidelberg: Springer Verlag.
103
Literaturverzeichnis
[Lip08]
Lipkus, A. H., Yuan, Q., Lucas, K. A., Funk, S. A., Bartelt III, W. F.,
Schenck, R. J., et al. (2008). Structural Diversity of Organic
Chemistry. A Scaffold Analysis of the CAS Registry. Journal of
Organic Chemistry , S. 4443-4451.
[Mod08]
Model of Entrez Databases. (2008). Abgerufen am 8. November 2008
von National Center of Biotechnology Information:
http://www.ncbi.nlm.nih.gov/Database/datamodel/index.html
[MOF07] MOF 2.0/XMI Mapping. (2007). Abgerufen am 7. November 2008 von
Object Management Group: http://www.omg.org/docs/formal/07-1201.pdf
[Mol96]
Molecular surface and volume. (1996). Abgerufen am 5. November
2008 von Computational Chemistry List:
http://www.ccl.net/cca/documents/molecular-modeling/node5.html
[Mor08]
More on Structured Data Format (SDF). (2008). Abgerufen am 5.
November 2008 von U.S. Environmental Protection Agency:
http://www.epa.gov/ncct/dsstox/MoreonSDF.html
[Mül05]
Müller, M. (2005). Funktionelle Gruppen und Verbindungsklassen.
Abgerufen am 8. November 2008 von ChemPage:
http://www.chempage.de/down/folien/foliefunkt.pdf
[Ohs041] Ohst, D. (2004). Differenz- und Mischwerkzeuge für UML. Interner
Bericht Praktische Informatik. Universität Siegen.
[Ohs04]
Ohst, D., Welle, M., & Kelter, U. (2003). Differences between
Versions of UML Diagrams. ACM SIGSOFT Software Engineering
Notes, (S. 227-236).
[Ope08]
Open Babel: The Open Source Chemistry Toolbox. (2008). Abgerufen
am 6. November 2008 von Open Babel Homepage:
http://openbabel.org/wiki/Main_Page
104
Literaturverzeichnis
[Pol07]
Polanski, A., & Kimmel, M. (2007). Bioinformatics. Berlin
Heidelberg: Springer Verlag.
[Pro08]
Protein Data Bank Website. (2008). Abgerufen am 5. November 2008
von Worldwide Protein Data Bank: http://www.wwpdb.org/index.html
[Pub08]
PubChem Structure Search. (2008). Abgerufen am 5. November 2008
von National Center for Biotechnology Information:
http://pubchem.ncbi.nlm.nih.gov/search/search.cgi
[Rar98]
Rarey, M., & Dixon, J. S. (1998). Feature trees: A new molecular
similarity measure based on tree matching. Journal of Computer-Aided
Molecular Design , S. 471-490.
[Sch07]
Schmidt, M. (2007). SiDiff: generische, auf Ähnlichkeiten basierende
Berechnung von Modelldifferenzen. Praktische Informatik. Universität
Siegen.
[Str96]
Strazewski, P. (1996). Ausgewählte funktionelle Gruppen. Abgerufen
am 6. November 2008 von Vorlesungsunterlagen in organischer und
bioorganischer Chemie Universität Basel:
http://www.chemie.unibas.ch/~strazi/FunktionelleGruppen.pdf
[Tre07]
Treude, C. (2007). Einsatz multidimensionaler Suchstrukturen zur
Optimierung der Bestimmung von Dokumentdifferenzen. Praktische
Informatik. Universität Siegen.
[Ull76]
Ullmann, J. R. (1976). An Algorithm for Subgraph Isomorphism.
Journal of the ACM (JACM) , S. 31-42.
[Val97]
Valiente, G., & Martínez, C. (1997). An algorithm for graph patternmatching. Universität Bremen/Technical University of Catalonia.
[Var07]
Varró, G., Horváth, Á., & Varró, D. (2007). Recursive Graph Pattern
Matching With Magic Sets and Global Search Plans. Budapest
University of Technology and Economics.
105
Literaturverzeichnis
[Var061]
Varró, G., Varró, D., & Schürr, A. (2006). Incremental Graph Pattern
Matching. Budapest University of Technology and
Economics/Technical University of Darmstadt.
[Var06]
Varró, G., Varró, D., & Schürr, A. (2006). Incremental Graph Pattern
Matching: Data Structures and Initial Experiments. Budapest
University of Technology and Economics/Technical University of
Darmstadt.
[VIA08]
VIATRA2 Project Overview. (2008). Abgerufen am 7. November 2008
von VIATRA2 Homepage:
http://dev.eclipse.org/viewcvs/indextech.cgi/gmthome/subprojects/VIATRA2/index.html
[Weh04]
Wehren, J. (2004). Ein XMI-basiertes Differenzwerkzeug für UMLDiagramme. Praktische Informatik. Universität Siegen.
[Wes05]
Weskamp, N., Hüllermeier, E., Kuhn, D., & Klebe, G. (2007).
Multiple Graph Alignment for the Structural Analysis of Protein
Active Sites. IEEE/ACM Transactions on Computational Biology and
Bioinformatics (TCBB), (S. 310-320).
[Wie04]
Wiedmann, V. (2004). Hydrophobizität und Hydrophilität. Abgerufen
am 6. November 2008 von Lehrstuhl Bioinformatik Ruprecht-KarlsUniversität Heidelberg: http://www.bioinformatikwegweiser.de/Hydrophobizitaet.html
[Zim00]
Zimmermann, M., Rarey, M., & Lengauer, T. (2000). Multiple Feature
Trees: Virtuelles HTS auf der Basis mehrerer Anfragemoleküle. St.
Augustin.
106
ERKLÄRUNG
Hiermit versichere ich, dass ich die vorliegende Arbeit selbständig verfasst und keine
anderen als die angegebenen Quellen und Hilfsmittel benutzt habe, insbesondere keine anderen als die angegebenen Informationen aus dem Internet.
Diejenigen Paragraphen der für mich gültigen Prüfungsordnung, welche etwaige
Betrugsversuche betreffen, habe ich zur Kenntnis genommen.
Der Speicherung meiner Diplom-Arbeit zum Zweck der Plagiatsprüfung stimme
ich zu. Ich versichere, dass die elektronische Version mit der gedruckten Version inhaltlich übereinstimmt.
.........................................
(Ort, Datum)
.....................................................................
(Unterschrift des Verfassers)
107