Die für eine flexible Programmierschnittstelle zugänglichen und für die organische Synthese relevanten Informationen lassen sich in mehrere Gruppen einteilen.
Als Grundlegendes braucht eine Sprache, die molekulare Strukturen handhaben soll, natürlich genau wie eine konventionelle, compilierte Sprache Zugriff auf die Konnektivitätstabelle (connection table - CT) der chemischen Verbindung. In Standard-Hochsprachen wie C, Fortran und dgl. besteht diese Zugriffsmöglichkeit automatisch, da die CT als ein Datenkonstrukt in der jeweiligen Hochsprache implementiert wird. Für eine Interpretersprache wie tcl, die in ein Programm eingebettet ist, existiert dieser Zugriff nicht per se. Tcl muß über seine Sprachkonstrukte auf die Datenstruktur1 des einbettenden Programms zugreifen können. Das bedeutet z. B., ein Molekül wird vom Basisprogramm eingelesen und verwaltet, tcl erhält aber die Möglichkeit, auf diese Informationen zuzugreifen und - wie man noch sehen wird - u. U. diese sogar zu verändern.
Zu diesen grundlegenden Informationen gehören demnach solche Basisdaten wie die Zahl der Atome, Bindungen oder Einzelmoleküle; Identifikatoren (typischerweise Indices oder Labels) für einzelne Atome, Bindungen oder Moleküle, um gezielt Einzelinformationen für diese Objekte erhalten oder manipulieren zu können; Informationen zu Bindungsordnungen, der Atomart (chemisches Symbol, Ordnungszahl), formale Ladungen oder die Zahl freier Elektronen von Atomen. Eine vollständige Liste dieser Basisdaten umfaßt Tabelle 3 - 1.
Davon ableitbar sind eine ganze Reihe weiterer Informationen. Diese abgeleiteten Daten sollen tcl ebenfalls zur Verfügung stehen, jedoch vom zugrundeliegenden Programm (C/Fortran) ermittelt werden. Dazu gehören beispielsweise Informationen über Ringmitgliedschaften von Atomen und Bindungen oder die Aromatizitätsinformation. Diese Gruppe von Informationen wird in Tabelle 3 - 2 zusammengefaßt.
Desweiteren ist es erforderlich, daß die Interpretersprache (tcl) auch auf physikochemische Parameter zugreifen kann. Natürlich gilt hier aus Gründen der Geschwindigkeit ihrer Berechnung - wie für die vorangehenden abgeleiteten Informationen - daß diese Parameter nicht in tcl, sondern durch compilierte Funktionen des Kernsystems ermittelt werden. Unter diesen physikochemischen Parametern werden all jene Werte verstanden, die auch vom Programm PETRA2 ermittelt werden, insbesondere jedoch diejenigen, die in Tabelle 3 - 2 beschrieben werden. Tatsächlich werden beim Zugriff von tcl auf solche Informationen, die gleichen Routinen wie im PETRA Programm verwendet.
1 2 3 4 5 6 |
1 2 3 4 5 |
1 2 |
Eine letzte Gruppe an Informationen umfaßt Angaben zur zweidimensionalen Darstellung sowie Angaben zur räumlichen Gestalt von chemischen Strukturen. Es liegt auf der Hand, daß ein offenes Interpretersystem Zugang zu dreidimensionaler Molekülinformation haben muß, wenn es potentiell in der Lage sein soll, stereochemische Problemstellungen zu bearbeiten. Derartige Informationen benennt Tabelle 3 - 2.
1 |
Neben den voranstehend beschriebenen Informationseinheiten muß es tcl auch ermöglicht werden, grundsätzliche Operationen auf den chemischen Objekten durchzuführen. Einige Forderungen, bestimmte Eigenschaften von Atomen, Bindungen oder Molekülen ändern zu können (Schreibzugriff) finden sich bereits in den obenstehenden Tabellen. Das bedeutet, diese Informationen einstellen, sie setzten zu können. Demgegenüber steht die reine Abfrage von Informationen (Lesezugriff). Notwendig ist auch, bestimmte Objekte völlig zu entfernen bzw. neu zu kreieren.
1 |
Darüber hinaus sind auch weitere, höhere Operationen denkbar, die zum Sprachumfang einer chemietauglichen Skriptsprache gehören müssen, etwa die Suche nach einer Substruktur auf dem Molekülskelett. Natürlich ist man mit einer Sprache, die obige Elemente enthält, bereits in der Lage, diese Substruktursuche als Funktion zu implementieren. Jedoch kann es aus Geschwindigkeitsgründen geboten sein, derartige Funktionalität in den Sprachumfang aufzunehmen. Ein Beispiel ist das für tcl implementierte match Kommando. Dieses wird in den WODCA Bewertungsfunktionen für gefundene Ausgangsmaterialien benutzt, um maximale gemeinsame Substrukturen zwischen der Anfrageverbindung und den Treffern der Liste zu finden, die dann eingehender untersucht werden.
Fünf neue Kommandos sind ausreichend, um die in den voranstehenden Tabellen aufgeführten Funktionalitäten zu realisieren. Diese fünf Kommandos unterscheiden sich durch den Typ des Objektes, auf das sie einen Zugriff ermöglichen:
o
|
Atome
|
o
|
Bindungen
|
o
|
Ringe
|
o
|
(Einzel-)Moleküle. Das können auch Ionen sein.
|
o
|
Molekulare Ensembles. Ensembles können mehrere Moleküle/Ionen umfassen.
|
Jedes dieser Kommandos kennt mehrere, maximal vier Unterkommandos und zwar create|delete|get|set für atom und bond Kommando, delete|get für das mol und copy|get|set|need für das ens Kommando. In der Syntax folgt danach eine Spezifizierung des Datenblocks, auf dem das Kommando arbeiten soll. Dazu eine Anmerkung: In der auf Fortran77 basierenden EROS- und WODCA-Umgebung existieren drei wesentliche Speicherbereiche für vollständige Molekülinformation. An diese Speicherbereiche sind die Bezeichner VORHER, MOLINF, NACHER angelehnt. Äquivalent dazu sind die Bezeichner ens0, ens1, ens2. In einer anderen zugrundeliegenden Programmierumgebung, die andere, u. U. auch mehr als drei Speicherbereiche für Molekülinformationen kennt, kann das gleiche Syntaxmodell verwendet werden. Die Bezeichner ens0, ens1 ... ensn sind dann als Verweise auf die jeweiligen Datenblöcke dieser Umgebung zu verstehen. Für tcl ändert sich dadurch nichts.3
Eine dokumentarische Beschreibung der Funktionalität aller erlaubten Kombinationen findet sich in [90]. Die folgenden Zeilen geben einige instruktive Beispiele wieder.
Beispiel 1:
Im Datenblock dblock befinde sich Toluol (siehe Abb. 3 - 1). Das folgende Kommando informiert über die Zugehörigkeit der einzelnen Atome zu einem aromatischen System. Die Reihenfolge der Ausgabe entspricht der Reihenfolge der Atomnumerierung. Aromatische Atome erhalten eine Eins für die Gültigkeit, nicht-aromatische eine Null für die Ungültigkeit der Information.
' 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
Für das gleiche Beispielmolekül wird diesmal ermittelt, wieviel Wasserstoffatome dem Atom 7 (Label) benachbart sind.
' 3
Nun soll eine Bindung zwischen dem aliphatischen C-Atom (7) und einem seiner Wasserstoffnachbarn (z. B. 13) gebrochen und ein Sauerstoffatom eingefügt werden. Das Resultat soll Benzylalkohol sein. Dazu wird zunächst die betreffende Bindung gebrochen (20 sei der Index der Bindung zwischen Atom 7 und Atom 13) ...
'
' 16
' 22
bond create dblock {13 16}
' 31
Beispielmolekül Toluol (links). Nummern in kursiver Schrift (1) entsprechen der Reihenfolge der Eingabe der Atome (Indices), fette Nummern (1) können dagegen manuell zugeordnet sein und identifizieren ein Atom eindeutig (Labels).
Rechts: Resultat der Anwendung der Kommandosequenz aus Beispiel 3 (siehe Text).