Comment détermine-t-on le groupe ponctuel d'une molécule?

18

Vous avez enfin réussi à découvrir comment les atomes sont disposés spatialement sur votre entité moléculaire nouvellement découverte. Par exemple, grâce à des moyens spectroscopiques, vous êtes maintenant en possession d'un tas de coordonnées atomiques, de types d'atomes, de longueurs de liaisons, de types de liaisons et ainsi de suite pour votre molécule. Vous êtes maintenant intéressé à déterminer le groupe ponctuel (groupe de symétrie) de votre molécule.

Pour des molécules simples comme le méthane ( ) ou le benzène ( D 6 h ), il suffit de procéder à une inspection visuelle pour déterminer le groupe ponctuel auquel appartient une molécule. Cependant, ce n'est pas si faisable lorsque la molécule est un peu large.T6h

Étant donné une molécule stockée dans un format de données pratique (* .pdb, * .mol, etc.), comment déterminez-vous algorithmiquement le groupe de symétrie de la molécule?

JM
la source
3
Pour ce que ça vaut, VMD inclut un plugin à cet effet appelé SymmetryTool .
Juan M. Bello-Rivas

Réponses:

13

Mon expérience principale est avec les structures cristallines, et il n'y a qu'un nombre fini de symétries ponctuelles qui apparaissent dans un cristal. Donc, l'algorithme que j'utiliserais est légèrement différent de ce que vous utiliseriez dans une molécule. Mais, il est peu probable avec une grosse molécule que les symétries continues apparaissent, comme la symétrie axiale dans H 2 ou CO 2 , donc les méthodes devraient se chevaucher assez bien. Lors de la détermination de la symétrie dans un système, il y a deux symétries différentes, mais liées, à considérer: locale et globale.22

Symétrie locale

La symétrie locale est la symétrie de l'environnement local autour d'un point spécifique. En particulier, la symétrie à chaque emplacement atomique détermine la division atomique locale et dans une certaine mesure l'environnement chimique, et est un sous-groupe de la symétrie globale. Par exemple, dans le benzène de la symétrie locale se compose de deux plans de réflexion et un (axe 180 de symétrie de rotation). (Évidemment, seulement deux des opérations sont nécessaires pour générer le groupe de points local entier.)C2180

entrez la description de l'image ici

D'un point de vue algorithmique, ce que nous avons fait est de trouver d'abord les voisins les plus proches de l'atome cible, puis d'énumérer toutes les façons dont nous pouvons faire pivoter cet environnement autour de l'atome central et le faire rester le même. Plus mathématiquement, il résout pour toutes les matrices orthogonales, , telles queUNE

UNE(Xje-Xc)=Xj-Xc

et x j sont les positions des atomes de la même espèce et x c est la position de l'atome central ou cible. Mais, je regarderais d'abord des formes plus simples, comme s'il existe ou non un plan de réflexion, avant d'essayer de résoudre pour A en général. XjeXjXcUNE

Une autre pensée consiste à utiliser les matrices de moment angulaire comme générateurs de rotation, puis

UNE=exp(jeϕn^L)

nR 3 est un vecteur d'unité autour de laquelle une rotation avec un angle φ est effectuée, et L = ( L x , L y , L z ) est le vecteur des trois matrices de moment angulaire dimensions. A n'aurait alors que 3 inconnues.n^R3ϕL=(LX, Ly, Lz)UNE

Symétrie globale

Lorsque la symétrie locale détermine l'environnement autour d'un seul atome, la symétrie globale dicte comment les atomes interagissent entre eux. La première étape pour déterminer la symétrie globale consiste à déterminer les atomes équivalents. Tout d'abord, déterminez les types et les directions relatives du plus proche voisin (et du deuxième plus proche, ou plus haut, si vous le souhaitez). Deux atomes sont alors équivalents, si leurs voisins ont les mêmes dispositions spatiales. C'est simple à calculer.

La deuxième étape est à peu près la même que celle trouvée dans le cas de la symétrie locale, sauf que le centre de masse de la molécule est probablement le centre de symétrie. À ce stade, si les symétries locales ont été déterminées, seules quelques opérations uniques peuvent être nécessaires pour générer le groupe entier. Par exemple, dans la structure cristalline de B20 , chaque atome a une section locale symétrieC3 , et le groupe de points complet est généré en incluant un (2 fois rotation) axe de la vis qui transforme un atome dans un autre. Dans le benzène, deux opérations sont nécessaires: une rotation de 6 fois ( 60 ) à travers l'axe central et un plan de réflexion bissectant une liaison.18060

Edit : pour la structure B20, vous pouvez utiliser deux des axes place pour générer le groupe complet. Cela devrait vous permettre d'éviter d'avoir à trouver un moyen de déterminer automatiquement l'axe de la vis.C3

Attention : Une mise en garde sur l'utilisation des idées dans la section locale de symétrie dans la section globale, pour être une opération de symétrie, l'environnement doit également être transformé. Donc, si vous trouvez , d'en haut, cela ne donnera qu'une symétrie candidate car la transformation peut ne pas changer l'environnement de manière appropriée et des vérifications supplémentaires sont nécessaires. Par exemple, si le cycle benzénique avait des atomes d'hydrogène sortant du plan du cycle le long d'un côté, alors le plan de réflexion bissectant la liaison carbone-carbone serait bien, mais une rotation de 180 bissectant de manière similaire la liaison ne le serait pas parce qu'il ne reproduit pas l'environnement local.UNE180

Édition - Traductions : Il y a une autre complication que la discussion ci-dessus sur la symétrie locale ignore: les traductions. Formellement, l'opération de symétrie correcte est

UNE(Xje-Xc)+t=Xj-Xc

et x k , comme ci-dessus, et t est une traduction arbitraire. Dans un cristal symmorphique,UNEXkt

t=n1une1+n2une2+n3une3

unejenjeZt

rcollyer
la source
1
@JM, j'ai ajouté une mise en garde sur l'utilisation aveugle des idées dans le cas de la symétrie locale dans le cas global. Dans le cas global, il y a la restriction supplémentaire que l'environnement local doit également être transformé par l'opération de symétrie, et je ne pense pas l'avoir précisé.
rcollyer
@JM, j'ai oublié d'inclure toute discussion sur les traductions et leur effet sur les opérations de symétrie. J'ai inclus un bref addendum.
rcollyer
Je vois. J'avais toujours pensé qu'un algorithme pour faire cela mettrait en quelque sorte une molécule ou un cristal dans une "orientation standard" (quoi que cela puisse signifier) ​​avant de vérifier les voisins et autres.
JM
1
@JM, pour un cristal, il existe deux "orientations standard:" le réseau cristallin et le réseau primitif, et ils peuvent ne pas être les mêmes, comme dans un système cubique à faces centrées . Pour une molécule, j'utiliserais probablement le centre de masse comme origine, puis je diagonaliserais le moment du tenseur d'inertie pour «l'aligner correctement». Cela n'éliminerait cependant pas la nécessité de centres de rotation multiples, si l'opération de symétrie plus générale est requise, comme un axe de vis dans un cristal.
rcollyer
11

Il y a de l'ancien code à cet effet qui est utilisé dans quelques packages, appelé SYMMOL. L'algorithme qu'il utilise est décrit dans l'article suivant:

T. Pilati et A. Forni, "SYMMOL: un programme pour trouver le groupe de symétrie maximum dans un groupe d'atomes, étant donné une tolérance préfixée" , J. Appl. Cryst. 1998. 31, 503-504.

Fondamentalement, il détermine le centre d'inertie, puis applique des opérations de symétrie possibles et tente de déterminer s'il existe un vecteur de transformation pour mapper la géométrie opérée sur l'original dans une tolérance donnée. Le code lui-même n'est plus disponible sur le site des auteurs, mais il est disponible (avec un ensemble d'exemples de fichiers d'entrée) ici .

Aesin
la source
3

Je suis heureux de répondre qu'il existe un code open source de haute qualité pour cela:

https://github.com/mcodev31/libmsym

libmsym est une bibliothèque C traitant de la symétrie des groupes de points dans les molécules. Il peut déterminer, symétriser et générer des molécules de n'importe quel groupe ponctuel. Il peut également générer des combinaisons linéaires d'orbitales atomiques adaptées à la symétrie pour un sous-ensemble de tous les groupes de points et le moment angulaire orbital (l), et projeter des orbitales dans la représentation irréductible avec la composante large.

J'ai adapté libmysm dans Avogadro et une version devrait sortir plus tard en août 2015.

Je crois que l'auteur travaille actuellement sur la finition d'un manuscrit sur les détails. Je réviserai cette réponse lorsqu'elle sera publiée.

Geoff Hutchison
la source
1

Si cela vous intéresse toujours, j'ai un script python qui vous donnera le groupe de points (abélien) (et symétriquement non redondant) des atomes de n'importe quelle molécule dans une tolérance spécifiée.

La différence entre ma routine et beaucoup d'autres que j'ai vues disponibles est que l'orientation initiale n'est pas importante, ce qui rend utile l'exécution dans les résultats des optimisations de géométrie où vous n'avez pas spécifié un groupe de points initial (comme souvent, faire une telle hypothèse peut limiter la géométrie, la forçant à être symétrique et donnant un état fondamental non équilibré.)

Si vous êtes toujours intéressé, faites-le moi savoir, je le partagerai ici.

volonté
la source
Je serais certainement intéressé par ce script. Êtes-vous prêt à le rendre open source (par exemple, via GitHub?)
Geoff Hutchison
@GeoffHutchison Je vais jouer avec, car il fait partie d'un programme plus grand (il fait actuellement partie d'un programme qui exécute molpro automatiquement pour essayer de minimiser la géométrie, puis extrait les géométries générées et les oriente). Sera assez simple pour l'extraire et le nettoyer un peu.
le
Merci. Je serais heureux de le nettoyer au besoin. Il y a certainement une demande pour ce type d'outil.
Geoff Hutchison
1

J'ai écrit une fois un petit script Python pour détecter la symétrie du groupe de points d'une molécule. Si vous êtes intéressé, veuillez consulter https://github.com/sunqm/pyscf/blob/master/symm/geom.py

osirpt
la source
1
Il semble que l'OP s'intéresse plus à l'approche qu'au simple code. Il serait utile de décrire votre approche plus en détail.
Paul
Lien mort. Peut-être mettre un lien vers la construction spécifique sur github, au lieu du maître actuel
Erik Kjellgren
0

Il existe certains progiciels, tels que Materials Studio, qui peuvent automatiquement identifier le groupe ponctuel d'une molécule pour vous. Cependant, si vous voulez le découvrir vous-même, il existe un bel organigramme qui vous guidera tout au long du processus. Vous pouvez également consulter le site Web de symétrie Otterbein pour des didacticiels et des démonstrations interactives.

Max Radin
la source