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 godz
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?
Odpowiedzi:
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ą.2 2
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.)C2 180∘
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
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.x⃗ i x⃗ j x⃗ c A
Inną myślą jest użycie macierzy momentu pędu jako generatorów obrotu
gdzie n ∈ R 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.180∘ 60∘
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.A 180∘
Edycja - tłumaczenia : Jest jeszcze jedna komplikacja, że powyższa dyskusja na temat lokalnej symetrii ignoruje: tłumaczenia. Formalnie poprawna operacja symetrii to
gdzie i → x k , jak wyżej, i → t jest dowolną tłumaczenie. W symmorficznym krysztaleA x⃗ k t⃗
gdzie jest prymitywnym tłumaczeniem sieci, ani∈Z, więc grupa punktów i tłumaczenia są całkowicie rozdzielne. W krysztale niesymorficznym → t 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ę.a⃗ i ni∈Z t⃗
źródło
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:
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 .
źródło
Z przyjemnością odpowiadam, że istnieje wysokiej jakości kod open source do tego:
https://github.com/mcodev31/libmsym
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.
źródło
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.
źródło
Kiedyś napisałem mały skrypt Pythona do wykrywania symetrii grupy punktów dla cząsteczki. Jeśli jesteś zainteresowany, zobacz https://github.com/sunqm/pyscf/blob/master/symm/geom.py
źródło
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.
źródło