Sie haben es endlich geschafft, herauszufinden, wie die Atome auf Ihrer neu entdeckten molekularen Einheit räumlich angeordnet sind. Mit spektroskopischen Mitteln haben Sie jetzt eine Reihe von Atomkoordinaten, Atomtypen, Bindungslängen, Bindungstypen und so weiter für Ihr Molekül. Sie möchten nun die Punktgruppe (Symmetriegruppe) Ihres Moleküls bestimmen.
Für einfache Moleküle wie Methan ( ) oder Benzol ( ) ist es eine einfache Sichtprüfung, die Punktgruppe zu bestimmen, zu der ein Molekül gehört. Dies ist jedoch nicht so machbar, wenn das Molekül etwas zu groß ist.
Wie können Sie bei einem Molekül, das in einem geeigneten Datenformat (* .pdb, * .mol usw.) gespeichert ist, die Symmetriegruppe des Moleküls algorithmisch bestimmen?
Antworten:
Meine primäre Erfahrung ist mit Kristallstrukturen, und es gibt nur eine begrenzte Anzahl von Punktsymmetrien , die in einem Kristall auftreten. Der Algorithmus, den ich verwenden würde, unterscheidet sich geringfügig von dem, was Sie in einem Molekül verwenden würden. Bei einem großen Molekül ist es jedoch unwahrscheinlich, dass sich die kontinuierlichen Symmetrien wie die axiale Symmetrie in H 2 oder CO 2 zeigen , sodass sich die Methoden recht gut überlappen sollten. Bei der Bestimmung der Symmetrie in einem System sind zwei verschiedene, aber verwandte Symmetrien zu berücksichtigen: lokale und globale.2 2
Lokale Symmetrie
Lokale Symmetrie ist die Symmetrie der lokalen Umgebung um einen bestimmten Punkt. Insbesondere bestimmt die Symmetrie an jedem Atomort die lokale Atomteilung und in gewissem Maße die chemische Umgebung und ist eine Untergruppe der globalen Symmetrie. In Benzol besteht die lokale Symmetrie beispielsweise aus zwei Reflexionsebenen und einer -Achse ( 180 ° -Rotationssymmetrie). (Offensichtlich sind nur zwei der Operationen erforderlich, um die gesamte lokale Punktgruppe zu generieren.)C2 180∘
Aus algorithmischer Sicht haben wir zuerst die nächsten Nachbarn des Zielatoms gefunden und dann alle Möglichkeiten aufgezählt, wie wir diese Umgebung um das Zentralatom drehen können, damit sie gleich bleibt. Mathematischer wird nach allen orthogonalen Matrizen , so dassA
Dabei sind und → x j die Positionen von Atomen derselben Spezies und → x c die Position des Zentral- oder Zielatoms. Aber ich würde zunächst einfachere Formen betrachten, beispielsweise, ob eine Reflexionsebene existiert oder nicht, bevor ich nach A im Allgemeinen zu lösen versuche .x⃗ i x⃗ j x⃗ c A
Ein anderer Gedanke ist, die Drehimpulsmatrizen als Generatoren der Rotation zu verwenden
wobei n ∈ R 3 ein Einheitsvektor ist, um die eine Drehung mit dem Winkel φ durchgeführt wird, und → L = ( L x , L y , L z ) ist der Vektor der dreidimensionalen Matrizes Drehimpuls. A hätte dann nur 3 Unbekannte.n^∈R3 ϕ L⃗ =(Lx, Ly, Lz) A
Globale Symmetrie
Wo die lokale Symmetrie die Umgebung um ein einzelnes Atom bestimmt, bestimmt die globale Symmetrie, wie sich die Atome untereinander austauschen. Der erste Schritt bei der Bestimmung der globalen Symmetrie ist die Bestimmung der äquivalenten Atome. Bestimmen Sie zuerst die Art und die relative Richtung zu den Atomen des nächsten Nachbarn (und, falls gewünscht, des zweitnächsten Atoms oder höher). Zwei Atome sind dann gleichwertig, wenn ihre Nachbarn die gleiche räumliche Anordnung haben. Dies ist einfach zu berechnen.
Der zweite Schritt ist in etwa der gleiche wie der im Fall der lokalen Symmetrie, mit der Ausnahme, dass der Schwerpunkt des Moleküls wahrscheinlich das Symmetriezentrum ist. Wenn zu diesem Zeitpunkt die lokalen Symmetrien bestimmt wurden, müssen möglicherweise nur einige eindeutige Operationen gefunden werden, um die gesamte Gruppe zu generieren. Beispielsweise hat in der B20-Kristallstruktur jedes Atom eine lokale -SymmetrieC3 , und die vollständige Punktgruppe wird durch Einbeziehen einer 2-fachen ( -Drehung) Schraubenachse erzeugt, die ein Atom in ein anderes transformiert. In Benzol sind zwei Operationen erforderlich: eine 6-fache ( 60 ∘ ) Drehung um die Mittelachse und eine Reflexionsebene, die eine Bindung halbiert.180∘ 60∘
Bearbeiten : Für die B20-Struktur können Sie stattdessen zwei der -Achsen verwenden, um die vollständige Gruppe zu generieren. Auf diese Weise können Sie vermeiden, dass Sie einen Weg finden müssen, um die Schraubenachse automatisch zu bestimmen.C3
Achtung : Vorsicht beim Verwenden der Ideen im lokalen Symmetrieabschnitt im globalen Abschnitt. Um eine Symmetrieoperation zu sein, muss auch die Umgebung transformiert werden. Wenn Sie also von oben finden, ergibt dies nur eine Kandidatensymmetrie, da die Transformation die Umgebung möglicherweise nicht angemessen ändert und weitere Überprüfungen erforderlich sind. Wenn der Benzolring beispielsweise Wasserstoffatome auf einer Seite aus der Ringebene herausragen hätte, wäre die Reflexionsebene, die die Kohlenstoff-Kohlenstoff-Bindung halbiert, in Ordnung, aber eine Drehung um 180 °, die die Bindung auf ähnliche Weise halbiert, wäre dies nicht der Fall nicht die lokale Umgebung reproduzieren.A 180∘
Bearbeiten - Übersetzungen : Es gibt eine weitere Komplikation, die in der obigen Diskussion zur lokalen Symmetrie ignoriert wird: Übersetzungen. Formal ist die korrekte Symmetrieoperation
wobei und → x k wie oben und → t eine beliebige Übersetzung sind. In einem symmorphen KristallA x⃗ k t⃗
quelle
Es gibt alten Code für den Zweck, der in einigen Paketen mit dem Namen SYMMOL verwendet wird. Der verwendete Algorithmus wird im folgenden Artikel beschrieben:
Grundsätzlich bestimmt es das Trägheitszentrum, wendet dann mögliche Symmetrieoperationen an und versucht zu bestimmen, ob ein Transformationsvektor existiert, um die bearbeitete Geometrie innerhalb einer gegebenen Toleranz auf das Original abzubilden. Der Code selbst ist nicht mehr auf der Website des Autors verfügbar, steht jedoch (mit einer Reihe von Beispiel-Eingabedateien) hier zur Verfügung .
quelle
Gerne antworte ich, dass es dafür einen hochwertigen Open Source Code gibt:
https://github.com/mcodev31/libmsym
Ich habe libmysm an Avogadro angepasst und eine Veröffentlichung sollte später im August 2015 erscheinen.
Ich glaube, der Autor arbeitet derzeit an der Fertigstellung eines Manuskripts über die Details. Ich werde diese Antwort überarbeiten, wenn sie veröffentlicht wird.
quelle
Wenn Sie immer noch daran interessiert sind, habe ich ein Python-Skript, mit dem Sie die (abelschen) Punktgruppen (und symmetrisch nicht redundanten) Atome eines Moleküls innerhalb einer festgelegten Toleranz erhalten.
Der Unterschied zwischen meiner Routine und vielen anderen, die ich gesehen habe, besteht darin, dass die anfängliche Ausrichtung nicht wichtig ist. Daher ist es nützlich, die Ergebnisse von Geometrieoptimierungen einzugeben, bei denen Sie keine anfängliche Punktgruppe angegeben haben (wie so oft) Eine solche Annahme kann die Geometrie einschränken, sie zu Symmetrie zwingen und einen Grundzustand ohne Gleichgewicht ergeben.)
Wenn Sie immer noch interessiert sind, lassen Sie es mich wissen, ich werde es hier teilen.
quelle
Ich habe einmal ein kleines Python-Skript geschrieben, um die Punktgruppensymmetrie für ein Molekül zu ermitteln. Bei Interesse besuchen Sie bitte https://github.com/sunqm/pyscf/blob/master/symm/geom.py
quelle
Es gibt einige Softwarepakete, z. B. Materials Studio, mit denen Sie die Punktgruppe eines Moleküls automatisch identifizieren können. Wenn Sie es jedoch selbst herausfinden möchten, gibt es ein schönes Flussdiagramm , das Sie durch den Prozess führt. Auf der Otterbein Symmetry-Website finden Sie auch einige Tutorials und interaktive Demos.
quelle