Die Visualisierung von Molekülen spielt eine wichtige Rolle beim Aufbau von Datenbanken und Repositories, bei der Vorbereitung von Ausgangsstrukturen für Quanten- und Molekulardynamikberechnungen und bei der Analyse der Koordinaten von Trajektorien in Echtzeit. Die Visualisierung und interaktive Bearbeitung der Molekülstruktur kann die Simulationsschwelle wirksam senken und die Effizienz verbessern. Die jüngsten Entwicklungen auf dem Gebiet des Hochleistungsrechnens (HPC) und des Cloud Computing haben zu zahlreichen Online-Rechenplattformen geführt. So bieten beispielsweise MatCloud , rescale , WebMO und MolCalc Webdienste für Material- und Chemieberechnungen an. Diese webbasierten Tools ermöglichen die Fernsteuerung von Rechenressourcen und sind aufgrund ihrer Zugänglichkeit und Kompatibilität äußerst beliebt. Heutzutage ist es üblich, webbasierte 3D-Strukturvisualisierungs- und -Editor-Tools zu verwenden, um die Modellstrukturen zu generieren und die Eingabedateien für die Simulationen vorzubereiten.
Die modernste Visualisierungssoftware im Bereich der computergestützten Chemie wird hauptsächlich in einer Desktop-Umgebung entwickelt, wie z. B. Avogadro , Materials Studio und VESTA . Mit der zunehmenden Nachfrage nach webbasierter Visualisierung sind mehrere einschlägige Tools aufgetaucht. 3Dmol , JSmol und Web3DMol beispielsweise bieten leistungsstarke Visualisierungsfunktionen, aber es fehlt die Funktion zur Strukturbearbeitung. Andere Tools, wie ChemdoodleWeb , Kekule.js , JSME , können nur 2-dimensionale (2D) Strukturen bearbeiten. In der Literatur wird auch über Tools zur Bearbeitung von 3D-Strukturen (z. B. ChemMozart , CH5M3D ) berichtet. Diese Tools konzentrieren sich jedoch auf die Modellierung organischer Moleküle und unterstützen nicht die Bearbeitung von Kristallstrukturen. Darüber hinaus ist ChemMozart mit dem node.js-Framework implementiert und kann nicht als leichtgewichtige Bibliothek allein verwendet werden.
Um chemische Informationen auf einem Webserver zu verarbeiten, haben wir ein fortschrittliches chemisches Visualisierungs- und Editorprogramm mit den folgenden Funktionen entwickelt. Erstens können sowohl nicht-periodische organische Moleküle als auch Kristallstrukturen interaktiv visualisiert, aufgebaut und bearbeitet werden. Zweitens wird eine breite Palette von chemieinformatischen Algorithmen für die Kristallstruktur bereitgestellt, wie z. B. das Spalten von Oberflächen, das Erstellen von Vakuumschichten und das Erstellen von Superzellen. Drittens handelt es sich um eine leichtgewichtige Bibliothek, die mit JavaScript implementiert wurde und leicht verwendet werden kann, um Webdienste unabhängig oder integriert in andere Webplattformen anzubieten. Schließlich können die anfänglichen Eingabedateien für VASP und Gaussian durch Interaktion mit Dialogfeldern generiert werden.
Implementierung
Wie bei den meisten Programmen mit grafischer Benutzeroberfläche (GUI) für chemische Berechnungen liegt der Schwerpunkt von 3DStructGen auf der Erzeugung der anfänglichen Molekülgeometrie. Wie in Abb. 1 gezeigt, bestehen die Basismodule Molekül, Kristall und Oberflächenplatte aus mehreren Methoden, um mit einem nicht-periodischen Molekül, einem periodischen Kristall bzw. einem Oberflächenplattensystem umzugehen. Das HTML5-Canvas ist das zentrale Modul für die Darstellung von 3D-Strukturen und verbindet alle anderen Module miteinander. Das Mausmodul bietet dem Benutzer eine Reihe von interaktiven Operationen mit der Maus. Die Verarbeitungsmethoden für allgemeine chemische Dateiformate (XYZ, SD, MOL, CIF) werden im IO-Modul unterstützt, und die anfängliche Eingabedatei für VASP und Gaussian kann mit dem Schnittstellenmodul erstellt werden. Das Explorer-Modul gibt die interaktiven Informationen (z. B. Dateiname, Gitterparameter, Atomabstand, Atomkoordinaten usw.) für den Benutzer in Echtzeit aus. Darüber hinaus bietet ChemKit API Erweiterungen von 3DStructGen durch die Integration anderer cheminformatischer Werkzeuge.
Element, Atom und Molekül
Die Parameter von Elementen (z.B., Ordnungszahl, Elementsymbol, Atommasse, Farbe, kovalente Radien, etc.) werden in der Funktion „element ()“ als Liste definiert. Die Funktion „addElem ()“ wird verwendet, um ein vom Benutzer angegebenes Element hinzuzufügen, und das entsprechende Atommodell wird auf der Leinwand visualisiert. Alle Elemente werden in der gleichen Farbe wie im VESTA-Programm dargestellt. Das Methanmolekül wird im Canvas dargestellt, wenn 3DStructGen initialisiert wird. Die „Ball-and-Stick“-Darstellung der Strukturen mit der Größe der Atome basiert standardmäßig auf ihren kovalenten Radien. Außerdem können die „stick-and-line“-Modelle auch vom Benutzer festgelegt werden.
Die Funktionen „addAtom ()“ und „delAtom ()“ werden zum Hinzufügen eines neuen Atoms bzw. zum Löschen eines vorhandenen Atoms in einem Molekül verwendet. Standardmäßig wird eine geeignete Anzahl von Wasserstoffatomen gemäß der Regel der Oktett-Theorie hinzugefügt, und den Bindungswinkeln wird ein Wert zugewiesen, der auf der vom Benutzer gewählten Orbitalhybridisierung (standardmäßig sp3) basiert.
Wenn ein neues Atom hinzugefügt wird, wird eine Bindung innerhalb ihres Wertes der Summe der kovalenten Radien der gebundenen Atome erstellt. Die Verbindung zwischen Atompaaren kann durch Mausoperationen hinzugefügt werden, indem die Funktion „addBond ()“ aufgerufen wird, die in Dateien definiert oder von 3DStructGen berechnet wird. Die Funktion „createBond ()“ beschreibt die detaillierte Bindungsregel: Zunächst wird eine Liste möglicher Bindungsatome auf der Grundlage des Bindungsvalenzmodells erstellt, und dann wird der Abstand für diese möglichen Bindungsatome berechnet. Eine Bindung entsteht, wenn der Abstand zwischen dem 0,5- und 1,2-fachen der Summe der kovalenten Radien für diese Bindungsatome liegt. Hier wird der 0,5-fache Abstand verwendet, um eine Bindung zwischen den geschlossenen Atomen zu vermeiden (eventuell überlappende Atome). Die Funktion „bondMatrix ()“ definiert eine öffentliche Routine zum Speichern und Zurückgeben der Bindungsliste. Der Graph-Labeling-Algorithmus (Pseudocode in Abb. 2), der zur Erkennung von Gerüst und Gast (einschließlich Lösungsmittelmolekül) verwendet wird, wurde für metallorganische Gerüste (MOF) in der Cambridge Structural Database (CSD) Datenbank entwickelt. Unsere Bindungsmethode hat zufriedenstellende Ergebnisse für diese Aufgabe gezeigt, und die Ergebnisse der Visualisierung können im Abschnitt „Strukturvisualisierung“ nachgelesen werden.
Wenn eine Struktur erstellt wird, kann ein Atom oder eine Gruppe von Atomen, die vom Benutzer ausgewählt wurden, um eine vom Benutzer festgelegte Strecke nach oben, unten, links und rechts verschoben werden. Eine grobe Geometrieoptimierung wird für nicht-periodische Moleküle unterstützt, indem die Bindungslängen, -winkel und -flächen nach der gleichen Methode wie in CH5M3D optimiert werden. Eine optionale Geometrieoptimierung, die auf der Kraftfeldmethode basiert, wird auch durch die Verwendung der ChemKit API bereitgestellt, die im Abschnitt „ChemKit API“ näher erläutert wird.
Kristall und Oberflächenplatte
Die Funktion „buildCrystal ()“ wird verwendet, um eine Kristallgitterstruktur zu erstellen. Durch Anklicken des Dialogfelds „Kristall aufbauen“ können die Symmetrie-Raumgruppen (insgesamt 230), die Gitterparameter, die Atomtypen und die Koordinaten vom Benutzer interaktiv ausgewählt oder bearbeitet werden. Wenn alle Operationen abgeschlossen sind, wird eine Kristallstruktur im Canvas angezeigt.
Die Superzellplatte ist ein Strukturmodell, das in Quanten- oder Molekulardynamiksimulationen zur Untersuchung der kinetischen, thermodynamischen und elektronischen Eigenschaften der Oberfläche verwendet wird. Die Funktion „cleaveSurf ()“ zeigt einen Algorithmus zur Konstruktion von Oberflächenplatten mit beliebiger Miller-Index-Orientierung aus einer Volumeneinheitszelle eines beliebigen Bravais-Gitters. Ein Slab mit zwei Oberflächen ist mit Vakuumregionen in einer Superzelle eingebettet. Sun schlug einen effizienten Algorithmus zur Konstruktion von Plattenoberflächen vor, und dieselbe Methode wird verwendet, um zwei Basisvektoren zu finden, die eine gegebene Oberflächenorientierung aufspannen, \(\varvec{v}_{1}\) und \(\varvec{v}_{2}\). Es folgen die detaillierten Beschreibungen:
Wenn ein Miller-Index keine Nullen enthält, nehmen wir (hkl) als Beispiel:
Wenn ein Miller-Index eine Null enthält, nehmen wir (hk0) als Beispiel:
Wenn ein Miller-Index zwei Nullen enthält, nehmen wir (h00) als Beispiel:
Für eine Kristallstruktur, die aus einer Einheitszelle besteht, und eine Menge von Atomen sind so angeordnet, dass sich die Atome periodisch in drei Dimensionen auf einem Gitter wiederholen. Die Funktion „displayStyle ()“ bietet mehrere Methoden zur Darstellung der sich wiederholenden Atome, und die entsprechenden Bilder sind in Abb. 3 dargestellt. Die folgenden Optionen können in 3DStructGen gewählt werden:
-
„Asymmetric“ dargestellt: Es wird die minimale Untereinheit eines Kristalls dargestellt, die aus einem oder mehreren Atomen, Ionen oder Molekülen besteht, deren geometrische Anordnung nicht durch kristallographische Symmetrie bedingt ist.
-
„Original“: Bei dieser Darstellung wird jedes Atom an seinem ursprünglichen Ort angezeigt, zusammen mit Kopien, die durch Anwendung der einzelnen Operatoren der Symmetriegruppe gebildet werden.
-
„In-cell“: Die Atome werden in Abhängigkeit davon angezeigt, ob sich ihre Koordinaten sowie ihre symmetrischen Kopien in der Gitterzelle befinden.
-
„Packung“: Die vollständigen Moleküle und ihre symmetrischen Kopien in einer Gitterzelle werden in Abhängigkeit vom geometrischen Zentrum der verbundenen Atomsätze angezeigt. Dies ergibt eine Anzeige der konventionellen Zelle für die meisten Arten von Kristallsystemen.
Die oben genannten Stile ermöglichen es dem Benutzer, Atome auf die gewünschte Weise für verschiedene Szenarien zu visualisieren. Der Stil „Asymmetric“ kann nützlich sein, um sich auf Details der Minimalstruktur zu konzentrieren, wenn alle Kopien unsichtbar sind, insbesondere bei großen und komplexen Modellen. Die Stile „Original“ und „Packung“ zeigen die Kopien von Einheiten, die symmetrische Informationen eines Kristalls darstellen. Der Stil „In-cell“ zeigt einen Blick auf alle möglichen Atome in der Gitterzelle, was der realen Szene des Abschneidens einer Gitterzelle aus dem gesamten periodischen System entspricht.