Bagaimana cara menentukan kelompok titik molekul?

17

Anda akhirnya berhasil mengetahui bagaimana atom diatur secara spasial pada entitas molekuler Anda yang baru ditemukan. Melalui, katakanlah, sarana spektroskopi, Anda sekarang memiliki banyak koordinat atom, tipe atom, panjang ikatan, jenis ikatan, dan yang lainnya untuk molekul Anda. Anda sekarang tertarik untuk menentukan kelompok titik (grup simetri) dari molekul Anda.

Untuk molekul sederhana seperti metana ( ) atau benzena ( ), itu adalah masalah sederhana inspeksi visual untuk menentukan grup jalur di mana molekul milik. Namun, ini tidak begitu layak ketika molekulnya sedikit di sisi besar.TdD6h

Diberikan molekul yang disimpan dalam beberapa format data yang mudah (* .pdb, * .mol, dll.), Bagaimana Anda secara algoritmik menentukan grup simetri molekul?

JM
sumber
3
Untuk apa nilainya, VMD menyertakan plugin untuk tujuan ini yang disebut SymmetryTool .
Juan M. Bello-Rivas

Jawaban:

12

Pengalaman utama saya adalah dengan struktur kristal, dan hanya ada sejumlah simetri titik yang muncul dalam kristal. Jadi, algoritma yang saya gunakan sedikit berbeda dari apa yang Anda gunakan dalam suatu molekul. Tetapi, tidak mungkin dengan molekul besar bahwa simetri kontinu akan muncul, seperti simetri aksial dalam H 2 atau CO 2 , sehingga metode harus tumpang tindih dengan cukup baik. Ketika menentukan simetri dalam suatu sistem, ada dua simetri yang berbeda, tetapi terkait, untuk dipertimbangkan: lokal dan global.22

Simetri Lokal

Simetri lokal adalah simetri lingkungan lokal di sekitar titik tertentu. Secara khusus, simetri pada setiap lokasi atom menentukan pemisahan atom lokal dan sampai batas tertentu lingkungan kimia, dan merupakan subkelompok dari simetri global. Misalnya, dalam benzena simetri lokal terdiri dari dua pesawat refleksi dan sumbu ( 180 simetri rotasi). (Jelas, hanya dua operasi yang diperlukan untuk menghasilkan seluruh grup titik lokal.)C2180

masukkan deskripsi gambar di sini

Dari perspektif algoritmik, apa yang telah kami lakukan adalah pertama-tama menemukan tetangga terdekat dari atom target, dan kemudian menyebutkan semua cara yang dapat kami lakukan untuk memutar lingkungan itu tentang atom pusat dan membuatnya tetap sama. Lebih matematis, ia memecahkan semua matriks ortogonal, , sedemikian rupaSEBUAH

SEBUAH(xsaya-xc)=xj-xc

di mana dan x j adalah posisi atom dari spesies yang sama dan x c adalah posisi atom pusat, atau target,. Tapi, saya akan melihat bentuk-bentuk yang lebih sederhana dulu, seperti ada atau tidaknya bidang pantulan, sebelum mencoba menyelesaikan untuk A secara umum. xsayaxjxcSEBUAH

Pemikiran lain adalah menggunakan matriks momentum sudut sebagai generator rotasi

SEBUAH=exp(sayaϕn^L.)

di mana nR 3 adalah vektor satuan tentang yang rotasi dengan sudut φ dilakukan, dan L = ( L x , L y , L z ) adalah vektor dari tiga matriks momentum sudut dimensi. A hanya akan memiliki 3 yang tidak diketahui.n^R3ϕL.=(L.x, L.y, L.z)SEBUAH

Simetri Global

Di mana simetri lokal menentukan lingkungan di sekitar atom tunggal, simetri global menentukan bagaimana atom saling bertukar. Langkah pertama dalam menentukan simetri global adalah menentukan atom setara. Pertama, tentukan jenis dan arah relatif ke tetangga terdekat (dan kedua terdekat, atau lebih tinggi, jika diinginkan) atom. Dua atom kemudian setara, jika tetangganya memiliki pengaturan tata ruang yang sama. Ini mudah untuk dihitung.

Langkah kedua kira-kira sama dengan yang ditemukan dalam kasus simetri lokal, kecuali bahwa pusat massa molekul kemungkinan pusat simetri. Pada titik ini, jika simetri lokal telah ditentukan, hanya beberapa operasi unik mungkin perlu ditemukan untuk menghasilkan seluruh grup. Misalnya, dalam struktur kristal B20 , setiap atom memiliki lokal simetriC3 , dan kelompok poin penuh yang dihasilkan oleh termasuk 2 kali lipat ( rotasi) sumbu sekrup yang mengubah satu atom ke lain. Dalam benzena, dua operasi diperlukan: rotasi 6 kali lipat ( 60 ) melalui sumbu pusat dan bidang pantulan membagi dua ikatan.18060

Sunting : Untuk struktur B20, Anda dapat menggunakan dua sumbu , sebagai gantinya, untuk menghasilkan grup lengkap. Ini akan memungkinkan Anda untuk menghindari harus mencari cara untuk secara otomatis menentukan sumbu sekrup.C3

Perhatian : Perhatian untuk menggunakan ide-ide di bagian simetri lokal di bagian global, untuk menjadi operasi simetri, lingkungan juga harus ditransformasikan. Jadi, jika Anda menemukan , dari atas, itu hanya akan memberikan simetri kandidat karena transformasi mungkin tidak sama mengubah lingkungan secara tepat, dan pemeriksaan lebih lanjut diperlukan. Misalnya, jika cincin benzena memiliki atom hidrogen yang menjulur dari bidang cincin di satu sisi, maka bidang pantulan yang membagi ikatan karbon-karbon akan baik-baik saja, tetapi rotasi 180 similar dengan cara yang sama membagi dua ikatan tidak akan terjadi karena itu akan tidak mereproduksi lingkungan lokal.SEBUAH180

Sunting - Terjemahan : Ada satu komplikasi lain yang diabaikan oleh diskusi di atas tentang simetri lokal: terjemahan. Secara formal, operasi simetri yang benar adalah

SEBUAH(xsaya-xc)+t=xj-xc

di mana dan x k , seperti di atas, dan t adalah terjemahan yang berubah-ubah. Dalam kristal symmorphic,SEBUAHxkt

t=n1Sebuah1+n2Sebuah2+n3Sebuah3

SebuahsayansayaZt

rcollyer
sumber
1
@ JM, saya menambahkan hati-hati dalam menggunakan ide-ide dalam kasus simetri lokal secara membabi buta dalam kasus global. Dalam kasus global, ada striktur tambahan bahwa lingkungan lokal juga harus ditransformasikan oleh operasi simetri, dan saya pikir saya tidak menjelaskannya.
rcollyer
@ JP, saya lupa menyertakan diskusi tentang terjemahan dan efeknya pada operasi simetri. Saya telah memasukkan addendum singkat.
rcollyer
Saya melihat. Saya selalu berpikir algoritma untuk melakukan ini entah bagaimana akan menempatkan molekul atau kristal ke dalam "orientasi standar" (apa pun artinya) sebelum memeriksa tetangga dan semacamnya.
JM
1
@ JM, untuk kristal, ada dua "orientasi standar:" kisi kristal dan kisi primitif, dan mereka mungkin tidak sama, seperti dalam sistem kubik berpusat pada wajah . Untuk sebuah molekul, saya mungkin akan menggunakan pusat massa sebagai asal, dan kemudian mendiagonalisasi momen tensor inersia untuk "meluruskan" dengan benar. Itu tidak akan, bagaimanapun, menghilangkan kebutuhan untuk beberapa pusat rotasi, jika operasi simetri yang lebih umum diperlukan, seperti sumbu sekrup dalam kristal.
rcollyer
10

Ada kode lama untuk tujuan yang digunakan dalam beberapa paket, yang disebut SYMMOL. Algoritma yang digunakannya dijelaskan dalam makalah berikut:

T. Pilati dan A. Forni, "SYMMOL: program untuk menemukan kelompok simetri maksimum dalam gugus atom, diberi toleransi yang diawali" , J. Appl. Cryst. 1998. 31, 503-504.

Pada dasarnya, ini menentukan pusat inersia, kemudian menerapkan operasi simetri yang mungkin dan upaya untuk menentukan apakah vektor transformasi ada untuk memetakan geometri yang dioperasikan ke aslinya dalam toleransi yang diberikan. Kode itu sendiri tidak lagi tersedia dari situs penulis, tetapi tersedia (dengan contoh file input) di sini .

Aesin
sumber
3

Saya senang menjawab bahwa ada kode sumber terbuka berkualitas tinggi untuk ini:

https://github.com/mcodev31/libmsym

libmsym adalah perpustakaan C yang berurusan dengan simetri kelompok titik dalam molekul. Ini dapat menentukan, mensimetriasikan, dan menghasilkan molekul dari setiap kelompok titik. Hal ini juga dapat menghasilkan kombinasi linear orbital atom yang disesuaikan secara simetri untuk himpunan bagian dari semua kelompok titik dan momentum sudut orbital (l), dan memproyeksikan orbital ke dalam representasi yang tidak dapat direduksi dengan komponen gambut.

Saya telah mengadaptasi libmysm ke dalam Avogadro dan sebuah rilis akan keluar kemudian pada bulan Agustus 2015.

Saya percaya penulis saat ini sedang mengerjakan menyelesaikan naskah tentang detailnya. Saya akan merevisi jawaban ini ketika dipublikasikan.

Geoff Hutchison
sumber
1

Jika Anda masih tertarik dengan ini, saya memiliki skrip python yang akan memberi Anda grup poin (Abelian) (dan secara simetris tidak redundan) dari molekul mana pun dalam toleransi tertentu.

Perbedaan antara rutinitas saya dan banyak hal lain yang pernah saya lihat tersedia adalah bahwa orientasi awal tidak penting, sehingga berguna untuk dijalankan dalam hasil optimasi geometri di mana Anda belum menentukan grup titik awal (seperti sering, membuat asumsi seperti ini dapat membatasi geometri, memaksanya menjadi simetris dan memberikan keadaan dasar yang tidak seimbang.)

Jika Anda masih tertarik, beri tahu saya, saya akan membagikannya di sini.

akan
sumber
Saya pasti akan tertarik dengan skrip ini. Apakah Anda bersedia menjadikannya open source (mis., Melalui GitHub?)
Geoff Hutchison
@ GeoffHutchison Saya akan bermain-main dengannya, karena itu ada di dalam program yang lebih besar (saat ini adalah bagian dari program yang menjalankan molpro secara otomatis untuk mencoba dan meminimalkan geometri, dan kemudian mengekstrak geometri yang dihasilkan dan mengarahkannya). Cukup sederhana untuk mengekstraknya dan membersihkannya sedikit.
akan
Terima kasih. Saya akan senang membersihkannya sesuai kebutuhan. Pasti ada permintaan untuk alat semacam ini.
Geoff Hutchison
1

Saya pernah menulis skrip Python kecil untuk mendeteksi simetri kelompok titik untuk molekul. Jika Anda tertarik, silakan lihat https://github.com/sunqm/pyscf/blob/master/symm/geom.py

osirpt
sumber
1
Tampaknya OP lebih tertarik pada pendekatan daripada sekadar kode. Akan sangat membantu jika Anda dapat menggambarkan pendekatan Anda secara lebih rinci.
Paul
Tautan mati. Mungkin memasang tautan ke bangunan khusus di github, alih-alih master saat ini
Erik Kjellgren
0

Ada beberapa paket perangkat lunak, seperti Material Studio, yang dapat secara otomatis mengidentifikasi kelompok titik molekul untuk Anda. Namun, jika Anda ingin mengetahuinya sendiri, ada diagram alur yang bagus yang akan memandu Anda melalui prosesnya. Anda juga dapat melihat situs web simetri Otterbein untuk beberapa tutorial dan demo interaktif.

Max Radin
sumber