Для работы установили переменные в своей рабочей дирректории (H:83):
#запущено на kodomo
export PATH=${PATH}:/home/preps/golovin/progs/bin
export MOPAC_LICENSE=/home/preps/golovin/progs/bin
#запущено на kodomo
obgen porf.smi > porf.mol
Полученный .mol-файл был открыт в PyMol, который запустили в режиме сервера.
from xmlrpclib import ServerProxy
from IPython.display import Image
cmd = ServerProxy(uri="http://localhost:9123/RPC2")
import time
cmd.reinitialize()
cmd.load('porf.mol')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.bg_color('white')
cmd.set('valence','on')
cmd.show('sticks')
cmd.do('''rotate x, 80''')
cmd.ray(600,400)
cmd.png('porf_1.png')
time.sleep(2)
Image(filename='porf_1.png')
Так как атомы структуры не располагаются в одной плоскости, то удалим личшие водороды, используя графический интерфейс, и сохраним в .pdb.
cmd.save('porf.pdb')
С помощью openbabel переформатировали координаты в mol формате во входной файл для Mopac и задали тип параметризации "PM6".
#запуск на kodomo
babel -ipdb porf.pdb -omop 1_porf.mop -xk "PM6"
#запуск на kodomo
MOPAC2009.exe 1_porf.mop
babel -imopout 1_porf.out -opdb 1_porf.pdb
cmd.reinitialize()
cmd.load('1_porf.pdb')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.bg_color('white')
cmd.set('valence','on')
cmd.show('sticks')
cmd.do('''rotate x, 20''')
cmd.ray(500,500)
cmd.png('porf_2.png')
time.sleep(2)
Image(filename='porf_2.png')
Полученная структура получилась "плоская", что нельзя сказать о исходной структуре.
#запуск на kodomo
babel -ipdb porf.pdb -omop 2_porf.mop -xk "AM1"
MOPAC2009.exe 2_porf.mop
babel -imopout 2_porf.out -opdb 2_porf.pdb
cmd.reinitialize()
cmd.load('2_porf.pdb')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.bg_color('white')
cmd.set('valence','on')
cmd.show('sticks')
cmd.do('''rotate x, 30''')
cmd.ray(500,500)
cmd.png('porf_3.png')
time.sleep(2)
Image(filename='porf_3.png')
Как визуально, так и при сравнении файлов, обе структуры не было замечено различий. Полученная с помощью параметризации "AM1" структура тоже является плоской. ####Файлы: - porf.smi; - porf.mol; - porf.pdb; - 1_porf.mop; - 1_porf.out; 1_porf.arc; - 1_porf.pdb; - 2_porf.mop; - 2_porf.out; 2_porf.arc; - 2_porf.pdb;
cis c.i.=4 meci oldgeo some description
И запустили Mopac.
#запуск на kodomo
MOPAC2009.exe 1_porf_spectr.mop
STATE ENERGY (EV) Q.N. SPIN SYMMETRY POLARIZATION ABSOLUTE RELATIVE X Y Z 1+ 0.000000 0.000000 1+ SINGLET ???? 2 1.913701 1.913701 1 TRIPLET ???? 3 2.266042 2.266042 2 SINGLET ???? 4 2.462993 2.462993 2 TRIPLET ???? 5 2.823880 2.823880 3 TRIPLET ???? 6 3.362134 3.362134 4 TRIPLET ???? 7 3.389962 3.389962 3 SINGLET ???? 0.2368 0.0018 0.1994 8 3.669203 3.669203 4 SINGLET ???? 2.0305 0.0250 2.3867 9 3.871010 3.871010 5 SINGLET ???? 1.8232 0.0128 1.5179 The "+" symbol indicates the root used.
Энергия, эВ•c | Длина волны, нм |
1,93701 | 647,877 |
2,266042 | 547,140 |
2,462993 | 503,388 |
2,8238 | 439,0565 |
3,362 | 368,766 |
3,3899 | 365,7394 |
3,669203 | 337,90526 |
3,871010 | 320,289 |
Для молекулы O=C1C=CC(=O)C=C1, а именно хинона, определяли геометрию с помощью obgen:
#запуск на kodomo
echo 'O=C1C=CC(=O)C=C1 quinone' > q.smi
obgen q.smi > q.mol
Полученный из SMILES-файла .mol открыли в PyMol.
import time
cmd.reinitialize()
cmd.load('q.mol')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.set('sphere_scale','0.2')
cmd.bg_color('white')
cmd.show('spheres')
cmd.show('sticks')
cmd.set('valence','on')
cmd.save('q.pdb')
cmd.ray(700,500)
cmd.png('q_1.png')
time.sleep(2)
Image(filename='q_1.png')
#запуск на kodomo
babel -ipdb q.pdb -omop q.mop -xk "PM6"
MOPAC2009.exe q.mop
babel -imopout q.out -opdb q_1.pdb
Получившийся и переформатированный .pdb открыли в PyMol.
cmd.reinitialize()
cmd.load('q_1.pdb')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.set('sphere_scale','0.2')
cmd.bg_color('white')
cmd.show('spheres')
cmd.show('sticks')
cmd.set('valence','on')
cmd.ray(700,500)
cmd.png('q_2.png')
time.sleep(2)
Image(filename='q_2.png')
Нетрудно заметить, что при оптимизации MOPAC произошло удлинение связи СС(=О)С.
Для определения геометрии дианиона хинона добавили в первую строчку .mop строку "CHARGE=-2". Потом явным способом указали, на каких атомах должен находится отрицательный заряд, в результате получился .mop. Далее провели опримизацию с помощью Mopac и переформатировали из .out в .pdb, который открыли в PyMol.
#запуск на kodomo
MOPAC2009.exe q_ani.mop
babel -imopout q_ani.out -opdb q_ani.pdb
cmd.reinitialize()
cmd.load('q_ani.pdb')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.set('sphere_scale','0.2')
cmd.bg_color('white')
cmd.show('spheres')
cmd.show('sticks')
cmd.set('valence','on')
cmd.ray(700,500)
cmd.png('q_ani.png')
time.sleep(2)
Image(filename='q_ani.png')
Как и в случае незаряженной молекулы структура тоже плоская, однако наблюдается удлинение связей C=O.
При облучении ультрафиолетом тимины превращаются в тиминовые димеры, так же известно, что ДНК фотолиаза при облучении ультрафиолетом востановливает основания тиминов до нормального. Для вычисления возбуждения тиминовых димеров Mopac использовать затруднительно, тогда сымитируем возбуждение, добавляя положительный заряд обоим "кольцам" (то есть заряд системы станет +2). А затем полученое возбуждённое состояние снова оптимизируем при заряде 0.
#запуск на kodomo
babel -ipdb td.pdb -omop td_1.mop -xk "PM6"
MOPAC2009.exe td_1.mop
babel -imopout td_1.out -opdb td_1.pdb
#запуск на kodomo
babel -ipdb td_1.pdb -omop td_2.mop -xk "PM6"
#дописываем заряд системе ' PM6 CHARGE=+2'
MOPAC2009.exe td_2.mop
babel -imopout td_2.out -opdb td_2.pdb
#запуск на kodomo
babel -ipdb td_2.pdb -omop td_3.mop -xk "PM6"
#снимаем заряд
MOPAC2009.exe td_3.mop
babel -imopout td_3.out -opdb td_3.pdb
Получившийся и переформатированные .pbd открыли в PyMol.
import time
cmd.reinitialize()
cmd.load('td_1.pdb')
cmd.set("opaque_background", 'off')
cmd.set("ray_trace_mode","1")
cmd.set('antialias','2')
cmd.set('stick_radius','0.1')
cmd.bg_color('white')
cmd.set('valence','on')
cmd.show('sticks')
cmd.center('td_1')
cmd.do('''rotate y, -60''')
cmd.ray(600,600)
cmd.png('td_1.png')
time.sleep(2)
Image(filename='td_1.png')
cmd.hide('everything','td_1')
cmd.load('td_2.pdb')
cmd.do('''rotate y, 60''')
cmd.ray(600,600)
cmd.png('td_2.png')
time.sleep(2)
Image(filename='td_2.png')
cmd.hide('everything','td_2')
cmd.load('td_3.pdb')
cmd.do('''rotate y, 60''')
cmd.ray(600,600)
cmd.png('td_3.png')
time.sleep(2)
Image(filename='td_3.png')
Как видно при добавлении заряда системе мы наблюдаем перевод от тиминого димера до двух несвязанных между собой тиминов. Энергии каждой стадии равны -3273.58217 эВ, -3253.90834 эВ, -3273.69661 эВ. Так как энергия состояния свободных тиминов меньше, чем состояния димера, то обратного самопроизвольного перехода тиминов в димер не происходит.