Jak określa się grupę punktową cząsteczki?


18

W końcu udało ci się dowiedzieć, w jaki sposób atomy są rozmieszczone przestrzennie na nowo odkrytej istocie molekularnej. Za pomocą, powiedzmy, metod spektroskopowych, jesteś teraz w posiadaniu szeregu współrzędnych atomu, typów atomów, długości wiązań, typów wiązań i innych elementów cząsteczki. Jesteś teraz zainteresowany określeniem grupy punktów (grupy symetrii) swojej cząsteczki.

W przypadku prostych cząsteczek, takich jak metan ( ) lub benzen ( ), kwestią wzrokową jest określenie grupy punktów, do której należy cząsteczka. Nie jest to jednak tak wykonalne, gdy cząsteczka jest nieco za duża.D 6 godzTdD6h

Biorąc pod uwagę cząsteczkę przechowywaną w dogodnym formacie danych (* .pdb, * .mol ​​itp.), W jaki sposób algorytmicznie określasz grupę symetrii cząsteczki?


3
Za to, co jest warte, VMD zawiera wtyczkę do tego celu o nazwie SymmetryTool .
Juan M. Bello-Rivas,

Odpowiedzi:


13

Moje główne doświadczenie dotyczy struktur krystalicznych i istnieje tylko skończona liczba symetrii punktowych, które pojawiają się w krysztale. Algorytm, którego użyłbym, jest nieco inny niż ten, którego użyłbyś w cząsteczce. Jednak nie jest prawdopodobne, o dużej cząsteczce, że ciągłe symetrie pojawi się jak osiowej symetrii H 2 i CO 2 , a zatem metody powinny pokrywać się całkiem dobrze. Podczas określania symetrii w systemie należy wziąć pod uwagę dwie różne, ale powiązane, symetrie: lokalną i globalną.22

Lokalna symetria

Lokalna symetria to symetria lokalnego środowiska wokół określonego punktu. W szczególności symetria w każdej lokalizacji atomowej determinuje lokalne rozszczepienie atomowe i do pewnego stopnia środowisko chemiczne i jest podgrupą globalnej symetrii. Na przykład w benzenie lokalną symetrię składa się z dwóch płaszczyzn odbicia i osi ( 180 symetrii obrotowej). (Oczywiście tylko dwie operacje są konieczne do wygenerowania całej lokalnej grupy punktów.)C2180

wprowadź opis zdjęcia tutaj

Z perspektywy algorytmicznej zrobiliśmy najpierw znaleźć najbliższych sąsiadów docelowego atomu, a następnie wymienić wszystkie sposoby, w jakie możemy obrócić to środowisko wokół atomu centralnego i pozostawić je bez zmian. Mówiąc bardziej matematycznie, rozwiązuje wszystkie macierze ortogonalne , takie, żeA

A(xixc)=xjxc

gdzie i x j to pozycje atomów tego samego gatunku, a x c to pozycja atomu centralnego lub docelowego. Najpierw jednak przyjrzałbym się prostszym formom, takim jak to, czy istnieje płaszczyzna odbicia, zanim spróbowałem rozwiązać problem ogólnie dla A.xixjxcA

Inną myślą jest użycie macierzy momentu pędu jako generatorów obrotu

A=exp(iϕn^L)

gdzie nR 3n^R3 jest wektorem jednostkowym o których obrót o kąt jest wykonywana, i L = ( L x , l R , L oo ) jest wektorem trójwymiarowej macierzy kątowych pędu. A miałby wtedy tylko 3 niewiadome.ϕL=(Lx, Ly, Lz)A

Globalna symetria

Tam, gdzie lokalna symetria determinuje środowisko wokół jednego atomu, globalna symetria decyduje o tym, w jaki sposób atomy się ze sobą wymieniają. Pierwszym krokiem w określeniu globalnej symetrii jest określenie równoważnych atomów. Najpierw określ typy i względne kierunki do najbliższego sąsiada (i drugiego najbliższego lub wyższego, jeśli to pożądane) atomu. Dwa atomy są wówczas równoważne, jeśli ich sąsiedzi mają takie same układy przestrzenne. Jest to łatwe do obliczenia.

Drugi krok jest mniej więcej taki sam, jak w przypadku lokalnej symetrii, z tym wyjątkiem, że środek masy cząsteczki jest prawdopodobnie centrum symetrii. W tym momencie, jeśli lokalne symetrie zostały określone, może być konieczne znalezienie tylko kilku unikalnych operacji w celu wygenerowania całej grupy. Na przykład, w krystalicznej strukturze B20 , przy czym każdy atom posiada lokalne symetriiC3 , a pełna grupa punkt generuje w tym 2-krotnie ( obrotów) osi śruby , które przekształca się w jeden atom inny. W benzenie wymagane są dwie operacje: 6-krotny ( 60 ) obrót przez oś środkową i płaszczyzna odbicia przecinająca wiązanie.18060

Edit : Dla struktury B20, można użyć dwóch z osiach, zamiast generować pełną grupę. Pozwoli to uniknąć konieczności automatycznego określania osi śruby.C3

Przestroga : Przestroga dotycząca stosowania pomysłów w lokalnej sekcji symetrii w sekcji globalnej, aby być operacją symetrii, należy również przekształcić środowisko. Tak więc, jeśli znajdziesz , z góry, da to tylko kandydującą symetrię, ponieważ transformacja może nie zmienić odpowiednio środowiska odpowiednio i potrzebne są dalsze kontrole. Na przykład, gdy pierścień benzenowy miał atomy wodoru wystaje z płaszczyzny pierścienia, po jednej stronie, a płaszczyzna odbijająca przecina wiązanie węgiel-węgiel to dobrze, ale 180 obrót podobnie przecina wiązanie nie ponieważ byłoby nie odtwarzają lokalnego środowiska.A180

Edycja - tłumaczenia : Jest jeszcze jedna komplikacja, że ​​powyższa dyskusja na temat lokalnej symetrii ignoruje: tłumaczenia. Formalnie poprawna operacja symetrii to

A(xixc)+t=xjxc

gdzie i x k , jak wyżej, i t jest dowolną tłumaczenie. W symmorficznym krysztaleAxkt

t=n1a1+n2a2+n3a3)

gdzie jest prymitywnym tłumaczeniem sieci, aniZ, więc grupa punktów i tłumaczenia są całkowicie rozdzielne. W krysztale niesymorficznymt może składać się z tłumaczeń innych niż prymitywne. Różnica między nimi polega po prostu na tym, że w przypadku kryształu symmorficznego można znaleźć pojedynczy środek obrotu, ale w przypadku kryształów niesymorficznych nie jest to prawdą. Układ molekularny prawdopodobnie będzie „niesymorficzny” w tym ostatnim znaczeniu i będzie wymagał dodania tłumaczeń, aby w pełni zrealizować grupę.ainiZt


1
@JM, dodałem ostrzeżenie o używaniu pomysłów w przypadku lokalnej symetrii na ślepo w przypadku globalnym. W przypadku globalnym istnieje dodatkowe ograniczenie, że lokalne środowisko musi również zostać przekształcone przez operację symetrii i nie sądzę, że to wyjaśniłem.
rcollyer,

@JM, zapomniałem dołączyć do dyskusji na temat tłumaczeń i ich wpływu na operacje symetrii. Zawarłem krótki aneks.
rcollyer,

Widzę. Zawsze myślałem, że algorytm do tego celu w jakiś sposób wprowadziłby cząsteczkę lub kryształ do „standardowej orientacji” (cokolwiek to może znaczyć) przed sprawdzeniem sąsiadów i tym podobnych.
JM,

1
@JM, dla kryształu, istnieją dwie „standardowe orientacje”: „sieć krystaliczna” i sieć prymitywna, i mogą nie być takie same, jak w układzie sześciennym zorientowanym na twarz . W przypadku cząsteczki prawdopodobnie użyłbym środka masy jako źródła, a następnie przekątnie momentu tensora bezwładności, aby „odpowiednio go wyrównać”. Nie wyeliminowałoby to jednak potrzeby stosowania wielu centrów obrotu, gdyby wymagana była bardziej ogólna operacja symetrii, jak oś śruby w krysztale.
rcollyer

11

Do tego celu służy stary kod, który jest używany w kilku pakietach, o nazwie SYMMOL. Algorytm, którego używa, opisano w następującym artykule:

T. Pilati i A. Forni, „SYMMOL: program do znalezienia maksymalnej grupy symetrii w klastrze atomów, z określoną z góry tolerancją” , J. Appl. Cryst. 1998. 31, 503-504.

Zasadniczo określa środek bezwładności, a następnie stosuje możliwe operacje symetrii i próbuje ustalić, czy istnieje wektor transformacji w celu odwzorowania obsługiwanej geometrii na oryginał w ramach danej tolerancji. Sam kod nie jest już dostępny na stronie autorów, ale jest dostępny (wraz z zestawem przykładowych plików wejściowych) tutaj .


3

Z przyjemnością odpowiadam, że istnieje wysokiej jakości kod open source do tego:

https://github.com/mcodev31/libmsym

libmsym jest biblioteką C zajmującą się symetrią grup punktów w cząsteczkach. Może określać, symetrować i generować cząsteczki z dowolnej grupy punktowej. Może również generować dostosowane do symetrii liniowe kombinacje orbitali atomowych dla podzbioru wszystkich grup punktowych i orbitalnego momentu pędu (1), i rzutować orbitale na nieredukowalną reprezentację ze składnikiem wielkości największej.

Dostosowałem libmysm do Avogadro, a wydanie powinno ukazać się później w sierpniu 2015 roku.

Uważam, że autor pracuje obecnie nad ukończeniem manuskryptu na temat szczegółów. Poprawię tę odpowiedź, gdy zostanie opublikowana.


1

Jeśli nadal jesteś tym zainteresowany, mam skrypt w języku Python, który da ci grupę punktów (abelową) (i symetrycznie niepotrzebne) atomy dowolnej cząsteczki w ramach określonej tolerancji.

Różnica między moją rutyną a wieloma innymi, które widziałem, jest dostępna, ponieważ początkowa orientacja nie jest ważna, co sprawia, że ​​przydatne jest uruchamianie wyników optymalizacji geometrii, w których nie określono początkowej grupy punktów (tak często takie założenie może ograniczyć geometrię, zmuszając ją do symetryczności i dając nierównowagę stanu podstawowego.)

Jeśli nadal jesteś zainteresowany, daj mi znać, podzielę się nim tutaj.


Byłbym zdecydowanie zainteresowany tym skryptem. Czy chcesz udostępnić go jako oprogramowanie typu open source (np. Przez GitHub?)
Geoff Hutchison

@GeoffHutchison Będę się z tym bawić, ponieważ znajduje się on w większym programie (obecnie jest częścią programu, który automatycznie uruchamia Molpro, aby zminimalizować geometrię, a następnie wyodrębnia wygenerowane geometrie i orientuje je). Będzie dość łatwo go wyodrębnić i trochę posprzątać.
będzie

Dzięki. Z przyjemnością posprzątam w razie potrzeby. Zdecydowanie istnieje zapotrzebowanie na tego rodzaju narzędzie.
Geoff Hutchison,


0

Istnieje kilka pakietów oprogramowania, takich jak Materials Studio, które mogą automatycznie zidentyfikować dla Ciebie grupę punktów cząsteczki. Jeśli jednak chcesz to zrozumieć, istnieje ładny schemat blokowy , który przeprowadzi cię przez ten proces. Możesz także zajrzeć na stronę symetrii Otterbein, aby zapoznać się z niektórymi samouczkami i interaktywnymi prezentacjami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.