Wie bestimmt man die Punktgruppe eines Moleküls?

17

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 ( Td ) 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.D6h

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?

JM
quelle
3
VMD enthält zu diesem Zweck ein Plugin namens SymmetryTool .
Juan M. Bello-Rivas

Antworten:

12

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.22

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.)C2180

Bildbeschreibung hier eingeben

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

A(xixc)=xjxc

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 . xixjxcA

Ein anderer Gedanke ist, die Drehimpulsmatrizen als Generatoren der Rotation zu verwenden

A=exp(iϕn^L)

wobei nR 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.18060

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.A180

Bearbeiten - Übersetzungen : Es gibt eine weitere Komplikation, die in der obigen Diskussion zur lokalen Symmetrie ignoriert wird: Übersetzungen. Formal ist die korrekte Symmetrieoperation

A(xixc)+t=xjxc

wobei und x k wie oben und t eine beliebige Übersetzung sind. In einem symmorphen KristallAxkt

t=n1a1+n2a2+n3a3

ainiZt

rcollyer
quelle
1
@JM, ich habe eine Warnung hinzugefügt, wie man die Ideen im lokalen Symmetriefall blind im globalen Fall verwendet. Im globalen Fall gibt es die zusätzliche Einschränkung, dass die lokale Umgebung auch durch die Symmetrieoperation transformiert werden muss, und ich glaube nicht, dass ich dies klargestellt habe.
rcollyer
@JM, ich habe vergessen, eine Diskussion über Übersetzungen und deren Auswirkungen auf die Symmetrieoperationen aufzunehmen. Ich habe einen kurzen Nachtrag beigefügt.
Rcollyer
Aha. Ich hatte immer gedacht, ein Algorithmus würde ein Molekül oder einen Kristall in eine "Standardorientierung" versetzen (was auch immer das bedeuten mag), bevor ich Nachbarn und dergleichen überprüfe.
JM
1
@JM, für einen Kristall gibt es zwei "Standardorientierungen": das Kristallgitter und das primitive Gitter, und sie sind möglicherweise nicht die gleichen wie in einem kubisch-flächenzentrierten System . Für ein Molekül würde ich wahrscheinlich den Massenmittelpunkt als Ursprung verwenden und dann den Trägheitsmomentstensor diagonalisieren, um ihn "richtig auszurichten". Dies würde jedoch nicht die Notwendigkeit für mehrere Rotationszentren beseitigen, wenn die allgemeinere Symmetrieoperation wie eine Schraubenachse in einem Kristall erforderlich ist.
rcollyer
10

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:

T. Pilati und A. Forni, "SYMMOL: Ein Programm zum Ermitteln der maximalen Symmetriegruppe in einem Atomcluster bei vorgegebener Toleranz" , J. Appl. Cryst. 1998. 31, 503 & ndash; 504.

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 .

Aesin
quelle
3

Gerne antworte ich, dass es dafür einen hochwertigen Open Source Code gibt:

https://github.com/mcodev31/libmsym

libmsym ist eine C-Bibliothek, die sich mit Punktgruppensymmetrie in Molekülen befasst. Es kann Moleküle jeder Punktgruppe bestimmen, symmetrisieren und erzeugen. Es kann auch symmetrieadaptierte Linearkombinationen von Atomorbitalen für eine Teilmenge aller Punktgruppen und des Bahndrehimpulses (l) erzeugen und Orbitale mit der größten Komponente in die irreduzible Darstellung projizieren.

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.

Geoff Hutchison
quelle
1

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.

werden
quelle
Ich würde mich definitiv für dieses Drehbuch interessieren. Sind Sie bereit, Open Source zu machen (z. B. über GitHub?)
Geoff Hutchison
@GeoffHutchison Ich werde es ausprobieren, da es sich in einem größeren Programm befindet (es ist derzeit Teil eines Programms, das molpro automatisch ausführt, um die Geometrie zu minimieren und dann die generierten Geometrien zu extrahieren und zu orientieren). Wird einigermaßen einfach zu extrahieren und ein wenig aufzuräumen sein.
wird
Vielen Dank. Gerne räum ich bei Bedarf auf. Es gibt definitiv eine Nachfrage nach dieser Art von Werkzeug.
Geoff Hutchison
1

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

osirpt
quelle
1
Offenbar interessiert sich das OP mehr für den Ansatz als nur für den Code. Es wäre hilfreich, wenn Sie Ihre Vorgehensweise genauer beschreiben könnten.
Paul
Dead Link. Vielleicht einen Link zu dem speziellen Build auf Github anstelle des aktuellen Masters setzen
Erik Kjellgren
0

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.

Max Radin
quelle