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.
Diberikan molekul yang disimpan dalam beberapa format data yang mudah (* .pdb, * .mol, dll.), Bagaimana Anda secara algoritmik menentukan grup simetri molekul?
Jawaban:
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.2 2
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.)C2 180∘
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 rupaA
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.x⃗ saya x⃗ j x⃗ c SEBUAH
Pemikiran lain adalah menggunakan matriks momentum sudut sebagai generator rotasi
di mana n ∈ R 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.⃗ = ( Lx, 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.180∘ 60∘
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.SEBUAH 180∘
Sunting - Terjemahan : Ada satu komplikasi lain yang diabaikan oleh diskusi di atas tentang simetri lokal: terjemahan. Secara formal, operasi simetri yang benar adalah
di mana dan → x k , seperti di atas, dan → t adalah terjemahan yang berubah-ubah. Dalam kristal symmorphic,SEBUAH x⃗ k t⃗
sumber
Ada kode lama untuk tujuan yang digunakan dalam beberapa paket, yang disebut SYMMOL. Algoritma yang digunakannya dijelaskan dalam makalah berikut:
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 .
sumber
Saya senang menjawab bahwa ada kode sumber terbuka berkualitas tinggi untuk ini:
https://github.com/mcodev31/libmsym
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.
sumber
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.
sumber
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
sumber
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.
sumber